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.
Authorization
bearerAuth Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….
In: header
Path Parameters
uuidRequest 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"
}
}