RaylightAPI

Productions

List productions

Newest first. Pass externalId to find the production an earlier create with that id made (the same match a repeated create replays), for example to check whether a pull request already has one before sending its brief again. Every code file in each brief has source and patch emptied and carries sourceOmitted: true; read one production for its full files.

GET/v1/productions

API key with the productions scope.

Parameters

FieldInTypeDescription
workspaceIdqueryuuid
stagequerystring
limitqueryinteger
externalIdquerystring

Responses

200Productions, newest first.
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

FieldTypeDescription
productionsrequiredobject[]
productions[].idrequireduuid
productions[].workspaceIdrequireduuid
productions[].stagerequiredenumOne of: queued, writing_pitch, pitch_ready, greenlit, making, exporting, delivered, skipped, declined, cancelled, failed
productions[].sourcerequiredobject
productions[].source.kindrequiredenumOne of: app, api, mcp
productions[].source.externalIdrequiredstring | null
productions[].source.originobject | nullDefault null
productions[].source.origin.providerrequiredstring
productions[].source.origin.labelrequiredstring
productions[].source.origin.urlurl | nullDefault null
productions[].source.origin.refstring | nullDefault null
productions[].source.origin.requestedBystring | nullDefault null
productions[].briefrequiredobject
productions[].brief.intentrequiredstring
productions[].brief.contextstring | nullDefault null
productions[].brief.mediaobject[]
productions[].brief.media[].idrequiredstring
productions[].brief.media[].kindrequiredenumOne of: image, video
productions[].brief.media[].urlrequiredurl
productions[].brief.media[].namerequiredstring
productions[].brief.media[].descriptionstring | nullDefault null
productions[].brief.codeobject[]
productions[].brief.code[].pathrequiredstring
productions[].brief.code[].sourcerequiredstring
productions[].brief.code[].statusenum | nullOne of: added, modified, removed, renamedDefault null
productions[].brief.code[].additionsintegerDefault 0
productions[].brief.code[].deletionsintegerDefault 0
productions[].brief.code[].patchstring | nullDefault null
productions[].brief.code[].digeststring | nullDefault null
productions[].brief.code[].scorenumberDefault 0
productions[].brief.code[].sourceOmittedboolean
productions[].brief.formatobject
productions[].brief.format.templateenumOne of: changelog, launch, feature, digest, customDefault changelog
productions[].brief.format.durationMsintegerDefault 10000
productions[].brief.format.aspectenumOne of: 16:9, 4:3, 3:2, 21:9, 1:1, 9:16, 3:4, 2:3, 4:5Default 16:9
productions[].brief.format.soundobject
productions[].brief.format.sound.voiceoverbooleanDefault true
productions[].brief.format.sound.musicbooleanDefault true
productions[].brief.format.sound.sfxbooleanDefault true
productions[].brief.brandobject
productions[].brief.brand.namestring | nullDefault null
productions[].brief.brand.logoUrlurl | nullDefault null
productions[].brief.brand.primaryColorstring | nullDefault null
productions[].brief.brand.backgroundColorstring | nullDefault null
productions[].brief.brand.fontFamilystring | nullDefault null
productions[].brief.brand.tonestring | nullDefault null
productions[].pitchrequiredobject | null
productions[].pitch.versionrequiredinteger
productions[].pitch.verdictenumOne of: video, skipDefault video
productions[].pitch.verdictReasonstring | nullDefault null
productions[].pitch.titlerequiredstring
productions[].pitch.summaryrequiredstring
productions[].pitch.shotsrequiredobject[]
productions[].pitch.shots[].indexrequiredinteger
productions[].pitch.shots[].titlerequiredstring
productions[].pitch.shots[].durationMsrequiredinteger
productions[].pitch.shots[].beatstring | nullDefault null
productions[].pitch.shots[].visualrequiredstring
productions[].pitch.shots[].textstring | nullDefault null
productions[].pitch.shots[].voiceoverstring | nullDefault null
productions[].pitch.shots[].mediaIdsstring[]
productions[].pitch.shots[].codePathsstring[]
productions[].pitch.musicstring | nullDefault null
productions[].pitch.estimatedCreditsrequiredinteger
productions[].pitch.createdAtrequireddatetime
productions[].greenlightrequiredobject | null
productions[].greenlight.moderequiredenumOne of: manual, auto
productions[].greenlight.actorrequiredstring
productions[].greenlight.actorNamestring | null
productions[].greenlight.atrequireddatetime
productions[].greenlight.pitchVersionrequiredinteger
productions[].greenlightModerequiredenumOne of: manual, auto
productions[].deliveryrequiredobject | null
productions[].delivery.shareUrlrequiredurl
productions[].delivery.projectIdrequireduuid
productions[].delivery.editUrlrequiredurl
productions[].delivery.exportIdrequireduuid
productions[].delivery.deliveredAtrequireddatetime
productions[].projectIdrequireduuid | null
productions[].creditsChargedrequiredinteger
productions[].errorrequiredstring | nullWhy the production failed, in words you can show a person. Never the render machine's own diagnostics.
productions[].createdAtrequireddatetime
productions[].updatedAtrequireddatetime
productions[].terminalbooleanTrue 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.
productions[].pageUrlurlThe production's page in the Raylight app. Absent from payloads stored before the field existed.

Example

curl
curl https://api.raylight.app/v1/productions \  -H "Authorization: Bearer $RAYLIGHT_API_KEY"