Everything known about a beat, before you author it
Return the authoring envelope for each of a scene's composition elements — what the pipeline's own composition author is told about the beat it is writing.
Read this BEFORE authoring or rewriting a composition: without it, an author is guessing at numbers the system already holds.
Per element: the brief; the director's numbered beats resolved to real seconds (each beat quotes a phrase of the narration, joined here to the word timeline); the canvas and the element's own window on the scene clock; the scene-relative VO word timeline; the musical grid re-based to the element's zero; the theme's resolved colour and type roles, image style and actual ground; the camera itinerary that will move over the composition; measured anchors; the previous and next scene; and the cast, generated imagery and user library available for verbatim reuse.
Timing, theme resolution, text-fit geometry and camera authority belong to the pipeline. Author against the values returned here rather than hard-coding equivalents.
Read-only and free — no credits, no writes, no generation.
Authorization
bearerAuth Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….
In: header
Path Parameters
uuidQuery Parameters
Narrow to one composition element. Omit for every gen:html in the scene.
Scene packet detail. compact (default) trims the project layer and caps words to the element window; full carries everything.
"compact" | "full"Force a composition kind instead of the inferred one.
"explainer-beat" | "data-chart" | "music-visualizer" | "sticker" | "title-card" | "media-frame"Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/scenes/497f6eca-6276-4993-bfeb-53cbbbba6f08/authoring-context"{
"data": {
"scene": {
"id": "string",
"title": "string",
"prompt": "string",
"chapterId": "string",
"projectId": "string",
"blockId": "string",
"isComposition": true
},
"canvas": {
"width": 0,
"height": 0,
"fps": 0,
"durationSec": 0
},
"transpileDiagnostics": [
null
],
"elements": [
{
"elementId": "string",
"endpoint": "string",
"brief": "string",
"engine": "string",
"resolvedUrl": "string",
"layout": {
"canvasWidth": 0,
"canvasHeight": 0,
"elementWidth": 0,
"elementHeight": 0,
"startSec": 0,
"durationSec": 0,
"fullscreen": true
},
"beats": [
{
"n": 0,
"phrase": "string",
"change": "string",
"atSec": 0,
"match": "exact"
}
],
"envelope": {
"property1": null,
"property2": null
},
"packet": {
"property1": null,
"property2": null
}
}
]
}
}{
"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"
}
}Edit a gen:html sub-composition's inner units POST
Apply deterministic, LLM-free edits to inner units of a resolved gen:html sub-composition: delete_unit removes the unit's element subtree; hide_unit hides it in place.
What is on screen in this scene? POST
What is actually on screen at each requested time, as JSON — no screenshots.