Image
Create and poll adult image tasks at 2K or 4K, text-only or with up to 9 reference images. Flat $0.05 per image, callbacks and automatic refunds.
Image generation shares the authentication, task routes, uploads, callbacks and errors documented in the Overview.
Create an image task
Create a flat-priced image task. The price is reserved from your balance.
POST /api/v3/images/generations/tasks
The content shape is the same as for video: exactly one text prompt, plus up to nine optional image_url reference images. A text-only prompt is allowed.
curl -s -X POST "$NURETA_URL/api/v3/images/generations/tasks" \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seahorse-image",
"content": [
{"type": "text", "text": "a clean studio product shot of the sneaker on marble"},
{"type": "image_url", "image_url": {"url": "https://example.com/ref.jpg"}}
],
"size": "2K",
"callback_url": "https://example.com/webhooks/nureta-developer"
}'
# => HTTP 201 with the task view (see Retrieve an image task)Fields
| Field | Required | Notes |
|---|---|---|
model | yes | seahorse-image (see Image models & pricing). |
content | yes | Non-empty array. Include exactly one text item (the prompt). |
content[].type | yes | text or image_url. |
image_url.url | for image_url | HTTPS/HTTP reference image URL. Use your own hosted URL, or the assetUrl returned by Upload a reference image. Up to 9 image items, all optional (a text-only prompt is allowed). |
size | no | Default 2K (omitted or null gives the default). Allowed: 2K, 4K. |
callback_url | no | HTTPS endpoint to POST the terminal task view to. See Callback webhook. |
callback_secret | no | 8–256 character shared secret used to sign the callback body. Requires callback_url. |
Reference images use the same Upload a reference image flow as video.
Response
201 with the task view. On success the task carries content.image_url.
Errors
| Code | HTTP | When |
|---|---|---|
InvalidParameter | 400 | A field is missing or invalid. |
AccountOverdueError | 403 | Your balance cannot cover the task. |
MediaNotOwned | 403 | A reference image URL was uploaded or generated by another account. |
media_expired | 410 | A reference image is an upload of yours that was deleted (see Media links are private). Upload it again. |
ModelNotFound | 404 | Unknown model id. |
All codes are in Errors.
Retrieve an image task
Poll one image task until status is succeeded or failed.
GET /api/v3/images/generations/tasks/:id
curl -s "$NURETA_URL/api/v3/images/generations/tasks/cgt-..." \
-H "Authorization: Bearer sk-..."
# => {"id": "cgt-...", "model": "seahorse-image", "status": "succeeded", "size": "2K",
# "created_at": 1781220000, "updated_at": 1781220060,
# "prompt": "a clean studio product shot of the sneaker on marble",
# "media": [{"url": "https://example.com/ref.jpg", "type": "Image"}],
# "usage": {"price_usd": 0.05, "refunded": false},
# "step": {"code": "done"},
# "content": {"image_url": "https://...signed.../out.png"}}Response
The task view. On success it carries content.image_url. On failure it carries an error, and a refund is issued automatically.
| Field | Notes |
|---|---|
id, model, status | Task id, model id and status (queued, running, succeeded or failed). |
size | The image size. |
prompt, media | Your inputs: the text prompt and the reference images as [{url, type}]. |
created_at, updated_at | Unix timestamps in seconds. |
usage | price_usd charged and whether it was refunded. |
step | The current phase, e.g. {"code": "queued"}. It is {"code": "done"} on success and {"code": "failed"} on failure. |
content.image_url | Only on success: a signed link to the image. It is valid for 7 days, but the service reuses one signed link for up to 24 hours. So a link you receive can have about 6 days left, and a re-fetch within 24 hours can return the same link. |
error | Only on failure: {"code", "message"} (see task errors). |
Errors
| Code | HTTP | When |
|---|---|---|
NotFound | 404 | Unknown task id, or a task of another kind. |
List image tasks
List your image tasks, newest first.
GET /api/v3/images/generations/tasks?limit=20&offset=0
curl -s "$NURETA_URL/api/v3/images/generations/tasks?limit=20&offset=0" \
-H "Authorization: Bearer sk-..."
# => {"items": [task, ...], "total": N}| Query parameter | Notes |
|---|---|
limit | 1–100 (default 20). |
offset | The number of tasks to skip. |
Response
{"items": [task, ...], "total": N}. Each item has the task view shape.
Errors
The shared codes in Errors.
Delete an image task
Delete a finished task (succeeded or failed).
DELETE /api/v3/images/generations/tasks/:id
curl -s -X DELETE "$NURETA_URL/api/v3/images/generations/tasks/cgt-..." \
-H "Authorization: Bearer sk-..."
# => {}Response
200 {}.
Errors
| Code | HTTP | When |
|---|---|---|
NotFound | 404 | Unknown task id, or a task of another kind. |
Conflict | 409 | The task is not finished. |
RateLimitExceeded | 429 | Your account already deleted 10 tasks in the last 60 seconds. Deletions on the website count too. |
Image models & pricing
GET /api/v3/images/models (public) returns the image model with its per-image price and allowed sizes. Images are flat-priced: one image, one charge, no duration.
| Model | Sizes | USD / image |
|---|---|---|
seahorse-image | 2K, 4K | $0.05 |
Guides
Video
Create and poll adult video tasks: text-to-video, image-to-video, 5-180 s, 480p-1080p, storyboard segments, explicit flag, edit mode and prices.
Script
Turn a one-line idea into a structured adult storyboard: title, characters, per-scene setting, beat and duration. Flat $0.01 per script, no render.