Create animation export
Source-generated POST /animation-exports reference: authentication, fields, responses, errors, and operational safeguards.
On this page
Operation
POST /animation-exports
operationId: create_animation_export_v1_animation_exports_post
Start a paid asynchronous task. Quote first and obtain user approval. Persist the returned ID; 202 means accepted, not complete. Reuse the same Idempotency-Key, credential identity, and unchanged request after an uncertain response. Creation recalculates price; Public API quotes do not lock it and max_credits/quote_id are not API request fields. Poll using Retry-After and inspect outputs at every terminal state, including failure.
Authentication and side effects
Use a server-side Bearer API key. Required scope: animations:write
This creates paid work. Obtain approval before submission. API quotes do not lock a price or enforce a maximum budget.
Parameters
| Parameter | Location | Type | Required | Constraints / default | Meaning |
|---|---|---|---|---|---|
Idempotency-Key |
header |
string |
Yes | minLength: 8; maxLength: 200 |
Persist once per logical operation; reuse with the same credential and unchanged body. Changing credentials changes the deduplication scope. |
Request body (application/json)
Body required: true
| Field | Type | Required | Default | Constraints | Meaning |
|---|---|---|---|---|---|
export |
ExportOptions | No | {"frame_count":24,"output_formats":["spritesheet"],"output_height":512,"output_width":512,"transparent":{"enabled":false},"unity":{"pivot":"bottom_center","pixels_per_unit":100}} |
— | Output formats and processing settings. |
metadata |
object |
No | {} |
— | Simple scalar/null metadata; at most 4 KiB JSON, no credentials. |
selection |
Selection | No | {"duration_seconds":null,"mode":"full","start_seconds":0} |
— | Source interval to export. |
source_video_asset_id |
string |
Yes | — | format: uuid |
Owned source video asset ID, not a task ID. Reuse an existing video to avoid generating motion again. |
Full nested schema: AnimationExportCreateRequest
Request example
{
"export": {
"frame_count": 24,
"output_formats": [
"frames_zip"
],
"output_height": 512,
"output_width": 512
},
"selection": {
"mode": "full"
},
"source_video_asset_id": "00000000-0000-4000-8000-000000000003"
}
Responses
| HTTP | Body | Meaning |
|---|---|---|
202 |
TaskResponse | Accepted asynchronously; poll the task ID. |
400 |
APIErrorEnvelope | Invalid input; correct the request before retrying. |
401 |
APIErrorEnvelope | Missing, expired, or revoked API key. |
402 |
APIErrorEnvelope | Insufficient credits; do not automatically purchase. |
403 |
APIErrorEnvelope | Account eligibility, account status, or key scope does not allow this operation. |
404 |
APIErrorEnvelope | Resource is unavailable, not owned, or its signature is invalid/expired. |
409 |
APIErrorEnvelope | Idempotency conflict; only IDEMPOTENCY_IN_PROGRESS is retryable with the original request. |
413 |
APIErrorEnvelope | Request or decoded image exceeds the configured limit. |
415 |
APIErrorEnvelope | Use supported image media types. |
422 |
APIErrorEnvelope | Decoded image dimensions exceed the allowed size. |
429 |
APIErrorEnvelope | Account-wide rate or queue limit; wait for Retry-After. |
500 |
APIErrorEnvelope | Internal failure; preserve the task/key and retry only when marked retryable. |
503 |
APIErrorEnvelope | Service/provider unavailable; retry only when error.retryable is true. |
Response headers
| HTTP | Header | Type | Meaning |
|---|---|---|---|
202 |
Retry-After |
integer |
Suggested wait in seconds; respect the server value and an overall deadline. |
429 |
Retry-After |
integer |
Suggested wait in seconds; respect the server value and an overall deadline. |
503 |
Retry-After |
integer |
Suggested wait in seconds; respect the server value and an overall deadline. |
Response example
{
"created_at": "2026-08-30T00:00:00Z",
"credits": {
"charged": 0,
"held": 1,
"quoted": 1
},
"error": null,
"finished_at": null,
"id": "00000000-0000-4000-8000-000000000002",
"metadata": {},
"normalized_input": {},
"object": "animation_export",
"outputs": [],
"progress": 0,
"stage": "queued",
"started_at": null,
"status": "queued"
}
Related guides
Was this page helpful?
No search queries, code, or free text are collected. This switch controls documentation interactions only; general site analytics follow the privacy policy. Privacy policy