HelipodDocs

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.

POST/v1/images/generations
Create one or more images. Charged to your AI balance only when the images are delivered.
GET/v1/images/generations
This project's image requests of the last 7 days, newest first, with fresh links.
GET/v1/images/generations/{id}
The status and result of a request: for 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[].url is a link on ai.helipod.io. It needs no key, so it works in an <img> tag or a browser, and it stops working at expires_at.
  • With "response_format": "b64_json" each item is { "b64_json": "…" } instead. The image is still stored for 7 days and GET /v1/images/generations/{id} gives links to it.
  • usage.total_tokens is what you are billed for (see Pricing).
  • The x-request-id header is the same id as id.

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"
statusMeaning
processingNot ready yet.
succeededThe full response above, with fresh links.
failederror.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

ModelSizesTokens per imageAbout
seedream-image-v5.0-flash2048x204811,250Rp 320
wand-vega-image-lite1024x102413,500Rp 385
hy-image-v3.5-preview1024x1024, 1024x768, 768x1024, 1280x768, 768x128015,000Rp 427
kling-image-v31024x1024, up to 4 per request17,500Rp 498
kling-image-o11024x1024, up to 4 per request17,500Rp 498
kling-image-v3-omni1024x102417,500Rp 498
vidu-image-q21920x108018,750Rp 534
hy-image-v31024x102420,000Rp 570
seedream-image-v5.0-lite2048x204821,875Rp 623
seedream-image-v5.0-pro1536x1536 / 2048x204828,125 / 56,250Rp 801 / Rp 1,602
wand-vega-image-flash1408x76837,687Rp 1,073
wand-vega-image-1.5-pro1024x102441,875Rp 1,193
wand-vega-image-pro1024x102480,156Rp 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) and notice in every answer give the exact date. Image links also send an x-helipod-expires-at header.
  • 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:

StatuscodeMeaning
400invalid_sizeThe size is not one of the model's sizes. The message lists them.
400invalid_nn is more than the model makes per request.
400unsupported_modelA chat model on this endpoint, or an image model on a chat endpoint.
400unsupported_parameterReference images on a model that does not take them.
402insufficient_balanceNot enough AI balance for the hold.
410expiredThe images were deleted after 7 days.
422 / 502variousThe model refused the prompt or the provider failed. Not charged.
504upstream_timeoutNo image within 10 minutes. Not charged.

On this page