API referenceProjects

Render a project to video

Trigger a full project video render.

Validates readiness first: every chapter that has narration/dialogue must have its voiceover (a chapter with nothing spoken — music only, or silent — needs none; nor does a project with no voice) and every scene must have visual content. On readiness failure the 422 response carries machine-readable blockers (chapter ids missing audio, scene ids missing visuals) so callers can resolve them programmatically. Credits are deducted up front and refunded automatically if the render cannot be queued. Poll GET /projects/{id}/render for progress and the final MP4 URL.

POST
/projects/{id}/render

Authorization

bearerAuth
AuthorizationBearer <token>

Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….

In: header

Path Parameters

id*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/render" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
    "status": "rendering",
    "generation_id": "a3c889df-e7ae-4ae9-9838-8884129ade5e",
    "credits_remaining": 0,
    "editor_url": "http://example.com"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}