# Sign the library uploads

> Signed uploads for the files that feed the motion library (the source, the study, the plan applied, backdrops, glitches, the report and the side by side), stored privately. Answers no uploads when you or the workspace turned data sharing off.

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

**Sign the library uploads**

Signed uploads for the files that feed the motion library (the source, the study, the plan applied, backdrops, glitches, the report and the side by side), stored privately. Answers no uploads when you or the workspace turned data sharing off.

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 |
| --- | --- | --- | --- |
| `files` | object[] | yes |  |
| `files[].name` | enum | yes | One of: `source.mp4`, `source.mov`, `source.webm`, `study.json`, `plan.applied.json`, `backdrops.json`, `glitches.json`, `report.md`, `side-by-side.mp4`. |
| `files[].bytes` | integer | yes |  |
| `files[].sha256` | string | yes |  |
| `files[].mime` | string | yes |  |

Responses:

| Status | Meaning |
| --- | --- |
| 200 | One upload per file, or none. |
| 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 | The remake is not at a stage that takes this call, or it already ended (code `stage`). |
| 413 | A file is over its size cap. |
| 429 | Rate limited, or a monthly cap reached. |

Response body (200):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `uploads` | object[] | yes |  |
| `uploads[].name` | enum | yes | One of: `source.mp4`, `source.mov`, `source.webm`, `study.json`, `plan.applied.json`, `backdrops.json`, `glitches.json`, `report.md`, `side-by-side.mp4`. |
| `uploads[].upload` | object | yes |  |
| `uploads[].upload.kind` | enum | yes | One of: `standard`, `tus`. |
| `uploads[].upload.uploadUrl` | url | no |  |
| `uploads[].upload.endpoint` | url | no |  |
| `uploads[].upload.signature` | string | no |  |
| `uploads[].upload.apiKey` | string | no |  |
| `uploads[].upload.bucket` | string | no |  |
| `uploads[].upload.objectName` | string | no |  |
| `uploads[].upload.contentType` | string | no |  |
| `uploads[].upload.chunkSize` | integer | no |  |

Example (curl):

```bash
curl -X POST https://api.raylight.app/v1/remakes/$ID/outputs \
  -H "Authorization: Bearer $RAYLIGHT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "files": [
    {
      "name": "source.mp4",
      "bytes": 1,
      "sha256": "<sha256>",
      "mime": "<mime>"
    }
  ]
}'
```

## More

- Previous: [Report progress](https://www.raylight.app/docs/reference/post-v1-remakes-id-progress.md)
- Next: [Finish a remake](https://www.raylight.app/docs/reference/post-v1-remakes-id-complete.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
