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

# Create file upload signed URL

> Returns a short-lived pre-signed S3 URL the client must `PUT` the file body to. Once the upload is complete, pass the returned `key` to the endpoint that consumes it (e.g. `POST /contracts/{id}/versions`).



## OpenAPI

````yaml /openapi-2025-01-15.init.json post /files/upload-url
openapi: 3.0.0
info:
  title: Tomorro API
  description: >
    The Tomorro Public API enables you to programmatically manage contracts,
    members, and counterparties. Build powerful integrations that automate your
    contract management workflows.


    ## API Version: 2025-01-15.init


    This documentation is for API version `2025-01-15.init`.


    > **Warning:** This version is deprecated. This version is deprecated.
    Please upgrade to 2025-01-29.alpha.


    ### Using this version

    ```

    curl -X GET https://api.tomorro.com/members \
      -H "x-api-key: YOUR_API_KEY" \
      -H "tomorro-version: 2025-01-15.init"
    ```
  version: 2025-01-15.init
  contact: {}
servers:
  - url: https://api.tomorro.com/v2
    description: Production
  - url: https://api.demo.tomorro.com/v2
    description: Demo
  - url: http://localhost:3015
    description: Local Development
security: []
tags: []
paths:
  /files/upload-url:
    post:
      tags:
        - Files
      summary: Create file upload signed URL
      description: >-
        Returns a short-lived pre-signed S3 URL the client must `PUT` the file
        body to. Once the upload is complete, pass the returned `key` to the
        endpoint that consumes it (e.g. `POST /contracts/{id}/versions`).
      operationId: FileController_createUploadSignedUrl
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileUploadUrlDto'
      responses:
        '201':
          description: Pre-signed upload URL created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileUploadSignedUrlResponseDto'
        '401':
          description: Unauthorized - Invalid or missing API key
        '403':
          description: Forbidden - Insufficient permissions
        '429':
          description: Too Many Requests - Rate limit exceeded
      security:
        - X-API-KEY: []
components:
  schemas:
    FileUploadUrlDto:
      type: object
      properties:
        contentType:
          type: string
          description: MIME content type of the file to upload.
          example: application/pdf
      required:
        - contentType
    FileUploadSignedUrlResponseDto:
      type: object
      properties:
        url:
          type: string
          description: Pre-signed URL. PUT the file body directly here.
          example: https://s3.eu-west-3.amazonaws.com/secured-storage.getleeway
        key:
          type: string
          description: Storage key for the uploaded file.
          example: >-
            signedFiles/550e8400-e29b-41d4-a716-446655440000/files/b3b7bd7b-85f9-49e7-843d-71f656df5ca5
      required:
        - url
        - key
  securitySchemes:
    X-API-KEY:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API key for authentication. Get your key at
        https://app.tomorro.com/settings/integrations?integration=api-key

````