> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.erlcrussia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Personal files

> Private AI chat attachments and user audio.

Personal files are AI chat attachments, microphone recordings and speech output. A file is only available to its owner with an active website session; a team API key or a file link does not give access.

## Limits

* up to 25 MB per file, up to 1 GB and 1000 files per user;
* uploaded files are kept until deleted; microphone recordings and speech output for 24 hours;
* AI reads images, PDF and text; archives are stored but not unpacked;
* HTML, SVG and other active documents are always downloaded, never opened in the browser.

## Routes

| API V3 | Website | |
| - | - | - |
| `GET /v3/user-assets` | `GET /api/v3/ai/files` | List files |
| `POST /v3/user-assets?name=…` | `POST /api/v3/ai/files?name=…` | Upload |
| `GET /v3/user-assets/{id}` | — | File details |
| `GET`/`HEAD /v3/user-assets/{id}/content` | `GET /api/v3/ai/files/{id}/content` | Content |
| `DELETE /v3/user-assets/{id}` | `DELETE /api/v3/ai/files/{id}` | Delete |

```javascript theme={null}
const res = await fetch(`/api/v3/ai/files?${new URLSearchParams({ name: file.name })}`, {
  method: "POST",
  credentials: "include",
  headers: { "Content-Type": "application/octet-stream" },
  body: file,
});
const asset = await res.json();
// asset.id is then sent as an attachment in POST /api/v3/ai/chat
```

## Errors

| Response | Meaning |
| - | - |
| 401 | No active session |
| 404 | The file belongs to someone else, was deleted or expired |
| 413 | File size or quota exceeded |
| 415 | Unsupported audio format |
| 429 | Rate limit exceeded |
| 503 | Storage is temporarily unavailable |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.