Productions
Read a production
The production with its full brief, its timeline (events and comments, each with actorName), and its place in the render queue.
GET
/v1/productions/{id}API key with the productions scope.
Parameters
| Field | In | Type | Description |
|---|---|---|---|
idrequired | path | uuid | The production id. |
Responses
200The production with its timeline.
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.
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. |
eventsrequired | object[] | |
events[].idrequired | uuid | |
events[].productionIdrequired | uuid | |
events[].kindrequired | enum | One of: created, stage, pitch, comment, greenlit, declined, cancelled, delivered, failed, note |
events[].actorrequired | string | |
events[].actorName | string | null | The name a person reads for actor: the user's name or email, the email behind a link, "Auto-greenlight", "Raylight", or null when unknown. |
events[].payloadrequired | object | The fields that kind of event carries for a reader: the stage, the comment, the credits charged or refunded, the error, your own externalId on created, and on a progress note the phase the production moved to. Nothing else is included. |
events[].createdAtrequired | datetime | |
queuerequired | object | null | |
queue.phase | enum | any | Default null |
queue.startedAtrequired | datetime | null | |
queue.retrying | boolean | Default false |
queue.lastProgressrequired | string | null | |
pitchMarkdownrequired | string | null |
Example
curl https://api.raylight.app/v1/productions/$ID \ -H "Authorization: Bearer $RAYLIGHT_API_KEY"