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

# Work with files

> Send a file to a tool that takes one, or get back a file a run collects.

Some tools take a file, such as a receipt to upload, or return one, such as a statement to download. Pomerado keeps each file encrypted, only as long as the run needs it, and never opens it.

* [Send a file to a run](/guides/files/send-a-file): give a tool's file field a file ID, an https URL or a `data:` URI.
* [Get a file from a run](/guides/files/get-a-file): download a file from the run's result.

## Who can use files

Files need a signed-in caller: a Dashboard session, an MCP client signed in to Pomerado, or an API key with `runs:create`. A file belongs to the person who uploaded it; anyone else gets `not_found`.

## Limits

| Limit | Value |
| - | - |
| One file | 25 MiB |
| Files in one run | 10, and 50 MiB together |
| A `data:` URI | 512 KB |
| An unused upload | Erased after 1 hour |
| A file a run used | Erased when its job ends |
| A file a run returned | Erased after its first complete download, or after 30 minutes |

## Accepted types

Pomerado accepts PDF, common image, audio and video types, ZIP and office documents, and text formats such as plain text, CSV, Markdown, XML and JSON. `application/octet-stream` takes any other bytes. A file's first bytes must match its media type. Programs and scripts, such as `.exe`, `.sh` and `.js` files, are refused.

<Note>
  Pomerado doesn't scan files for malware. Open a downloaded file with the care you'd give any other.
</Note>

<Accordion title="Details">
  | Code | Meaning |
  | - | - |
  | `file_too_large` | The file is larger than `details.max_bytes`. |
  | `file_type_refused` | An executable, an unsupported type, or bytes that don't match the media type. |
  | `file_unavailable` | The file expired, wasn't uploaded yet, or another run already took it. |
  | `file_limit_exceeded` | The run has too many files, or too many bytes in total. |
  | `file_fetch_failed` | Pomerado couldn't fetch a URL input; `details.reason` says why. |

  See [errors](/errors) for every code.
</Accordion>


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