Raylight API
A video for every
feature you ship
Send what the video is about from your code, a GitHub workflow, or a chat with Claude. Raylight writes the script and shot list for free, then makes a short feature video once you greenlight it, as a project you can keep building into a full launch video.
Pay anyone in a tap
acme/ios #412 · Feature · 15s · 16:9
Brief
Show the new pay and request flow in the Acme app
For developers
Works with
your stack
A REST API with a typed TypeScript SDK, a CLI and a GitHub Action, plus an MCP server for Claude and ChatGPT. If it can send an HTTP request, it can ask for a video.
- TypeScript SDK
- REST API
- CLI
- GitHub Actions
Claude
Codex
Cursor- Webhooks
- Greenlight links
import { Raylight } from "@raylight/sdk";const raylight = new Raylight();const production = await raylight.productions.create({ brief: { intent: "Show the new pay flow in the Acme app" }, greenlightMode: "auto",});const { production: done } = await raylight.productions.waitForDelivery( production.id);console.log(done.delivery?.shareUrl);curl https://api.raylight.app/v1/productions \ -H "Authorization: Bearer $RAYLIGHT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "brief": { "intent": "Show the new pay flow in the Acme app", "format": { "template": "feature", "aspect": "16:9" } }, "externalId": "acme/app#pay-flow" }'npm install -g raylightraylight loginraylight productions create \ --intent "Announce multitrack audio" \ --media https://acme.dev/press/tracks.png::Tracks \ --duration 20raylight productions greenlight <id>raylight productions watch <id>Four steps.
Only one needs you.
Raylight writes the pitch and makes the video. You read it and greenlight it, or let it go ahead on its own.
{ "brief": { "intent": "Introduce the new prompt bar", "context": "Type what you want and Acme builds it.", "media": [ { "id": "bar", "kind": "image", "name": "Prompt bar", "url": "https://acme.dev/press/bar.png" } ], "format": { "template": "feature", "aspect": "16:9" } }, "externalId": "acme/web#512"}1 · Send a brief
One sentence about the video, plus any release notes, screenshots or UI files you have.
Just ask
A 5 second feature recap. One prompt, one send, and the answer it builds. Opens on the prompt bar, as asked.
- 01Open on the barThe prompt bar fades in on a soft gradient
- 02The askA prompt types itself out
- 03SendPush in as the button is pressed
- 04The answerThe reply streams in, line by line
2 · Read the pitch
A script and shot list, written for free. If a change isn't worth a video, it says so and charges nothing.
Raylight
to you and the launch team
Pitch ready: Just ask
4 shots, 5 seconds. Nothing is charged until you greenlight it.
- Open on the prompt bar, not the logo
- Pitch v2 readyFree
- Greenlit by MayaIn production
3 · Greenlight it, or send comments
Greenlight in the app, in chat, or from the signed link in Raylight's email. Your webhook can post the same link to Slack. Comments get a free new version, up to 5 rounds.
4 · Get the video
A share link, plus a real Raylight project you can open and keep editing.
The API
A call for every step
Send a brief, read the pitch, send comments, greenlight, decline or cancel. Every call is typed in the SDK and listed in the OpenAPI document.
import { Raylight } from "@raylight/sdk";const raylight = new Raylight();const { id } = await raylight.productions.create({ brief: { intent: "Introduce the new prompt bar" }, externalId: "acme/web#512",});const { pitchMarkdown } = await raylight.productions.waitForPitch(id);await raylight.productions.comment(id, { comment: "Open on the prompt bar" });const { production: pitched } = await raylight.productions.waitForPitch(id);if (pitched.stage === "pitch_ready") { await raylight.productions.greenlight(id, { pitchVersion: pitched.pitch?.version, });}const { production: done } = await raylight.productions.waitForDelivery(id);Visibility
See every production,
call and delivery
Each production keeps a timeline of what happened and who did it. Every webhook delivery is logged and can be sent again. Analytics show requests, errors and latency for each key and route.
Productions
Just ask
acme/web #512
- Version
- v2
- Length
- 5s
- Aspect
- 16:9
- Greenlight
- Manual
Webhooks
Send test eventhttps://acme.dev/hooks/raylight
2 events · signed with whsec_••••3f9a
- RedeliverWrappedDelivered
10:31 · 1 attempt · HTTP 200
- RedeliverGreenlitDelivered
10:20 · 1 attempt · HTTP 200
- RedeliverPitch readyDelivered
10:13 · 2 attempts · HTTP 200
- RedeliverPitch readyDelivered
10:04 · 1 attempt · HTTP 200
- RedeliverTestDelivered
09:58 · 1 attempt · HTTP 200
Analytics
Last 24 hours- Requests
- 1,284
- Error rate
- 0.4%
- p50 latency
- 112 ms
- p95 latency
- 348 ms
- GET/v1/productions/{id}964
- POST/v1/productions212
- POST/v1/productions/{id}/greenlight61
- POST/v1/productions/{id}/comments44
Built to be trusted
Safe to put in your pipeline
Nothing reaches into your systems, every message is signed, and nothing is charged until someone greenlights it.
Push only
Raylight never calls into your tools and holds no repo, deploy or chat credentials. It works from what you send.
Signed both ways
Webhooks carry an HMAC-SHA256 signature. Greenlight links are tied to one production and one pitch version, and expire in 30 days.
Retries built in
A webhook your server misses is tried again for about seven hours, and any delivery can be sent again from the log.
Pay on greenlight
Pitches are free. Credits are charged once, when someone greenlights one, and refunded if the video can't be made.
Frequently asked questions
Ship a video
with every release.
