# Run one op in the builder tab

> Relays one op (applyEdits, renderStills, shotDetails, seek, canvas, getProject, seedLibrary, swapImageSources, flushSave) to the builder tab and answers what the tab answered. A renderStills call whose worst-case answer is over the bridge's budget is refused with 413 `too_large`; split the times across calls.

### POST /v1/remakes/{id}/lab

**Run one op in the builder tab**

Relays one op (applyEdits, renderStills, shotDetails, seek, canvas, getProject, seedLibrary, swapImageSources, flushSave) to the builder tab and answers what the tab answered. A renderStills call whose worst-case answer is over the bridge's budget is refused with 413 `too_large`; split the times across calls.

Auth: `Authorization: Bearer rl_live_...` with the `remake` scope.

Parameters:

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | uuid | yes | The remake id. |

Request body (application/json):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `op` | enum | yes | One of: `applyEdits`, `renderStills`, `shotDetails`, `seek`, `canvas`, `getProject`, `seedLibrary`, `swapImageSources`, `flushSave`. |
| `args` | object | no |  |
| `timeoutMs` | integer | no |  |

Responses:

| Status | Meaning |
| --- | --- |
| 200 | The op's result. |
| 400 | Invalid request. |
| 401 | Missing, invalid or revoked key. |
| 403 | The key lacks the scope, or the key's owner has view-only access to the workspace (code `forbidden`). |
| 404 | Not found. |
| 409 | No builder tab is connected (code `tab_gone`: reopen the project and attach again), another tab took over mid-call (code `detached`), or the remake ended (code `stage`). |
| 413 | The answer could be over the budget (code `too_large`). |
| 422 | The op threw in the page (code `lab_error`). |
| 429 | Rate limited, or a monthly cap reached. |
| 504 | The tab did not answer in time (code `tab_timeout`). |

Response body (200):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `result` | any | no |  |

Example (curl):

```bash
curl -X POST https://api.raylight.app/v1/remakes/$ID/lab \
  -H "Authorization: Bearer $RAYLIGHT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '"string"'
```

## More

- Previous: [Make an open editor tab the builder](https://www.raylight.app/docs/reference/post-v1-remakes-id-attach.md)
- Next: [Generate one backdrop](https://www.raylight.app/docs/reference/post-v1-remakes-id-backdrops.md)
- All docs: https://www.raylight.app/llms.txt
- Everything in one file: https://www.raylight.app/llms-full.txt
- OpenAPI: https://api.raylight.app/v1/openapi.json
