Authentication
Send either:- Clerk JWT (signed-in dashboard user), or
- Unsora API key (
uns_live_*)
/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-LimitX-RateLimit-RemainingX-RateLimit-Reset
429 with code RATE_LIMIT_EXCEEDED and a Retry-After header.
Idempotency
ForPOST 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
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 viaapiKeyId 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.POST .../create→ receive job id(s) withQUEUEDstatus- Poll until
COMPLETEDorFAILED:- Images / influencer / thumbnails →
GET /image/status/:id - Video (all models) →
GET /video/status/:id - Music (Mureka AI) →
GET /music/status/:id— see Poll music status
- Images / influencer / thumbnails →
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

