Supported Content Types
Images
JPG, PNG, GIF, WebPMax size: 10 MB
Documents
PDF, DOC, HTML, TXTMax size: 100 MB
Audio & Video
MP3, WAV, MP4, WebMMax size: 500 MB
How It Works
When you include multimodal content in a message, EverOS processes the file to extract textual information and other relevant details, then stores them as part of the user’s memory — just like text messages. The key difference from text-only messages is that thecontent field becomes an array of content items instead of a plain string.
Content Item Structure
Each item in the content array has atype field that determines how EverOS processes it:
| Type | Description | Required Fields |
|---|---|---|
text | Plain text content | text |
image | Image file | uri |
audio | Audio recording | uri |
doc | Document (TXT, DOC) | uri |
pdf | PDF document | uri |
html | HTML content | uri |
email | Email message | uri |
The
uri field contains an object key returned by the upload flow (see below), not a public URL.Upload Flow (API)
Uploading multimodal data via the API is a 3-step process:Get a pre-signed upload URL
Call Response (key fields):Save the
POST /api/v1/object/sign to get a pre-signed S3 upload URL and an objectKey for your file.objectKey — you will need it in Step 3.Upload the file to S3
Use the returned A successful upload returns HTTP 204 No Content.
objectSignedInfo.url and fields to upload your file via an S3 POST request.Batch Upload
You can sign multiple files in a single request by passing multiple items in theobjectList array:
objectKey values in your message content array.
Upload with Python SDK
Mixing Text and Files
A single message can contain both text and multiple file attachments. EverOS processes all content items together to build a complete memory:Text items have no limit per message. Non-text items (image, audio, doc, etc.) are limited to 10 per message. The total request body must be under 300 KB (file content is stored on S3, not in the request body).
Works with All Memory Endpoints
The multimodal content format works with all three add memories endpoints:| Endpoint | Use Case |
|---|---|
POST /api/v1/memories | Personal memories with attachments |
POST /api/v1/memories/group | Group conversations with shared files |
POST /api/v1/memories/agent | Agent trajectories with tool outputs (screenshots, documents) |
Content Item Reference
| Field | Type | Description |
|---|---|---|
type | string | Required. One of: text, image, audio, doc, pdf, html, email |
text | string | null | Content body. For type: text, this is the actual text |
uri | string | null | Object key from the upload flow (returned by POST /api/v1/object/sign) |
name | string | null | File name |
ext | string | null | File extension (e.g., png, mp3, pdf) |
source | string | null | Content source (e.g., google_doc, notion, confluence, zoom) |
source_info | object | null | Source-related traceability metadata |
extras | object | null | Type-specific extra fields |
Next Steps
Upload API Reference
See the full API specification for file signing
Add Memories API
See the add memories endpoint with content array format