Would the pipeline accept this composition?
Check a composition against the REAL gates before landing it.
Free — no hosting, no writes, no credits.
Runs the actual chain at its live configuration: the same normalisation every generated candidate receives, the hard structural gates (exactly one closed <template>, a composition id, a registered timeline, and the seek-law bans on <canvas>, requestAnimationFrame, appends to document.body and getElementsBy*), the configurable gate stack, and the vocabulary checks from GET /authoring-contract. A refusal is reported in the gate's own words, with per-stage results.
The most common refusal is driving animation from requestAnimationFrame or a wall clock: the renderer seeks a paused timeline and screenshots, so it never runs a frame loop and such a composition renders blank in the video while looking correct in a browser.
Reports whether the composition is CONFORMANT, never whether it is any good. To SEE it, pass check: true: the response gains check with the rendered findings and a contact_sheet image of the whole scene over time.
Authorization
bearerAuth Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….
In: header
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
curl -X POST "https://example.com/compositions/validate" \ -H "Content-Type: application/json" \ -d '{ "html": "string" }'{
"data": {
"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"
}
}