RaylightAPI

Remakes

Report progress

The stage, the shot list as it stands, notes and the repair being run. Also the heartbeat: send one at least every 60 seconds. A remake with no progress for 15 minutes fails with cli_stopped and releases its project. 409 canceled means stop.

POST/v1/remakes/{id}/progress

API key with the remake scope.

Parameters

FieldInTypeDescription
idrequiredpathuuidThe remake id.

Request body

application/json

FieldTypeDescription
stagerequiredenumOne of: studying, building, polishing, needs_repair
shotsobject[]
shots[].indexrequiredinteger
shots[].startMsrequirednumber
shots[].durationMsrequirednumber
shots[].staterequiredenumOne of: skeleton, building, built, failed
notesstring[]
repairobject | null
repair.requestedrequiredboolean
repair.uncoveredrequiredobject[]
repair.uncovered[].segmentIdrequiredstring
repair.uncovered[].firstMsrequirednumber
repair.uncovered[].lastMsrequirednumber
repair.uncovered[].boxrequiredobject
repair.uncovered[].box.xrequirednumber
repair.uncovered[].box.yrequirednumber
repair.uncovered[].box.wrequirednumber
repair.uncovered[].box.hrequirednumber
repair.uncovered[].samplesrequiredinteger

Responses

200The 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.
409The remake was canceled (code canceled) or already ended (code stage).
429Rate limited, or a monthly cap reached.

200 response body

FieldTypeDescription
remakerequiredobject
remake.idrequireduuid
remake.statusrequiredenumThe 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.projectIdrequireduuid | null
remake.projectUrlrequiredurl | null
remake.shotsrequiredobject[]
remake.shots[].indexrequiredinteger
remake.shots[].startMsrequirednumber
remake.shots[].durationMsrequirednumber
remake.shots[].staterequiredenumOne of: skeleton, building, built, failed
remake.repairrequiredobject | null
remake.repair.requestedrequiredboolean
remake.repair.uncoveredrequiredobject[]
remake.repair.uncovered[].segmentIdrequiredstring
remake.repair.uncovered[].firstMsrequirednumber
remake.repair.uncovered[].lastMsrequirednumber
remake.repair.uncovered[].boxrequiredobject
remake.repair.uncovered[].box.xrequirednumber
remake.repair.uncovered[].box.yrequirednumber
remake.repair.uncovered[].box.wrequirednumber
remake.repair.uncovered[].box.hrequirednumber
remake.repair.uncovered[].samplesrequiredinteger
remake.reportrequiredobject | null
remake.report.glitchesrequiredany[]
remake.report.gapsrequiredany[]
remake.report.notesrequiredstring[]
remake.errorrequiredstring | null
remake.errorCoderequiredenum | nullOne of: cli_stopped, tab_lost, study_error, build_error
remake.libraryEligiblerequiredbooleanWhether 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.sourcerequiredobject
remake.source.fileNamerequiredstring
remake.source.durationMsrequiredinteger
remake.source.widthrequiredinteger
remake.source.heightrequiredinteger
remake.source.fpsrequirednumber
remake.agentrequiredenumOne of: claude, codex
remake.builderrequiredobject
remake.builder.attachedrequiredboolean
remake.builder.lastSeenAtrequiredstring | null
remake.createdAtrequiredstring
remake.updatedAtrequiredstring

Example

curl
curl -X POST https://api.raylight.app/v1/remakes/$ID/progress \  -H "Authorization: Bearer $RAYLIGHT_API_KEY" \  -H "Content-Type: application/json" \  -d '{  "stage": "studying"}'