Attaching a file
Click the paperclip icon or drag-and-drop into the message input. Supported types:
- Images — PNG, JPEG, WebP, GIF, SVG (up to 20 MB)
- PDFs — up to 20 MB; auto-converted to text + page images if the model doesn’t support PDF natively
- Audio — MP3, WAV, WebM, OGG (up to 25 MB)
- Text & code —
.txt, .md, .csv, .json, .py, .ts, .sql, .yaml, .html…
- MS Office & OpenDocument —
.doc[x], .xls[x], .ppt[x], .odt, .ods, .odp
File type is detected via magic bytes, not the filename extension. If a model doesn’t support the file type, you’ll get a clear error before the call is billed.
Reusing a generated image
Generated images carry a paperclip icon in the corner. Click it to attach the image to your next message — no re-upload, no lost quality.
The file appears as a small chip above the input zone with a thumbnail and filename. Hover to see a larger preview, download it, or re-attach it with one click.
File cards in the chat
User-attached images show as compact chips with a hover preview (larger image + download + re-attach icons). Model-generated images render full-size inline so you can judge the output.
Downloading
Every file in a chat — attached or generated — has a Download button that appears on hover. Downloads go through our signed-URL proxy, so the link is safe to share temporarily but not publicly.
Access and sharing
Files cascade access from the chat they’re attached to:
- If you can see the chat, you can see its files (cascade via message references)
- If you uploaded the file, you can always see it (even if it’s orphaned — not yet attached anywhere)
- API keys inherit workspace-level access to files uploaded via
/v1/files; Playground files are separate and follow chat sharing
See Sharing for details and Files API for API-side file management.