Attachments
Upload originals of any type; read, unpack, edit and download the result.
Attach files of any type: ZIP archives, documents, source code, images or files without an extension. Each upload keeps the complete original on the backend.
Say what you want done with the files. The model can inspect them, read supported formats, unpack a ZIP, edit working copies and export the result as a download. Image analysis and image generation keep using their existing tools.
{
"chat_id": "project-review",
"tools": true,
"messages": [
{
"role": "user",
"content": "Unpack this project, fix the README and give me a new ZIP.",
"attachment_ids": ["a904577a208845c98dbce47c1d4655f5"]
}
]
}Working with files
list_filestoolList attached originals and files in this conversation's working directory.
read_filetoolRead text and source files in pages, or extract text from PDF, DOCX, PPTX and XLSX. PDF reading uses pypdf.
copy_filetoolCopy an attached original or working file byte-for-byte into a working copy.
write_filetoolWrite edited text into the conversation's working directory; attached originals stay unchanged.
edit_filetoolReplace an exact UTF-8 text fragment in a working copy. The match must be unique unless replace_all=true.
extract_archivetoolUnpack a ZIP into the conversation's working directory within the configured expansion limits.
export_filetoolExport a working file or package a directory as a ZIP and return a download link.
File processing needs tools=true. Uploading accepts every format; reading or editing depends on the available parser or tool. Unknown binary formats remain available as originals, and the model can explain what further conversion is needed.
For a small change in a large text file, copy_file creates a working copy and edit_file replaces the requested fragment without regenerating the whole file. export_file returns the complete edited result.
Images
PNG, JPEG, WebP and GIF retain their chat previews. The agent can use analyze_image to inspect them or generate_image with reference_images to make a changed or new image.
Older saved chats with inline text attachments remain readable. New text uploads keep the full file rather than a browser-truncated copy.
Limits
UPLOADS_MAX_FILESint · default 8Files per upload request and per user message.
UPLOADS_MAX_BYTESint · default 20000000Per original or exported file, 20 MB by default.
UPLOADS_MAX_EXTRACTED_BYTESint · default 100000000Maximum expanded ZIP content, 100 MB by default.
UPLOADS_MAX_ARCHIVE_MEMBERSint · default 1000Maximum number of members in an archive.
UPLOADS_DIRpath · default data/uploadsWhere originals, exports and conversation work files live.
UPLOADS_ENABLEDbool · default trueEnable file uploads and the conversation's file tools.
GET /api/v1/capabilities reports uploads, uploads_max_bytes and uploads_max_files. The composer checks those limits before uploading and shows size errors in the selected UI language. The backend also checks them; oversized files return 413 with code file_too_large and details.max_bytes and details.filename.
Downloads and sharing
Uploads and attachment processing require an active session. Downloads also require a session, except when the file is referenced by a currently shared chat. Removing the share removes public access. Reopening a chat keeps its original references and exported download links.