We use cookies to enhance your experience and measure how the site performs. Choose "Essential Only" to disable analytics. Read our Privacy Policy.

    Odeus Docs

    Upload Attachment API

    Upload files to be used with Assistants

    Upload Attachment API

    Upload files to be used with Assistants

    The Assistants API will be deprecated on 30 April.

    For new projects, we recommend using the Agents API. The upload attachments endpoint remains the same, but you should reference it from the Agents API documentation.

    See the migration guide to learn about the differences.

    Upload files that can be referenced in Assistant conversations using their attachment IDs.

    To use the API you need an API key. You can create API Keys in your Workspace settings.

    Request Format

    This endpoint accepts multipart/form-data requests with a single file upload.

    ParameterTypeRequiredDescription
    fileFileYesThe 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 Assistant API by including it in the attachmentIds array either at the assistant level or message level.

    Migrating to Agents API

    The upload attachment endpoint remains the same across both APIs. For new projects, reference the Agents API documentation:

    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"