# Renders: Scarleta API reference

Page: https://www.scarleta.ai/docs/reference/renders
Base URL: https://api.scarleta.ai. Authentication: `Authorization: Bearer $SCARLETA_API_KEY`.
Operations: 1.

## GET /v1/audio/{fileId}/children

Operation id: `list_file_renders`

**List the files made from a file**

Returns the files that were made from one of your files: crops, effects, noise-reduced versions and stems (the "renders" of a take), newest first. Archived renders are left out. Each entry has the `audio_url` to use when analysing it. A file with no renders, a file that does not exist and a file that is not yours all answer an empty list; the route never reveals another account's files. On success this route answers `{ data, meta }`, and `meta` carries counts but no `request_id`. If the database is briefly unavailable the route answers 503 `db_unavailable`; retry after a short wait.

Access: API key required; free and paid accounts. Cost: no token cost.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `fileId` | path | string | yes | The `audio_id` of one of your files. A trailing media extension such as `.wav` is ignored. |

### Response fields (inside `data`)

| Field | Type | Description |
| --- | --- | --- |
| `[].audio_id` | string | Registry identifier of the derived file; it starts with `audio_`. |
| `[].name` | string \| null | Display name of the derived file, or null. |
| `[].relationship_type` | string \| null | How it was made from the parent, for example `crop`, `effect`, `stem` or `noise_reduction`. |
| `[].derived_role` | string \| null | For a stem, which part it is (for example `vocals`); null for the other kinds. |
| `[].format` | string \| null | File format, for example `wav`, when known. |
| `[].file_size_bytes` | number \| null | Size in bytes, when known. |
| `[].duration_seconds` | number \| null | Length of the audio, when known. |
| `[].uploaded` | number \| null | When the file was created, in milliseconds since the Unix epoch. |
| `[].analyzed_categories` | array<string> | Analysis categories this file already has results for. |
| `[].audio_url` | string \| null | URL to pass as `audio_url` when running an analysis on this file. |
| `[].playback_url` | string \| null | Link for playing the file in a browser; the same as `audio_url` where that link is signed. |

### Responses

200: The renders of the file, newest first.

```json
{
  "data": [
    {
      "audio_id": "audio_a81e5c40d7f2",
      "name": "Stem: vocals",
      "relationship_type": "stem",
      "derived_role": "vocals",
      "format": "wav",
      "file_size_bytes": 5290044,
      "duration_seconds": 30.2,
      "uploaded": 1791333870854,
      "analyzed_categories": [],
      "audio_url": "https://api.scarleta.ai/v1/audio/media/9b2c7d1e-5a40-4f83-b6c9-0d1e2f3a4b5c.wav",
      "playback_url": "https://api.scarleta.ai/v1/audio/media/9b2c7d1e-5a40-4f83-b6c9-0d1e2f3a4b5c.wav"
    }
  ],
  "meta": {
    "count": 1
  }
}
```

401: Missing, malformed, unknown or revoked API key.

```json
{
  "error": {
    "code": "invalid_key",
    "message": "Invalid or revoked API key",
    "request_id": "req_5b1c0f3e-2d41-4a8e-9a57-0c1b2d3e4f50",
    "docs_url": "https://www.scarleta.ai/docs/errors#invalid_key"
  }
}
```

429: Over the account request budget or the per-minute cap of this route. Wait for the `Retry-After` header, then retry.

```json
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded",
    "request_id": "req_5b1c0f3e-2d41-4a8e-9a57-0c1b2d3e4f50",
    "docs_url": "https://www.scarleta.ai/docs/errors#rate_limit_exceeded"
  }
}
```

503: Temporary platform condition; retry shortly.

```json
{
  "error": {
    "code": "auth_unavailable",
    "message": "Authentication service temporarily unavailable",
    "request_id": "req_5b1c0f3e-2d41-4a8e-9a57-0c1b2d3e4f50",
    "docs_url": "https://www.scarleta.ai/docs/errors#auth_unavailable"
  }
}
```

### Error codes

[`auth_unavailable`](https://www.scarleta.ai/docs/errors#auth_unavailable), [`db_unavailable`](https://www.scarleta.ai/docs/errors#db_unavailable), [`invalid_auth_format`](https://www.scarleta.ai/docs/errors#invalid_auth_format), [`invalid_key`](https://www.scarleta.ai/docs/errors#invalid_key), [`invalid_key_format`](https://www.scarleta.ai/docs/errors#invalid_key_format), [`missing_api_key`](https://www.scarleta.ai/docs/errors#missing_api_key), [`missing_auth`](https://www.scarleta.ai/docs/errors#missing_auth), [`rate_limit_exceeded`](https://www.scarleta.ai/docs/errors#rate_limit_exceeded), [`rate_limit_unavailable`](https://www.scarleta.ai/docs/errors#rate_limit_unavailable), [`unauthorized`](https://www.scarleta.ai/docs/errors#unauthorized)

### Example

```bash
FILEID="YOUR_FILEID"
curl "https://api.scarleta.ai/v1/audio/$FILEID/children" \
  -H "Authorization: Bearer $SCARLETA_API_KEY"
```
