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

# Add contract attachment

> Attaches a previously uploaded file (PDF, Word, Excel…) to the contract, outside its main document — e.g. the signature certificate issued by a third-party signature tool. First call `POST /files/upload-url` to obtain a pre-signed URL, `PUT` the file body to S3, then call this endpoint with the returned `key`.



## OpenAPI

````yaml /openapi-2025-01-29.alpha.json post /contracts/{id}/attachments
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}/attachments:
    post:
      tags:
        - Contracts
      summary: Add contract attachment
      description: >-
        Attaches a previously uploaded file (PDF, Word, Excel…) to the contract,
        outside its main document — e.g. the signature certificate issued by a
        third-party signature tool. First call `POST /files/upload-url` to
        obtain a pre-signed URL, `PUT` the file body to S3, then call this
        endpoint with the returned `key`.
      operationId: ContractController_addAttachment
      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/ContractAddAttachmentDto'
      responses:
        '204':
          description: Attachment added
        '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:
    ContractAddAttachmentDto:
      type: object
      properties:
        key:
          type: string
          minLength: 1
          description: Storage key returned by `POST /files/upload-url`.
          example: >-
            signedFiles/550e8400-e29b-41d4-a716-446655440000/files/b3b7bd7b-85f9-49e7-843d-71f656df5ca5
        name:
          type: string
          minLength: 1
          description: Original filename of the uploaded file, including extension.
          example: signature-certificate.pdf
        contentType:
          type: string
          minLength: 1
          description: MIME content type of the uploaded file.
          example: application/pdf
        isSharedWithGuest:
          description: >-
            `true`: also shared with the contract guests (counterparties).
            `false` (default): visible to organization members only.
          example: true
          type: boolean
      required:
        - key
        - name
        - contentType
      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

````