Api referenceExports

Create export task

Idempotency is optional. - If `Idempotency-Key` is provided, request replay uses header idempotency. - If header is omitted but `clientTaskId` is provided, task deduplication uses `clientTaskId`. - If both are omitted, every request creates a new task. - Active Open API export tasks are limited to 2 per user. When exceeded, API returns `422 OPEN_API_EXPORT_CONCURRENCY_LIMIT_EXCEEDED`. - Use this route for one-off export. Use `/v1/projects` and `/v1/projects/{projectId}/exports` when you need persistence.

POST
/v1/exports

Idempotency is optional.

  • If Idempotency-Key is provided, request replay uses header idempotency.
  • If header is omitted but clientTaskId is provided, task deduplication uses clientTaskId.
  • If both are omitted, every request creates a new task.
  • Active Open API export tasks are limited to 2 per user. When exceeded, API returns 422 OPEN_API_EXPORT_CONCURRENCY_LIMIT_EXCEEDED.
  • Use this route for one-off export. Use /v1/projects and /v1/projects/{projectId}/exports when you need persistence.

Authorization

ApiKeyAuth
x-api-key<token>

Enter your API key manually in the interactive docs playground. The value is stored only in the current browser and is not injected from server environment variables.

In: header

Header Parameters

Idempotency-Key?string

Optional idempotency key for create/finalize style POST requests. When provided, the server replays the first completed response for the same request payload.

Request Body

application/json

clientTaskId?string
Lengthlength <= 128
editorState*
stateVersion?string
Lengthlength <= 32
fps*integer
Value in30 | 60
compositionWidth?integer
Range50 <= value <= 1920
compositionHeight?integer
Range50 <= value <= 1920
ratio*string
Value in"16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "custom"
scale*number
Range0.6 <= value <= 8
format*string
Value in"mp4" | "webm"
callbackUrl?string
Lengthlength <= 1024
callbackHeaders?

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.indream.ai/v1/exports" \  -H "Content-Type: application/json" \  -d '{    "editorState": {      "compositionWidth": 50,      "compositionHeight": 50,      "timebaseTicksPerSecond": 240000,      "tracks": [        {          "id": "string",          "items": [            "string"          ],          "hidden": true,          "muted": true        }      ],      "assets": {        "property1": {          "id": "string",          "type": "image",          "filename": "string",          "size": 0,          "mimeType": "string",          "width": 1,          "height": 1        },        "property2": {          "id": "string",          "type": "image",          "filename": "string",          "size": 0,          "mimeType": "string",          "width": 1,          "height": 1        }      },      "items": {        "property1": {          "id": "string",          "type": "image",          "durationTicks": 1,          "startTicks": 0,          "isDraggingInTimeline": true,          "top": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "left": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "width": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "height": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "scaleX": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "scaleY": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "opacity": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "assetId": "string",          "keepAspectRatio": true,          "borderRadius": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "rotation": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          }        },        "property2": {          "id": "string",          "type": "image",          "durationTicks": 1,          "startTicks": 0,          "isDraggingInTimeline": true,          "top": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "left": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "width": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "height": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "scaleX": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "scaleY": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "opacity": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "assetId": "string",          "keepAspectRatio": true,          "borderRadius": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          },          "rotation": {            "value": 0,            "keyframes": [              {                "timeTicks": 0,                "value": 0              }            ]          }        }      },      "transitions": {        "property1": {          "id": "string",          "trackId": "string",          "fromClipId": "string",          "toClipId": "string",          "type": "fade",          "durationTicks": 1        },        "property2": {          "id": "string",          "trackId": "string",          "fromClipId": "string",          "toClipId": "string",          "type": "fade",          "durationTicks": 1        }      }    },    "fps": 30,    "ratio": "16:9",    "scale": 0.6,    "format": "mp4"  }'
{
  "data": {
    "taskId": "string",
    "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
    "createdAt": "2019-08-24T14:15:22Z",
    "durationSeconds": 0,
    "billedStandardSeconds": 0,
    "chargedCredits": "string",
    "chargedCreditPool": "string"
  },
  "meta": {}
}
{
  "type": "FORBIDDEN",
  "title": "Forbidden",
  "status": 403,
  "detail": "The current account is not eligible for this Open API route",
  "errorCode": "OPEN_API_RUNTIME_ACCESS_FORBIDDEN"
}
{
  "type": "FORBIDDEN",
  "title": "Forbidden",
  "status": 403,
  "detail": "The current account is not eligible for this Open API route",
  "errorCode": "OPEN_API_RUNTIME_ACCESS_FORBIDDEN"
}
{
  "type": "FORBIDDEN",
  "title": "Forbidden",
  "status": 403,
  "detail": "The current account is not eligible for this Open API route",
  "errorCode": "OPEN_API_RUNTIME_ACCESS_FORBIDDEN"
}
{
  "type": "FORBIDDEN",
  "title": "Forbidden",
  "status": 403,
  "detail": "The current account is not eligible for this Open API route",
  "errorCode": "OPEN_API_RUNTIME_ACCESS_FORBIDDEN"
}
{
  "type": "FORBIDDEN",
  "title": "Forbidden",
  "status": 403,
  "detail": "The current account is not eligible for this Open API route",
  "errorCode": "OPEN_API_RUNTIME_ACCESS_FORBIDDEN"
}