Upload Attachment API
Upload files to be used with Agents
Upload Attachment API
Upload files to be used with Agents
⚠️ Using our API via a dedicated deployment? Just replace
api.odeus.aiwith your deployment's base URL:<deployment-url>/api/public
This is the new Agents API with native Vercel AI SDK compatibility. The upload attachment endpoint is shared across both APIs. If you're using the legacy Assistants API, see the migration guide.
Upload files that can be referenced in Agent conversations using their attachment IDs.
Requires an API key with the
KNOWLEDGE_FOLDER_APIscope. You can create API Keys in your Workspace settings.
Request Format
This endpoint accepts multipart/form-data requests with a single file upload.
| Parameter | Type | Required | Description |
|---|---|---|---|
file | File | Yes | The file you want to upload |
Response Format
The API returns the uploaded file information:
{
attachmentId: string;
file: {
name: string;
mimeType: string;
sizeInBytes: number;
}
}
Example
const axios = require("axios");
const FormData = require("form-data");
const fs = require("fs");
async function uploadAttachment() {
const form = new FormData();
form.append("file", fs.createReadStream("example.pdf"));
const response = await axios.post(
"https://api.odeus.ai/attachment/v1/upload",
form,
{
headers: {
...form.getHeaders(),
Authorization: "Bearer YOUR_API_KEY",
},
}
);
console.log(response.data);
// {
// attachmentId: "550e8400-e29b-41d4-a716-446655440000",
// file: {
// name: "example.pdf",
// mimeType: "application/pdf",
// sizeInBytes: 1234567
// }
// }
}
Error Handling
try {
const response = await axios.post('https://api.odeus.ai/attachment/v1/upload', ...);
} catch (error) {
if (error.response) {
switch (error.response.status) {
case 400:
console.error('No file provided');
break;
case 401:
console.error('Invalid API key');
break;
case 500:
console.error('Server error');
break;
}
}
}
The uploaded attachment ID can be used in the Agent API in two ways:
- Per-message (recommended): Include the attachment UUID in the message's
metadata.attachmentsarray when calling the Completions API - Agent-level: Include the attachment UUID in the
attachmentsarray when creating or updating an agent
Odeus intentionally blocks browser-origin requests to protect your API key and ensure your applications remain secure. For more information, please see our guide on API Key Best Practices.
OpenAPI
openapi: 3.0.0
info:
title: Odeus API
version: 3.0.0
servers:
- url: https://api.odeus.ai
security:
- bearerAuth: []
paths:
/attachment/v1/upload:
post:
tags:
- Attachments
summary: Upload an attachment
description: Upload a file that can be referenced in Agent conversations.
operationId: uploadAttachment
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: The file to upload
responses:
'200':
description: Successfully uploaded file
content:
application/json:
schema:
type: object
required:
- attachmentId
- file
properties:
attachmentId:
type: string
format: uuid
description: Unique identifier for the uploaded attachment
file:
type: object
required:
- name
- mimeType
- sizeInBytes
properties:
name:
type: string
description: Original filename
mimeType:
type: string
description: MIME type of the file
sizeInBytes:
type: integer
description: Size of the file in bytes
'400':
description: No file provided
content:
application/json:
schema:
type: object
properties:
error:
type: string
'401':
description: Invalid API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: API key as Bearer token. Format "Bearer YOUR_API_KEY"