Files
dashback/docs/api/routes/serper/images.md
2026-10-05 14:54:23 +02:00

63 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# `POST /serper/images`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Search images via Serper.dev and stream WebP thumbnails (SSE)
Queries Google Image search via `https://google.serper.dev/images` using the
company setting `keys.serper`, and streams the
results via Server-Sent Events (`text/event-stream`).
1. First emits an `images` event with the full search result list (including `imageUrl`).
2. Then streams `thumb` events with WebP base64 thumbnails (max 200×200) as they are generated.
3. Emits `done` when all thumbnails have completed (or `error` on failure).
## Body (JSON)
| Field | Required | Type | Description |
|-------|----------|------|-------------|
| `q` | yes | string | Image search query (e.g. "Purize logo") |
| `gl` | no | string | Country code |
| `hl` | no | string | Language code |
| `num` | no | integer | Number of search results to fetch |
| `preferSource` | no | boolean | Whether to prefer downloading from the full imageUrl before falling back to Google thumbnailUrl |
```json
{
"q": "Purize logo",
"gl": "de",
"hl": "de",
"num": 100
}
```
## SSE Events
The response is a `text/event-stream`. Events are emitted in order until the stream closes.
| Event | Description | Payload |
|-------|-------------|---------|
| `images` | First event; list of search result images with id, url, width, and height | `{ "images": [ { "id": 0, "url": "…", "width": 1000, "height": 800 } ] }` |
| `thumb` | Emitted for each image as its 200×200 max WebP thumbnail is generated | `{ "id": 0, "dataUrl": "data:image/webp;base64,…" }` |
| `done` | Emitted after all thumbnails have finished streaming; closes the SSE stream | `{ "total": 100 }` |
| `error` | Emitted when an error occurs during Serper request or processing | `{ "error": "…" }` |
## Response `200`
`text/event-stream` — emits `images`, `thumb`, `done` (and `error` on failure).
## Errors
| Status | Description |
|--------|-------------|
| 400 | Query missing, invalid input, or Serper API key not configured — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
| 403 | Not authorized — `{"error":"…"}` |
| 404 | Company not found — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._