Create Task
https://api.hiapi.ai /v1/tasks Submit a generation task. You get a taskId back right away while the model keeps working in the background — then poll Get Task Detail or wait for the callback to fetch the result.
Headers
Section titled “Headers”Authorization Bearer YOUR_API_KEY required Account API key. Required on every request.
Content-Type application/json optional Optional. The body is always parsed as JSON; if sent, only application/json is accepted (charset is fine) — anything else returns 415.
Idempotency-Key order-42-submit optional Optional. Idempotency key, up to 255 bytes. Retries with the same key under the same account create the task only once; replays return the original taskId.
The full rules for these headers (authentication scope, content type, idempotency scenarios) are documented in the Unified Async API Introduction.
Request body
Section titled “Request body”model string required The model you want to run. Exact model IDs are listed in the model catalog at https://www.hiapi.ai/docs/models.json, which is also what the model pages are generated from.
route string optional Model route (e.g. beta, ext) for models that expose multiple routes with different pricing or capacity. See the model routes section below.
input object required The model's business parameters; fields are defined per model.
callback object optional Terminal-notification config; omit to skip callbacks and poll yourself. See the callback section below.
url string required Required when callback is present; HiAPI POSTs here when terminal. Must be a valid http(s) URL.
when string optional Currently only final — both success and fail fire a callback.
storage string optional Output storage tier: temp (default, kept ~7 days) or persistent (kept long-term, billed by size). Insufficient balance or exceeding your storage cap silently downgrades to temp; the actual tier is reflected on the task detail response.
Model routes (route)
Section titled “Model routes (route)”Some models expose multiple routes (e.g. beta, ext) with different pricing or capacity. Select one with the optional top-level route parameter — the preferred spelling over the legacy @ suffix:
{ "model": "gpt-image-2/text-to-image", "route": "ext", "input": { ... } }Routes published in the model catalog:
| Model | Available routes |
|---|---|
gpt-image-2/text-to-image | default, beta, ext |
gpt-image-2/image-to-image | default, ext |
seedance-2.0 | default, ext |
gpt-image-2.5-flare/text-to-image | default |
gpt-image-2.5-flare/image-to-image | default |
gpt-image-2.5-sunburst/text-to-image | default |
gpt-image-2.5-sunburst/image-to-image | default |
- The 2.5 series registers capability-specific models on the default route, plus a
proroute under the family name: send modelgpt-image-2.5-flarewithroute: "pro". The bare family name without a capability suffix and withoutrouteis not a registered model and fails with400 - Passing model
gpt-image-2/text-to-imagewithroute: "ext"selects theextroute - Omitting
route, or sending""/null/"default", all mean the model’s default route - An unknown route fails fast with
400 INVALID_REQUESTwhose message lists the available routes - On the task detail, a task submitted with
routeechoes the field back andmodelholds the resolved full name; theroutevalue participates in the idempotency hash, so the sameIdempotency-Keywith a differentroutereturns422
The authoritative list of exact model IDs and their routes is models.json, the same catalog the model pages are generated from.
Success response (HTTP 200)
Section titled “Success response (HTTP 200)”{ "code": 200, "message": "success", "data": { "taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR" }}taskIdlooks liketk-hiapi-+ 26 chars, 35 chars total.- Returned as soon as the task is created — generation continues in the background.
Failure response
Section titled “Failure response”{ "code": 400, "message": "invalid request", "data": null, "error_code": "INVALID_REQUEST"}code is the HTTP status; error_code is the business error code (enum under status information). Common synchronous failures: invalid body (400), insufficient balance (402), non-JSON Content-Type (415). When the platform is temporarily unavailable it may return HTTP 503 — retry later with backoff.
Callbacks (Webhook)
Section titled “Callbacks (Webhook)”Provide callback.url when creating a task and HiAPI notifies you with a POST on terminal state — no polling needed. Request format, signature verification, delivery retries and idempotency: see Callbacks in the introduction.