Free image API
Quick start
curl https://seinari.ai/v1/generate \
-H 'Content-Type: application/json' \
-d '{"prompt": "a lighthouse on a cliff at sunset, oil painting", "rewrite": false}'
The answer is JSON with the picture in it, base64-encoded:
{"model":"fast","rewrite":false,"seed":1180428871,"size":512,"type":"image/jpeg",
"gpu_ms":465.2,"ms":688.0,"image":"/9j/4AAQSkZJRgABAQ…"}
Or get the picture itself:
curl https://seinari.ai/v1/generate -H 'Accept: image/jpeg' \
-d '{"prompt": "a red fox in fresh snow", "seed": 7}' -o fox.jpg
A plain link works too, so you can put it straight in an <img> tag:
https://seinari.ai/v1/generate?prompt=a+red+fox+in+fresh+snow&seed=7
Models
| Model | Underlying model | Size |
|---|---|---|
fast | FLUX.2 Klein 4B | 512×512 |
quality | FLUX 3 Klein (Klein 3) | 1024×1024 |
POST /v1/generate
| Field | Meaning |
|---|---|
prompt | What to draw, 1 to 400 characters. Required. |
seed | A whole number from 0 to 2147483647. Repeats the drawing request, but different cards or runtime updates can change the picture. Leave it out for a new random seed. |
model | Which model draws it: fast (the default) or quality. /v1/models lists them. |
size | Optional; each model draws one size (512 for fast, 1024 for quality). |
rewrite | Quality always expands the prompt before drawing; it has no rewrite opt-out. Fast draws your original prompt. /v1/models identifies rewritten models. |
format | "json" (the default for POST) or "image" (the default for GET, and for requests that send Accept: image/jpeg). |
GET /v1/generate?prompt=…&seed=…&model=… takes the same fields as a query string.
Picture answers carry the same facts as headers: X-Seed, X-Model, X-Rewrite and X-GPU-Ms. CORS is open, so it works from any web page.
Nothing is kept
Every picture is drawn for your request, sent to you, and forgotten. Our service does not save prompts or pictures; answers are marked Cache-Control: no-store. If you want to keep a picture, save it when it arrives.
Errors
| Code | Meaning |
|---|---|
400 | Something in the request is wrong; error says what. |
429 | Shared capacity is busy: the fleet rejects new work when expected queue wait exceeds 4 seconds or 512 jobs are waiting. The API also caps its own in-flight requests at 256. These are capacity limits, not per-user quotas. Wait Retry-After seconds before retrying. |
503 | No serving capacity is available, or Quality or the fallback is not ready. Wait Retry-After seconds before retrying. |
At 116 images per second, Fast measured 415 ms client p50 from Helsinki to the North American fleet; router p50 was 136 ms.
gpu_ms is the worker generation wall time in milliseconds, including text encoding and CPU work; it is not a GPU-only measurement.
Pictures drawn through the API count toward the live counter on seinari.ai. The counter keeps only the number of pictures and their worker generation time.