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

# Upload a file

> Upload a file to object storage. The file is associated with the authenticated customer and can optionally be linked to a builder.



## OpenAPI

````yaml /openapi.yaml post /storage/files
openapi: 3.1.0
info:
  version: 0.0.5
  title: Sutro Public API
  description: >-
    The API through which apps can be generated, deployed, monitored and
    updated.
servers:
  - description: Production
    url: https://sapi.withsutro.com
security:
  - apiAuth: []
    builderAuth: []
    apiClientId: []
tags:
  - name: projects
    description: >
      Create and manage projects. Projects are the top-level container for all
      Sutro resources including applications,

      specifications, and team collaboration.
  - name: specifications
    description: >
      Generate and retrieve application specifications from attachments using
      AI. Specifications describe the data models,

      actions, and UI structure for your application.
  - name: applications
    description: >
      Generate applications, manage versions, and configure core settings.
      Applications are the executable implementations

      of your specifications.
  - name: attachments
    description: >
      Upload, manage, and delete file attachments for applications. Attachments
      can include Figma files,

      documents, and other assets used in application generation.
  - name: data-models
    description: >
      Define and manage data models and their fields. Models represent the
      entities in your application

      (e.g., Users, Products, Orders) and their properties.
  - name: actions-effects
    description: >
      Actions are things that your application can do, and an action is made up
      of effects.
  - name: triggers
    description: >
      Configure triggers that start workflows automatically based on events like
      schedules, webhooks, or data changes.
  - name: figma-integration
    description: >
      Import Figma designs and generate static code from frames. Connect your
      Figma files to automatically

      generate UI components.
  - name: deployments-assets
    description: >
      Deploy application versions and download generated code bundles. Manage
      your application releases

      and access generated artifacts.
  - name: secrets-configuration
    description: >
      Manage application secrets and environment variables securely. Secrets are
      encrypted and injected

      into your application at runtime.
  - name: ai-assistant
    description: >
      Assistant endpoints for making changes to an application using natural
      language.

      Messages are stored per project to maintain conversation history.
  - name: builders
    description: >
      Create and manage builders. Builders are end users or clients who build
      and run apps

      that integrate with Sutro.
  - name: storage
    description: >
      Upload, download, and manage files in object storage. Files are scoped to
      the authenticated

      customer and can optionally be associated with a builder.
paths:
  /storage/files:
    post:
      tags:
        - storage
      summary: Upload a file
      description: >-
        Upload a file to object storage. The file is associated with the
        authenticated customer and can optionally be linked to a builder.
      operationId: uploadFile
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: The file to upload
                customerId:
                  type: string
                  format: uuid
                  description: The ID of the customer uploading the file
                builderId:
                  type: string
                  format: uuid
                  description: Optional builder ID to associate with the file
              required:
                - file
                - customerId
      responses:
        '201':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoredObjectRecord'
        '400':
          description: >-
            Bad request — missing file, missing or invalid customerId, or
            invalid builderId
components:
  schemas:
    StoredObjectRecord:
      title: Stored Object
      type: object
      description: A file stored in object storage with metadata and timestamps
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the stored object
        name:
          type: string
          description: The original file name
        size:
          type: integer
          description: File size in bytes
        mimeType:
          type: string
          description: MIME type of the file
        bucket:
          type: string
          description: The storage bucket name
        path:
          type: string
          description: The full path in object storage
        customerId:
          type: string
          format: uuid
          description: The ID of the customer who owns this file
        builderId:
          oneOf:
            - type: string
              format: uuid
            - type: 'null'
          description: The ID of the builder associated with this file, if any
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        deletedAt:
          oneOf:
            - type: string
              format: date-time
            - type: 'null'
      required:
        - id
        - name
        - size
        - mimeType
        - bucket
        - path
        - customerId
        - createdAt
        - updatedAt
  securitySchemes:
    apiAuth:
      description: >-
        Mutual TLS authentication using client certificates. Requires three
        certificate files from your security bundle: `ca.crt` (CA certificate to
        verify the server), `mtls.key` (client private key), and `mtls.crt`
        (client certificate). In curl, use: `--cacert ca.crt --key mtls.key
        --cert mtls.crt`
      type: mutualTLS
    builderAuth:
      description: Builder authentication and authorization
      type: http
      scheme: bearer
      bearerFormat: jwt
    apiClientId:
      description: A unique identifier for the API Client making a request
      type: apiKey
      in: header
      name: x-sutro-api-client

````