RaylightAPI

Greenlight links

Read a signed greenlight link

Public. What the link points at and whether it can still act (state: open, stale, expired). An expired link still reads with 200 and state: expired. Links arrive in emails and in webhook payloads under data.links.

GET/production-links/{token}

Public. No API key needed.

Parameters

FieldInTypeDescription
tokenrequiredpathstringThe signed token from the link.

Responses

200The pitch behind the link.
403The link was sent to someone who can no longer greenlight in this workspace, or to a webhook endpoint that was deleted (code revoked).
404Not a valid link (code not_found).
429Rate limited (30 a minute per address), or the workspace reached a monthly cap (code cap).
503Greenlight links are not switched on for this server (code disabled).

200 response body

FieldTypeDescription
linkrequiredobject
link.productionIdrequireduuid
link.workspaceNamerequiredstring
link.stagerequiredenumOne of: queued, writing_pitch, pitch_ready, greenlit, making, exporting, delivered, skipped, declined, cancelled, failed
link.staterequiredenumOne of: open, stale, expired
link.pitchVersionrequiredinteger
link.currentPitchVersionrequiredinteger
link.intentrequiredstring
link.originrequiredobject | null
link.origin.providerrequiredstring
link.origin.labelrequiredstring
link.origin.urlurl | nullDefault null
link.origin.refstring | nullDefault null
link.origin.requestedBystring | nullDefault null
link.formatrequiredobject
link.format.templateenumOne of: changelog, launch, feature, digest, customDefault changelog
link.format.durationMsintegerDefault 10000
link.format.aspectenumOne of: 16:9, 4:3, 3:2, 21:9, 1:1, 9:16, 3:4, 2:3, 4:5Default 16:9
link.format.soundobject
link.format.sound.voiceoverbooleanDefault true
link.format.sound.musicbooleanDefault true
link.format.sound.sfxbooleanDefault true
link.pitchrequiredobject | null
link.pitch.versionrequiredinteger
link.pitch.verdictenumOne of: video, skipDefault video
link.pitch.verdictReasonstring | nullDefault null
link.pitch.titlerequiredstring
link.pitch.summaryrequiredstring
link.pitch.shotsrequiredobject[]
link.pitch.shots[].indexrequiredinteger
link.pitch.shots[].titlerequiredstring
link.pitch.shots[].durationMsrequiredinteger
link.pitch.shots[].beatstring | nullDefault null
link.pitch.shots[].visualrequiredstring
link.pitch.shots[].textstring | nullDefault null
link.pitch.shots[].voiceoverstring | nullDefault null
link.pitch.shots[].mediaIdsstring[]
link.pitch.shots[].codePathsstring[]
link.pitch.musicstring | nullDefault null
link.pitch.estimatedCreditsrequiredinteger
link.pitch.createdAtrequireddatetime
link.pitchMarkdownrequiredstring | null
link.deliveryrequiredobject | null
link.delivery.shareUrlrequiredurl
link.delivery.projectIdrequireduuid
link.delivery.editUrlrequiredurl
link.delivery.exportIdrequireduuid
link.delivery.deliveredAtrequireddatetime
link.pageUrlrequiredurl
link.revisionsLeftrequiredinteger
link.expiresAtrequireddatetime
link.channelenumOne of: email, webhook

Example

curl
curl https://api.raylight.app/production-links/$TOKEN