Remakes
Start a remake
Start a remake of your own video: Raylight makes a blank project (one empty shot at the source's nearest aspect ratio and frame rate) in your personal workspace's Remakes folder and answers with the remake. The project is held from the moment it exists: only the builder tab and your CLI's uploads may change it until the remake ends. rightsAttested must be true: you confirm you own the video or have the right to use it, and the answer is stored with the remake. Free; one remake runs at a time, five a day, sources up to 3 minutes and within your plan's video limits. npx raylight video-to-project <video> does all of this for you.
POST
/v1/remakesAPI key with the remake scope.
Request body
application/json
| Field | Type | Description |
|---|---|---|
fileNamerequired | string | |
bytesrequired | integer | |
durationMsrequired | integer | |
widthrequired | integer | |
heightrequired | integer | |
fpsrequired | number | |
sha256required | string | |
mime | enum | One of: video/mp4, video/quicktime, video/webm |
rightsAttestedrequired | enum | |
agentrequired | enum | One of: claude, codex |
cliVersionrequired | string |
Responses
201The new remake.
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.
409Another remake of yours is still running (code
remake_running).429Rate limited, or a monthly cap reached.
201 response body
| Field | Type | Description |
|---|---|---|
remakerequired | object | |
remake.idrequired | uuid | |
remake.statusrequired | enum | The furthest stage reached: studying (the study runs on your machine), building (shots land in the project as they are built; overlaps studying), polishing (the film-wide pass), needs_repair (the CLI is running the repair session), then done, failed or canceled. New values may be added; treat unknown ones as opaque.One of: studying, building, polishing, needs_repair, done, failed, canceled |
remake.projectIdrequired | uuid | null | |
remake.projectUrlrequired | url | null | |
remake.shotsrequired | object[] | |
remake.shots[].indexrequired | integer | |
remake.shots[].startMsrequired | number | |
remake.shots[].durationMsrequired | number | |
remake.shots[].staterequired | enum | One of: skeleton, building, built, failed |
remake.repairrequired | object | null | |
remake.repair.requestedrequired | boolean | |
remake.repair.uncoveredrequired | object[] | |
remake.repair.uncovered[].segmentIdrequired | string | |
remake.repair.uncovered[].firstMsrequired | number | |
remake.repair.uncovered[].lastMsrequired | number | |
remake.repair.uncovered[].boxrequired | object | |
remake.repair.uncovered[].box.xrequired | number | |
remake.repair.uncovered[].box.yrequired | number | |
remake.repair.uncovered[].box.wrequired | number | |
remake.repair.uncovered[].box.hrequired | number | |
remake.repair.uncovered[].samplesrequired | integer | |
remake.reportrequired | object | null | |
remake.report.glitchesrequired | any[] | |
remake.report.gapsrequired | any[] | |
remake.report.notesrequired | string[] | |
remake.errorrequired | string | null | |
remake.errorCoderequired | enum | null | One of: cli_stopped, tab_lost, study_error, build_error |
remake.libraryEligiblerequired | boolean | Whether this remake (the video, the study and the plan applied) may feed Raylight's motion library. False once the owner or the workspace turns data sharing off (Settings, Improve Raylight); that switch is the only opt-out. |
remake.sourcerequired | object | |
remake.source.fileNamerequired | string | |
remake.source.durationMsrequired | integer | |
remake.source.widthrequired | integer | |
remake.source.heightrequired | integer | |
remake.source.fpsrequired | number | |
remake.agentrequired | enum | One of: claude, codex |
remake.builderrequired | object | |
remake.builder.attachedrequired | boolean | |
remake.builder.lastSeenAtrequired | string | null | |
remake.createdAtrequired | string | |
remake.updatedAtrequired | string |
Example
curl -X POST https://api.raylight.app/v1/remakes \ -H "Authorization: Bearer $RAYLIGHT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "fileName": "<fileName>", "bytes": 1, "durationMs": 1, "width": 1, "height": 1, "fps": 1, "sha256": "<sha256>", "rightsAttested": true, "agent": "claude", "cliVersion": "<cliVersion>"}'