> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evermind.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload multimodal data

> Generate a pre-signed S3 upload URL for multimodal content. Upload signature valid for 15 minutes, download signature valid for 7 days.

**Note:** This endpoint is a transparent proxy to MMS. Request body must use `{objectList: [...]}` array wrapper. Response and error format follow MMS conventions (not the standard ErrorResponse schema used by other endpoints).


## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/object/sign
openapi: 3.1.0
info:
  title: EverOS API
  description: >-
    Enterprise-grade intelligent memory system for AI agents. Extracts,
    structures, and retrieves information from conversations.
  version: 1.0.0
  contact:
    name: EverOS Team
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api.evermind.ai
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Memories
    description: Memory ingestion, retrieval, search, and deletion
  - name: Groups
    description: Group resource CRUD operations
  - name: Senders
    description: Sender resource CRUD operations
  - name: Settings
    description: Global settings management
  - name: Tasks
    description: Async task status tracking
  - name: Storage
    description: Multimodal content storage (pre-signed upload)
paths:
  /api/v1/object/sign:
    post:
      tags:
        - Storage
      summary: Upload multimodal data
      description: >-
        Generate a pre-signed S3 upload URL for multimodal content. Upload
        signature valid for 15 minutes, download signature valid for 7 days.
      operationId: signObjectUpload
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectSignRequest'
      responses:
        '200':
          description: Pre-signed URL generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectSignResponse'
        '400':
          description: >-
            MMS validation error (status=200 with error field, MMS uses HTTP 200
            for all responses)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectSignResponse'
              example:
                error: 参数验证失败
                request_id: uuid-here
                status: 2018
                result:
                  data: 'objectList: non zero value required'
        '500':
          description: MMS internal server error or Gateway proxy failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectSignResponse'
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: Python
          source: |-
            from everos_cloud import EverOS

            client = EverOS()
            obj = client.v1.object

            response = obj.sign(
                object_list=[
                    {
                        "file_id": "<string>",
                        "file_name": "<string>",
                        "file_type": "<string>"
                    }
                ]
            )
            print(response)
        - lang: cURL
          source: |-
            curl --request POST \
              --url 'https://api.evermind.ai/api/v1/object/sign' \
              --header 'Authorization: Bearer <api_key>' \
              --header 'Content-Type: application/json' \
              --data '{}'
components:
  schemas:
    ObjectSignRequest:
      type: object
      required:
        - objectList
      properties:
        objectList:
          type: array
          description: List of files to sign (supports batch signing)
          items:
            $ref: '#/components/schemas/ObjectSignItemRequest'
          minItems: 1
    ObjectSignResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message. 'OK' on success, error description on failure
          examples:
            - OK
            - 参数验证失败
        request_id:
          type: string
          description: MMS request tracking ID
        status:
          type: integer
          description: MMS status code. 0 = success, 2018 = validation error
          examples:
            - 0
            - 2018
        result:
          type: object
          properties:
            data:
              type: object
              description: >-
                On success: contains objectList. On validation error: string
                error message.
              properties:
                objectList:
                  type: array
                  items:
                    $ref: '#/components/schemas/ObjectSignItem'
    ObjectSignItemRequest:
      type: object
      required:
        - fileName
        - fileType
        - fileId
      properties:
        fileName:
          type: string
          description: File name (may include extension)
          examples:
            - photo.png
        fileType:
          type: string
          description: 'File type category. Max size: image=10MB, file=100MB, video=500MB'
          enum:
            - image
            - file
            - video
        fileId:
          type: string
          description: Business-defined unique file identifier
          examples:
            - file_abc123
    ObjectSignItem:
      type: object
      properties:
        fileName:
          type: string
          description: Echoed file name from request
        fileType:
          type: string
          description: Echoed file type from request
          enum:
            - image
            - video
            - file
        fileId:
          type: string
          description: Echoed file ID from request
        objectKey:
          type: string
          description: S3 object key (generated by MMS)
        objectSignedInfo:
          $ref: '#/components/schemas/ObjectSignedInfo'
    ObjectSignedInfo:
      type: object
      properties:
        url:
          type: string
          description: Pre-signed S3 upload URL
        fields:
          type: object
          additionalProperties:
            type: string
          description: >-
            Form fields required for S3 POST upload (key, policy, x-amz-*
            headers, Content-Type)
        maxSize:
          type: integer
          description: 'Maximum file size in bytes. image: 10MB, file: 100MB, video: 500MB'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      x-default: Bearer <api_key>
      description: >-
        Bearer authentication header of the form Bearer 'api_key', obtain your
        API key from [everos.evermind.ai](https://everos.evermind.ai).

````