Skip to main content
You send files inside the chat messages, in the standard OpenAI content-part format. There is no separate upload step. Put each file in a message’s content list, next to your text.
The model must accept the file type. Images and audio go to the model directly. PDFs are converted to text first, so every model can read them.

Supported file types

Images

To send more than one image, add more image_url parts to the same message.

PDFs

Send a PDF as a file part with a filename and the file_data. file_data is a public URL or a base64 data URL that starts with data:application/pdf;base64,.
How PDFs are read. The endpoint converts every PDF to text (markdown) before the model reads it. This works well for PDFs that contain text, such as reports, contracts and exported documents. A scanned PDF (a photo of each page, with no text layer) gives little or no text. For scanned pages, send each page as an image instead. The endpoint always uses this conversion. If you send a plugins setting that asks for another PDF engine, the endpoint replaces it.

Audio

Send audio as an input_audio part with base64 data and its format. Audio URLs are not accepted.
Python

Size limit

A request can be at most 30 MB, including all text and files. Base64 makes a file about 33% larger, so the largest file you can send inline is about 22 MB.
  • For a larger image or PDF, send a URL instead of base64. A URL adds almost nothing to the request size.
  • A request over the limit returns 413:
json

Privacy and security

  • Your files are not stored. The endpoint forwards each request and does not save your messages or files. If a request fails, our error logs can keep a short excerpt of its text to help us fix the problem. Files are never logged.
  • Only providers that do not collect data. The endpoint sends every request only to model providers that do not store or train on your data. You cannot turn this off.
  • PDFs are converted by a document parser before the model reads them. The parser gets the PDF only to convert it.
  • Use short-lived URLs. The model provider downloads a file URL directly, so the URL must be public. For private files, use a signed URL that expires after a few minutes, such as an S3 or R2 presigned URL.
  • Base64 for confidential files. A base64 file travels only inside your HTTPS request, and no public URL exists.

Tips

  • Put the text instruction first and the files after it in the same message.
  • Every file adds input tokens. For a long PDF, ask about specific sections, or send only the pages you need.
  • When you ask several questions about one file, send the file again with each request. The endpoint does not keep files between requests.