> ## 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.

# Upload signed contract version

> Marks the contract as signed from PDFs signed in a third-party tool: attaches them as the signed files, moves the contract to signed and stamps `signatureDate`, which also sets the start date when the contract type derives it from the signature date. Accepted from draft, negotiating, or signing when the signature was sent through a third-party tool. First call `POST /files/upload-url` once per PDF, `PUT` each file body to the returned URL, then call this endpoint with the returned keys.



## OpenAPI

````yaml /openapi-2025-01-29.alpha.json post /contracts/{id}/signed-version
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-29.alpha


    This documentation is for API version `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-29.alpha"
    ```
  version: 2025-01-29.alpha
  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:
  /contracts/{id}/signed-version:
    post:
      tags:
        - Contracts
      summary: Upload signed contract version
      description: >-
        Marks the contract as signed from PDFs signed in a third-party tool:
        attaches them as the signed files, moves the contract to signed and
        stamps `signatureDate`, which also sets the start date when the contract
        type derives it from the signature date. Accepted from draft,
        negotiating, or signing when the signature was sent through a
        third-party tool. First call `POST /files/upload-url` once per PDF,
        `PUT` each file body to the returned URL, then call this endpoint with
        the returned keys.
      operationId: ContractController_uploadSignedVersion
      parameters:
        - name: id
          required: true
          in: path
          description: The unique identifier (UUID) of the contract
          schema:
            example: 550e8400-e29b-41d4-a716-446655440000
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractSignedVersionDto'
      responses:
        '204':
          description: Contract signed
        '401':
          description: Unauthorized - Invalid or missing API key
        '403':
          description: Forbidden - Insufficient permissions
        '409':
          description: >-
            The contract is already signed or canceled, or a Tomorro or DocuSign
            signature is in progress.
        '429':
          description: Too Many Requests - Rate limit exceeded
      security:
        - X-API-KEY: []
components:
  schemas:
    ContractSignedVersionDto:
      type: object
      properties:
        files:
          minItems: 1
          maxItems: 20
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                minLength: 1
                description: >-
                  Storage key returned by `POST /files/upload-url` (or
                  tomorro_create_file_upload_url).
                example: >-
                  signedFiles/550e8400-e29b-41d4-a716-446655440000/files/b3b7bd7b-85f9-49e7-843d-71f656df5ca5
              name:
                type: string
                minLength: 1
                pattern: \.pdf$
                description: Filename of the signed PDF, including the `.pdf` extension.
                example: nda-signed.pdf
              contentType:
                type: string
                enum:
                  - application/pdf
                description: Must be application/pdf — only PDF files are accepted.
                example: application/pdf
            required:
              - key
              - name
              - contentType
            additionalProperties: false
          description: The signed PDFs (1–20), main document first, then its annexes.
        signatureDate:
          type: string
          format: date-time
          description: >-
            When the last signatory signed in the signature tool (ISO 8601), not
            when this call is made. Cannot be in the future.
          example: '2026-09-07T10:15:00.000Z'
      required:
        - files
        - signatureDate
      additionalProperties: false
  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

````