Skip to main content

Authentication

Send either:
  • Clerk JWT (signed-in dashboard user), or
  • Unsora API key (uns_live_*)
Authorization: Bearer uns_live_...
That is enough to call the public feature APIs under /api/v1/*. Both resolve to the same user account (credits, jobs, scheduler data). Create and revoke keys at /api-keys (Clerk sign-in required for key management only).

Rate limits

API key requests are limited to 60 requests per minute per key. Response headers:
  • X-RateLimit-Limit
  • X-RateLimit-Remaining
  • X-RateLimit-Reset
When exceeded, the API returns 429 with code RATE_LIMIT_EXCEEDED and a Retry-After header.

Idempotency

For POST create endpoints, pass an Idempotency-Key header when using an API key. Base URL comes from OpenAPI servers in openapi.json. On each endpoint page (e.g. Create image), use the API playground — pick a server, set headers (Authorization, Idempotency-Key), and send the request.
  • Same key + same request path replays the stored response for 24 hours
  • Reusing a key with a different request returns 409 IDEMPOTENCY_CONFLICT
  • Successful replays include Idempotent-Replayed: true
Posts also accept body external_id as an idempotency alias when the header is omitted.

Credit audit

Credit consumption from API key requests is linked to the key in the audit log via apiKeyId on credit transactions.

Async jobs (polling)

All generation and scheduler jobs complete asynchronously. Use polling only — the public API does not accept callback or webhook URLs.
  1. POST .../create → receive job id(s) with QUEUED status
  2. Poll until COMPLETED or FAILED:
    • Images / influencer / thumbnailsGET /image/status/:id
    • Video (all models)GET /video/status/:id
    • Music (Mureka AI)GET /music/status/:id — see Poll music status
Image status type values: BASIC, INFLUENCER, THUMBNAIL. Video jobs are always seedance_2.0 on the video status endpoint. List or delete video jobs with GET /videos/all and DELETE /videos/:generationId — see List video generations and Delete video generation. Music jobs use GET /music/status/:id. List or delete with List music generations and Delete music generation. Dashboard users can also manage songs at Music generator.

OpenAPI

  • Mintlify pages resolve from docs/openapi.json
  • Live spec: GET /api/v1/openapi.json