Image generation
Create images with POST /v1/images/generations (OpenAI format), synchronously or as a job you check later. Images are kept for 7 days.
The gateway creates images at https://ai.helipod.io/v1/images/generations in the OpenAI images format, with the same key, AI balance and limits as the chat endpoints.
Images are kept for 7 days
Every image is stored for 7 days and then deleted for good, together with its link. Every answer tells you the exact date in expires_at. Download the images you want to keep.
/v1/images/generations/v1/images/generations/v1/images/generations/{id}async requests, or ones that took longer than the wait.Request
Prop
Type
Examples
curl https://ai.helipod.io/v1/images/generations \
-H "Authorization: Bearer hel_ai_your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-image-v5.0-flash",
"prompt": "A small wooden boat on a calm lake at sunrise, watercolor"
}'Response
{
"id": "req_6f1c…",
"object": "image.generation",
"model": "seedream-image-v5.0-flash",
"status": "succeeded",
"created": 1792587700,
"expires_at": 1793192500,
"data": [
{ "url": "https://ai.helipod.io/v1/images/files/req_6f1c…_0-jpg?e=1793192500&s=…" }
],
"usage": { "images": 1, "total_tokens": 11250 },
"notice": "Images are kept for 7 days and deleted on 2026-10-28 (UTC). Download the ones you want to keep."
}data[].urlis a link onai.helipod.io. It needs no key, so it works in an<img>tag or a browser, and it stops working atexpires_at.- With
"response_format": "b64_json"each item is{ "b64_json": "…" }instead. The image is still stored for 7 days andGET /v1/images/generations/{id}gives links to it. usage.total_tokensis what you are billed for (see Pricing).- The
x-request-idheader is the same id asid.
Waiting, 202 and checking later
Most images take 5 to 40 seconds. The request waits for the result up to about 80 seconds. If the image is not ready by then, or you sent "async": true, the answer is 202 with the id:
{ "id": "req_6f1c…", "object": "image.generation", "model": "kling-image-v3", "status": "processing", "created": 1792587700 }The image keeps being made. Ask for it every few seconds:
curl https://ai.helipod.io/v1/images/generations/req_6f1c… -H "Authorization: Bearer hel_ai_your_key"status | Meaning |
|---|---|
processing | Not ready yet. |
succeeded | The full response above, with fresh links. |
failed | error.code and error.message say why. You were not charged. |
To list this project's requests of the last 7 days (newest first, with prompt, size and fresh links), call GET /v1/images/generations?limit=20 and page back with &before=<last_id> while has_more is true.
A request can only be read with a key of the same account. After the 7 days it answers 410 expired.
Models and sizes
| Model | Sizes | Tokens per image | About |
|---|---|---|---|
seedream-image-v5.0-flash | 2048x2048 | 11,250 | Rp 320 |
wand-vega-image-lite | 1024x1024 | 13,500 | Rp 385 |
hy-image-v3.5-preview | 1024x1024, 1024x768, 768x1024, 1280x768, 768x1280 | 15,000 | Rp 427 |
kling-image-v3 | 1024x1024, up to 4 per request | 17,500 | Rp 498 |
kling-image-o1 | 1024x1024, up to 4 per request | 17,500 | Rp 498 |
kling-image-v3-omni | 1024x1024 | 17,500 | Rp 498 |
vidu-image-q2 | 1920x1080 | 18,750 | Rp 534 |
hy-image-v3 | 1024x1024 | 20,000 | Rp 570 |
seedream-image-v5.0-lite | 2048x2048 | 21,875 | Rp 623 |
seedream-image-v5.0-pro | 1536x1536 / 2048x2048 | 28,125 / 56,250 | Rp 801 / Rp 1,602 |
wand-vega-image-flash | 1408x768 | 37,687 | Rp 1,073 |
wand-vega-image-1.5-pro | 1024x1024 | 41,875 | Rp 1,193 |
wand-vega-image-pro | 1024x1024 | 80,156 | Rp 2,283 |
Reference images (images) work on Seedream (up to 4), Kling Image 3 and O1 (1), Kling Image 3 Omni (4), Vidu Image Q2 (3) and Vega Image 1.5 Pro (4, about 9,625 tokens each). Image models are not listed by GET /v1/models, which lists chat models.
Pricing
Images are billed by tokens, like text: usage.total_tokens × the model's price per 1M tokens. The table shows the usual count and the price at today's rate; the count in usage is the one you pay. Before the request starts, the gateway holds about 1.25 × the usual price from your AI balance and settles to the real amount when the images are delivered.
You pay nothing when no image is delivered: the model refused the prompt, the provider failed, or the image could not be saved. A free usage row still appears in your history so you can see the attempt.
Images are kept for 7 days
- Every image is stored on Helipod for 7 days, then deleted together with its link. This cannot be extended.
expires_at(Unix seconds) andnoticein every answer give the exact date. Image links also send anx-helipod-expires-atheader.- Save what you want to keep, for example right after the request:
curl -o boat.jpg "https://ai.helipod.io/v1/images/files/req_6f1c…_0-jpg?e=…&s=…"Errors
Errors use the OpenAI error shape, as on the other endpoints (Limits and errors). Specific to images:
| Status | code | Meaning |
|---|---|---|
| 400 | invalid_size | The size is not one of the model's sizes. The message lists them. |
| 400 | invalid_n | n is more than the model makes per request. |
| 400 | unsupported_model | A chat model on this endpoint, or an image model on a chat endpoint. |
| 400 | unsupported_parameter | Reference images on a model that does not take them. |
| 402 | insufficient_balance | Not enough AI balance for the hold. |
| 410 | expired | The images were deleted after 7 days. |
| 422 / 502 | various | The model refused the prompt or the provider failed. Not charged. |
| 504 | upstream_timeout | No image within 10 minutes. Not charged. |