Productions
Cancel a production
Free before the greenlight. Refunded if greenlit but still waiting for a render machine. A production being made cannot be cancelled.
POST
/v1/productions/{id}/cancelAPI key with the productions scope.
Parameters
| Field | In | Type | Description |
|---|---|---|---|
idrequired | path | uuid | The production id. |
Responses
200The cancelled production.
400Invalid request.
401Missing, invalid or revoked key.
403The key lacks the scope, or the key's owner has view-only access to the workspace (code
forbidden).404Not found.
409The production is being made (code
stage).429Rate limited, or a monthly cap reached.
200 response body
| Field | Type | Description |
|---|---|---|
productionrequired | object | |
production.idrequired | uuid | |
production.workspaceIdrequired | uuid | |
production.stagerequired | enum | One of: queued, writing_pitch, pitch_ready, greenlit, making, exporting, delivered, skipped, declined, cancelled, failed |
production.sourcerequired | object | |
production.source.kindrequired | enum | One of: app, api, mcp |
production.source.externalIdrequired | string | null | |
production.source.origin | object | null | Default null |
production.source.origin.providerrequired | string | |
production.source.origin.labelrequired | string | |
production.source.origin.url | url | null | Default null |
production.source.origin.ref | string | null | Default null |
production.source.origin.requestedBy | string | null | Default null |
production.briefrequired | object | |
production.brief.intentrequired | string | |
production.brief.context | string | null | Default null |
production.brief.media | object[] | |
production.brief.media[].idrequired | string | |
production.brief.media[].kindrequired | enum | One of: image, video |
production.brief.media[].urlrequired | url | |
production.brief.media[].namerequired | string | |
production.brief.media[].description | string | null | Default null |
production.brief.code | object[] | |
production.brief.code[].pathrequired | string | |
production.brief.code[].sourcerequired | string | |
production.brief.code[].status | enum | null | One of: added, modified, removed, renamedDefault null |
production.brief.code[].additions | integer | Default 0 |
production.brief.code[].deletions | integer | Default 0 |
production.brief.code[].patch | string | null | Default null |
production.brief.code[].digest | string | null | Default null |
production.brief.code[].score | number | Default 0 |
production.brief.code[].sourceOmitted | boolean | |
production.brief.format | object | |
production.brief.format.template | enum | One of: changelog, launch, feature, digest, customDefault changelog |
production.brief.format.durationMs | integer | Default 10000 |
production.brief.format.aspect | enum | One of: 16:9, 4:3, 3:2, 21:9, 1:1, 9:16, 3:4, 2:3, 4:5Default 16:9 |
production.brief.format.sound | object | |
production.brief.format.sound.voiceover | boolean | Default true |
production.brief.format.sound.music | boolean | Default true |
production.brief.format.sound.sfx | boolean | Default true |
production.brief.brand | object | |
production.brief.brand.name | string | null | Default null |
production.brief.brand.logoUrl | url | null | Default null |
production.brief.brand.primaryColor | string | null | Default null |
production.brief.brand.backgroundColor | string | null | Default null |
production.brief.brand.fontFamily | string | null | Default null |
production.brief.brand.tone | string | null | Default null |
production.pitchrequired | object | null | |
production.pitch.versionrequired | integer | |
production.pitch.verdict | enum | One of: video, skipDefault video |
production.pitch.verdictReason | string | null | Default null |
production.pitch.titlerequired | string | |
production.pitch.summaryrequired | string | |
production.pitch.shotsrequired | object[] | |
production.pitch.shots[].indexrequired | integer | |
production.pitch.shots[].titlerequired | string | |
production.pitch.shots[].durationMsrequired | integer | |
production.pitch.shots[].beat | string | null | Default null |
production.pitch.shots[].visualrequired | string | |
production.pitch.shots[].text | string | null | Default null |
production.pitch.shots[].voiceover | string | null | Default null |
production.pitch.shots[].mediaIds | string[] | |
production.pitch.shots[].codePaths | string[] | |
production.pitch.music | string | null | Default null |
production.pitch.estimatedCreditsrequired | integer | |
production.pitch.createdAtrequired | datetime | |
production.greenlightrequired | object | null | |
production.greenlight.moderequired | enum | One of: manual, auto |
production.greenlight.actorrequired | string | |
production.greenlight.actorName | string | null | |
production.greenlight.atrequired | datetime | |
production.greenlight.pitchVersionrequired | integer | |
production.greenlightModerequired | enum | One of: manual, auto |
production.deliveryrequired | object | null | |
production.delivery.shareUrlrequired | url | |
production.delivery.projectIdrequired | uuid | |
production.delivery.editUrlrequired | url | |
production.delivery.exportIdrequired | uuid | |
production.delivery.deliveredAtrequired | datetime | |
production.projectIdrequired | uuid | null | |
production.creditsChargedrequired | integer | |
production.errorrequired | string | null | Why the production failed, in words you can show a person. Never the render machine's own diagnostics. |
production.createdAtrequired | datetime | |
production.updatedAtrequired | datetime | |
production.terminal | boolean | True once the stage is one the production never leaves (delivered, skipped, declined, cancelled, failed, or a terminal stage added later). Stop polling when it is true; it is computed by the server, so it stays right for stages your client does not know yet. Absent from payloads stored before the field existed. |
production.pageUrl | url | The production's page in the Raylight app. Absent from payloads stored before the field existed. |
Example
curl -X POST https://api.raylight.app/v1/productions/$ID/cancel \ -H "Authorization: Bearer $RAYLIGHT_API_KEY"