Customer API documentation

Build with GPT Image 2 and Seedance 2.0 Fast

Use one REST API for image and video generation, async job tracking, result retrieval, and usage checks.

Base URL https://api.seedance2unlimited.space

All examples on this page use the public customer API domain and `/v1` endpoints.

Auth

Authentication

Send your customer API key in the `Authorization` header. Generate requests also need `Content-Type: application/json`.

Required headers
Authorization: Bearer ak_live_your_key
Content-Type: application/json
Keep API keys server-side.

Call generation endpoints from your backend or trusted automation. Treat `ak_live_...` values as secrets.

Header

Idempotency

Every new image or video generation request must include a unique `Idempotency-Key`. This makes retries safer when a network or client timeout happens.

Same key, same payload

The API can return the same job instead of creating duplicate work.

Same key, different payload

The API rejects the request with an idempotency conflict.

Idempotency header
Idempotency-Key: image-order-001
POST

Generate image

Creates an async image job with GPT Image 2. Image output is returned later through the job result endpoint.

Endpoint POST /v1/images/generate
Field Type Notes
prompt string Required generation prompt.
quality string Example values: LOW, MEDIUM.
size string Example value: 1:1_SMALL.
referenceImage string Optional reference image URL when supported by the mode.
Image request
curl -X POST "https://api.seedance2unlimited.space/v1/images/generate" \
  -H "Authorization: Bearer ak_live_your_key" \
  -H "Idempotency-Key: image-order-001" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "cinematic product photo on a clean studio background",
    "quality": "LOW",
    "size": "1:1_SMALL"
  }'
Example response
{
  "ok": true,
  "jobId": "job_...",
  "status": "processing",
  "type": "image",
  "model": "gpt-image-2",
  "chargedCredits": 20,
  "idempotentReplay": false
}
POST

Generate video

Creates an async Seedance 2.0 Fast video job. Use job status and result endpoints to track completion.

Endpoint POST /v1/videos/generate
Field Type Notes
prompt string Required video prompt.
size string Example values: 16:9_SMALL, 1:1_SMALL, 9:16_SMALL.
duration number Example value: 15.
motionHasAudio boolean Optional audio setting when supported.
referenceImage string Optional reference image URL when supported by the mode.
Video request
curl -X POST "https://api.seedance2unlimited.space/v1/videos/generate" \
  -H "Authorization: Bearer ak_live_your_key" \
  -H "Idempotency-Key: video-order-001" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "cinematic drone shot over a futuristic city",
    "size": "16:9_SMALL",
    "duration": 15,
    "motionHasAudio": true
  }'
GET

Job status

Check whether an async image or video job is queued, processing, complete, or failed.

Endpoint GET /v1/jobs/:jobId
Status request
curl "https://api.seedance2unlimited.space/v1/jobs/job_xxx" \
  -H "Authorization: Bearer ak_live_your_key"
QUEUED PROCESSING COMPLETE FAILED
GET

Job result

Fetch the generated image or video result after the job completes. If the result is not ready, the endpoint can return `202`.

Endpoint GET /v1/jobs/:jobId/result
Result request
curl "https://api.seedance2unlimited.space/v1/jobs/job_xxx/result" \
  -H "Authorization: Bearer ak_live_your_key"
GET

Usage

Inspect your current credit balance, reserved credits, available credits, plan, and limits.

Endpoint GET /v1/usage
Usage request
curl "https://api.seedance2unlimited.space/v1/usage" \
  -H "Authorization: Bearer ak_live_your_key"
Errors

Error contract

Errors are returned with HTTP status codes and machine-readable error identifiers. Customer-facing errors do not expose internal provider details.

401 invalid_api_key

The API key is missing, inactive, or invalid.

402 customer_balance_low

Available credits are not enough for the requested generation.

409 idempotency_conflict

The idempotency key was reused with a different payload.

429 rate_limit_exceeded

The request exceeded the current rate limit for the plan.

429 concurrency_limit_exceeded

Too many generation jobs are active at the same time.

503 provider_unavailable

The service is temporarily unable to accept or run the job.