Remakes
Finish a remake
Stores the report, ends the hold and releases the builder tab. The project is yours to edit.
POST
/v1/remakes/{id}/completeAPI key with the remake scope.
Parameters
| Field | In | Type | Description |
|---|---|---|---|
idrequired | path | uuid | The remake id. |
Request body
application/json
| Field | Type | Description |
|---|---|---|
reportrequired | object | |
report.glitchesrequired | any[] | |
report.gapsrequired | any[] | |
report.notesrequired | string[] |
Responses
200The finished 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 is not at a stage that takes this call, or it already ended (code
stage).429Rate limited, or a monthly cap reached.
200 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/$ID/complete \ -H "Authorization: Bearer $RAYLIGHT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "report": { "glitches": [ "<glitches>" ], "gaps": [ "<gaps>" ], "notes": [ "<notes>" ] }}'