SEEAPISEEAPI
Developer CenterDocs
Get API Key
  • Getting Started
  • Authentication
  • List Model Prices
  • Create a Generation
  • Get Task Details
Image Models
Alibaba
Black Forest Labs
ByteDance
Google
Grok
OpenAI
SeeAPI
Video Models
Alibaba
ByteDance
Google
Grok
Kling
Lightricks
MiniMax
PixVerse
Runway
SeeAPI
Music Models
Text Models
www.seeapi.com

One AI API for every leading model. Create images, videos, music, and multimodal AI assets online, or build with one unified API.

Support
  • Pricing
  • [email protected]
Legal
  • Privacy Policy
  • Refund Policy
  • Terms & Conditions

Copyright 2026 © SeeAPI. All rights reserved.

GROWCRAFT PTE. LTD.

·5 RAFFLES PLACE, #06-00, RAFFLES PLACE MRT STATION, SINGAPORE 048618

Create a Generation

Use POST /v1/generations to submit an asynchronous generation task. Choose model and endpoint values from the corresponding model documentation, then provide input that follows the selected Endpoint and Provider requirements.

Before you submit

Open a model guide from Image Models or Video Models in the Docs sidebar. Copy its model, endpoint, and optional provider values, then review the parameter requirements and pricing.

Create a new stable Idempotency-Key no longer than 255 characters.

Keep API keys on a trusted server and send Authorization: Bearer YOUR_API_KEY.

Idempotent retries

After a network timeout, retry with the exact same Idempotency-Key and request body. A new task normally returns HTTP 202. An idempotent replay returns HTTP 200 with X-Idempotent-Replay: true; reusing the key with a different body returns HTTP 409.

Track the task

Save the complete generation.id. Poll GET /v1/generations/{task_id} with backoff, or supply callback_url to receive terminal status updates. Stop polling when the task becomes succeeded, failed, canceled, refunded, or expired.

Query Task Status

After submitting a task, use the unified query endpoint to check progress and retrieve results:

Get Task DetailsLearn how to query task status and retrieve generation results

For production integrations, receive terminal status updates through a callback instead of polling continuously.

Request

POST/v1/generations
AuthorizationSend your API key in the Authorization header using the Bearer scheme.Authorization: Bearer ****************

Header Params

stringrequired

A unique key for this request. Reuse it only when retrying an identical request body.

max length: 255
Example:
order-20260820-001

Body Params

application/json
stringrequired

The model ID shown in the selected model's API documentation.

Example:
model-id
stringrequired

The Endpoint ID shown in the selected model's API documentation.

Example:
text-to-image
stringoptional

An optional public Provider ID. Omit it to use the Endpoint default Provider.

Example:
seeapi
objectrequired

Model parameters that follow the selected Endpoint and Provider requirements in the model documentation.

Example:
{"prompt":"A cinematic city at night"}
string <uri>optional

An optional absolute HTTPS URL that receives terminal task updates.

  • Use an HTTPS endpoint you control. Verify webhook signatures, and keep polling available as a recovery path.
max length: 2048
Example:
https://client.example.com/webhooks/seeapi

Responses

202Generation accepted. Save the returned task ID and track it until the task reaches a terminal state.
Bodyapplication/json
  • Save the complete generation.id before starting status checks.
  • HTTP 202 means the task was accepted, not that generation has finished.
objectrequired

The accepted asynchronous generation task.

stringrequired

The complete task ID used with GET /v1/generations/{task_id}.

Example:
task_xxx
stringrequired

The model ID used for the accepted task.

Example:
model-id
stringrequired

The model Endpoint used for the accepted task.

Example:
text-to-image
stringrequired

The public Provider ID selected for the accepted task.

Example:
seeapi
stringrequired

The current task state. A newly accepted generation starts as processing.

Allowed:processing
Example:
processing
numberrequired

The estimated credit usage calculated when the task is accepted. Query task details after completion for actual usage.

Example:
10
numberrequired

Credit usage reported at response time. Query task details after a terminal state for the actual usage.

Example:
0
numberrequired

Credits refunded at response time. Query task details after a terminal state for the final value.

Example:
0
string <date-time>required

The time when the task was created.

Example:
2026-08-18T10:00:00Z
string <date-time>required

The time of the most recent task update.

Example:
2026-08-18T10:00:00Z
booleanrequired

False for a newly accepted task; true when HTTP 200 replays an earlier request with the same idempotency key and body.

Example:
false
200Idempotent replay of an existing generation request
Bodyapplication/json
  • This response returns the existing task and does not create a second generation.
  • X-Idempotent-Replay is true for this response.
objectrequired

The accepted asynchronous generation task.

stringrequired

The complete task ID used with GET /v1/generations/{task_id}.

Example:
task_xxx
stringrequired

The model ID used for the accepted task.

Example:
model-id
stringrequired

The model Endpoint used for the accepted task.

Example:
text-to-image
stringrequired

The public Provider ID selected for the accepted task.

Example:
seeapi
stringrequired

The current task state. A newly accepted generation starts as processing.

Allowed:processing
Example:
processing
numberrequired

The estimated credit usage calculated when the task is accepted. Query task details after completion for actual usage.

Example:
10
numberrequired

Credit usage reported at response time. Query task details after a terminal state for the actual usage.

Example:
0
numberrequired

Credits refunded at response time. Query task details after a terminal state for the final value.

Example:
0
string <date-time>required

The time when the task was created.

Example:
2026-08-18T10:00:00Z
string <date-time>required

The time of the most recent task update.

Example:
2026-08-18T10:00:00Z
booleanrequired

False for a newly accepted task; true when HTTP 200 replays an earlier request with the same idempotency key and body.

Example:
false
400

Invalid JSON, parameters, Schema, or API Policy

  • Correct the JSON or the documented model, Endpoint, Provider, and input parameters before retrying. Do not retry an unchanged invalid request.
401

Invalid API Key or authentication failed

  • Stop automatic retries and verify that Authorization uses the Bearer scheme with a valid API key.
402

Insufficient credits

  • Add sufficient credits before retrying the request.
403

The current request is not allowed

  • Check that the API key is allowed to use the selected model, Endpoint, and Provider. Do not retry unchanged credentials indefinitely.
404

Model, Endpoint, or task not found

  • Verify the model and Endpoint IDs against the selected model documentation, then correct the request before retrying.
409

Idempotency conflict or the same request is still being created

  • If the same request is still being created, retry later with the same key and identical body. Use a new Idempotency-Key when the request body changes.
413

Request body is too large

  • Reduce the JSON request body and follow the selected model documentation for media inputs before retrying.
429

Too many requests

  • Honor Retry-After when provided and retry with backoff using the same Idempotency-Key and request body.
503

Service temporarily unavailable

  • Retry with backoff using the same Idempotency-Key and identical request body so a temporary failure cannot create a duplicate task.
Code Examples
Request
const response = await fetch("https://api.seeapi.com/v1/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "order-20260820-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "model-id",
  "endpoint": "text-to-image",
  "provider": "seeapi",
  "input": {
    "prompt": "A cinematic city at night"
  },
  "callback_url": "https://client.example.com/webhooks/seeapi"
})
});

const result = await response.json();
ResponseHTTP 202
{
  "generation": {
    "id": "task_xxx",
    "model": "model-id",
    "endpoint": "text-to-image",
    "provider": "seeapi",
    "status": "processing",
    "estimated_credits": 10,
    "consumed_credits": 0,
    "refunded_credits": 0,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:00:00Z"
  },
  "idempotent": false
}
PreviousList Model PricesNextGet Task Details
Request
const response = await fetch("https://api.seeapi.com/v1/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "order-20260820-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "model-id",
  "endpoint": "text-to-image",
  "provider": "seeapi",
  "input": {
    "prompt": "A cinematic city at night"
  },
  "callback_url": "https://client.example.com/webhooks/seeapi"
})
});

const result = await response.json();
ResponseHTTP 202
{
  "generation": {
    "id": "task_xxx",
    "model": "model-id",
    "endpoint": "text-to-image",
    "provider": "seeapi",
    "status": "processing",
    "estimated_credits": 10,
    "consumed_credits": 0,
    "refunded_credits": 0,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:00:00Z"
  },
  "idempotent": false
}