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

# Upload a file

> Upload a file (image, video, audio, font, or CSV) to be used when creating videos. The returned URL can be used in POST /videos.



## OpenAPI

````yaml POST /files
openapi: 3.1.0
info:
  version: 1.0.0
  title: Hera.Video API
  description: API for motion graphics video generation
servers:
  - url: https://api.hera.video/v1
security: []
paths:
  /files:
    post:
      summary: Upload a file
      description: >-
        Upload a file (image, video, audio, font, or CSV) to be used when
        creating videos. The returned URL can be used in POST /videos.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: >-
                    The file to upload. Supported types: images (PNG, JPEG, GIF,
                    SVG, WebP, BMP), videos (MP4, MPEG, WebM, MOV, AVI, FLV,
                    MPG, WMV, 3GP), audio (MP3, WAV, AAC), fonts (TTF, OTF, EOT,
                    WOFF, WOFF2), and CSV. Max size: 10 MB.
              required:
                - file
      responses:
        '200':
          description: >-
            File uploaded successfully. Returns the public URL of the stored
            file.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadFileOutput'
        '400':
          description: Invalid request — missing file, unsupported type, or file too large.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: 'Unsupported file type: text/plain'
                required:
                  - error
      security:
        - ApiKeyAuth: []
components:
  schemas:
    UploadFileOutput:
      type: object
      properties:
        url:
          type: string
          description: >-
            Public URL of the uploaded file. Use this URL in POST /videos fields
            that accept a URL.
          example: >-
            https://your-supabase-url.supabase.co/storage/v1/object/public/images/api-uploads/abc123.png
      required:
        - url
      description: Response after successfully uploading a file.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your API key for authenticating requests.

````