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

# Get contract signing files

> Returns everything a signature tool needs to run the signing ceremony for a contract that was sent for signature: the files to sign with short-lived pre-signed download URLs and page dimensions, the position of every signature and initials field on them, and the signatories. Typically called after receiving the `signature.requested` webhook. URLs expire after 5 minutes; re-call the endpoint to obtain fresh ones.



## OpenAPI

````yaml /openapi-2025-01-15.init.json get /contracts/{id}/signing-files
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:
  /contracts/{id}/signing-files:
    get:
      tags:
        - Contracts
      summary: Get contract signing files
      description: >-
        Returns everything a signature tool needs to run the signing ceremony
        for a contract that was sent for signature: the files to sign with
        short-lived pre-signed download URLs and page dimensions, the position
        of every signature and initials field on them, and the signatories.
        Typically called after receiving the `signature.requested` webhook. URLs
        expire after 5 minutes; re-call the endpoint to obtain fresh ones.
      operationId: ContractController_getSigningFiles
      parameters:
        - name: id
          required: true
          in: path
          description: The unique identifier (UUID) of the contract
          schema:
            example: 550e8400-e29b-41d4-a716-446655440000
            type: string
      responses:
        '200':
          description: Files to sign, their fields, and the signatories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractSigningFilesResponseDto'
        '401':
          description: Unauthorized - Invalid or missing API key
        '403':
          description: Forbidden - Insufficient permissions
        '409':
          description: >-
            There is no signing ceremony in progress: the contract was never
            sent for signature, its signature was canceled, or it is already
            signed — use GET /contracts/{id}/signed-files for the executed
            files.
        '429':
          description: Too Many Requests - Rate limit exceeded
      security:
        - X-API-KEY: []
components:
  schemas:
    ContractSigningFilesResponseDto:
      type: object
      properties:
        contractId:
          type: string
          description: Unique identifier (UUID) of the contract.
          example: 9aa01b69-5f3d-4c8e-b2a7-1d6e0f4c8b93
        firstSigningParty:
          type: string
          description: >-
            Side that must sign first, `null` when the signature is not ordered.
            Combine it with `signatories[].order` to rebuild the full signing
            sequence: this party first, its signatories by ascending `order`,
            then the other party.
          enum:
            - member
            - guest
          example: member
          nullable: true
        files:
          description: Files of the envelope, in signing order.
          example:
            - id: eeaa7b6d-2c31-4f9a-8d64-3e0b5a7c1d22
              isMain: true
              order: 1
              filename: NDA - Train.pdf
              contentType: application/pdf
              downloadUrl: https://s3.amazonaws.com/bucket/path?X-Amz-Signature=...
              expiresAt: '2026-09-07T10:15:00.000Z'
              pages:
                - width: 595
                  height: 842
              fields: []
          type: array
          items:
            $ref: '#/components/schemas/ContractSigningFileResponseDto'
        signatories:
          description: Everyone taking part in the signature.
          example:
            - id: a255ff48-9d3c-4a7e-8f21-0c5b6d2e9a14
              name: John Doe
              email: john.doe@tomorro.com
              type: member
              title: CEO
              order: 1
          type: array
          items:
            $ref: '#/components/schemas/ContractSigningSignatoryResponseDto'
      required:
        - contractId
        - firstSigningParty
        - files
        - signatories
    ContractSigningFileResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier (UUID) of the file.
          example: eeaa7b6d-2c31-4f9a-8d64-3e0b5a7c1d22
        isMain:
          type: boolean
          description: >-
            Whether this is the contract itself, as opposed to an annex signed
            alongside it.
          example: true
        order:
          type: number
          description: Rank of the file in the envelope, starting at 1.
          example: 1
        filename:
          type: string
          description: Filename of the file to sign, normalized to end with `.pdf`.
          example: NDA - Train.pdf
        contentType:
          type: string
          description: MIME content type of the file.
          example: application/pdf
        downloadUrl:
          type: string
          description: Short-lived pre-signed URL to download the file to sign.
          example: https://s3.amazonaws.com/bucket/path?X-Amz-Signature=...
        expiresAt:
          format: date-time
          type: string
          description: >-
            Date at which `downloadUrl` expires, 5 minutes after the call.
            Re-call the endpoint to obtain a fresh URL.
          example: '2026-09-07T10:15:00.000Z'
        pages:
          description: Dimensions of every page of the file, in page order.
          example:
            - width: 595
              height: 842
          type: array
          items:
            $ref: '#/components/schemas/ContractSigningFilePageResponseDto'
        fields:
          description: Signature and initials fields placed on this file.
          example:
            - id: 3f1c9d02-1a4b-4f5e-9c2d-7b8e1f0a5c31
              signatoryId: a255ff48-9d3c-4a7e-8f21-0c5b6d2e9a14
              type: signature
              pageIndex: 5
              positionX: 9.875
              positionY: 24.690265
          type: array
          items:
            $ref: '#/components/schemas/ContractSigningFieldResponseDto'
      required:
        - id
        - isMain
        - order
        - filename
        - contentType
        - downloadUrl
        - expiresAt
        - pages
        - fields
    ContractSigningSignatoryResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier (UUID) of the signatory.
          example: a255ff48-9d3c-4a7e-8f21-0c5b6d2e9a14
        name:
          type: string
          description: >-
            Full name of the signatory. Can be empty when the counterparty was
            invited by email and has not named itself yet — identify a signatory
            by `email`, never by `name`.
          example: John Doe
        email:
          type: string
          description: Email address of the signatory.
          example: john.doe@tomorro.com
        type:
          type: string
          description: >-
            Which side the signatory signs for: a member of the organization, or
            its counterparty.
          enum:
            - member
            - guest
          example: member
        title:
          type: string
          description: Job title of the signatory.
          example: CEO
          nullable: true
        order:
          type: number
          description: >-
            Rank of the signatory within its own party in an ordered signature,
            starting at 0. `null` when that signatory carries no explicit rank —
            which is the case for every signatory when the signature is not
            ordered, and for counterparty signatories even when it is: the order
            between the two parties is carried by `firstSigningParty`, not here.
          example: 0
          nullable: true
      required:
        - id
        - name
        - email
        - type
        - title
        - order
    ContractSigningFilePageResponseDto:
      type: object
      properties:
        width:
          type: number
          description: Page width in PDF points.
          example: 595
        height:
          type: number
          description: Page height in PDF points.
          example: 842
      required:
        - width
        - height
    ContractSigningFieldResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier (UUID) of the field.
          example: 3f1c9d02-1a4b-4f5e-9c2d-7b8e1f0a5c31
        signatoryId:
          type: string
          description: >-
            Identifier of the signatory who must fill this field, from
            `signatories[].id`.
          example: a255ff48-9d3c-4a7e-8f21-0c5b6d2e9a14
        type:
          type: string
          description: What the signatory places in the field.
          enum:
            - initials
            - signature
          example: signature
        pageIndex:
          type: number
          description: Zero-based index of the page carrying the field, into `pages`.
          example: 5
        positionX:
          type: number
          description: >-
            Horizontal position of the field, as a percentage of the page width,
            from the top-left corner.
          example: 9.875
        positionY:
          type: number
          description: >-
            Vertical position of the field, as a percentage of the page height,
            from the top-left corner.
          example: 24.690265
      required:
        - id
        - signatoryId
        - type
        - pageIndex
        - positionX
        - positionY
  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

````