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

# Create a signature session

> Generates an embedded signing URL for the specified document type. Always mints a fresh URL — prior unsigned sessions for the same document are voided afterwards on a best-effort basis. Returns 409 if the document has already been signed, or 422 if the company is not eligible (e.g., a member has an SSN or ITIN on file).



## OpenAPI

````yaml /api-reference/openapi.json post /v1/partner/companies/{companyId}/signatures
openapi: 3.0.1
info:
  title: doola Partner API
  description: >-
    REST API for doola partners to create and manage customers and companies,
    retrieve formation documents, and look up reference data.


    Authenticate every request with a partner API key in the `Authorization`
    header. Generate keys and manage webhooks and event subscriptions in the
    doola Partner Portal.
  contact:
    name: doola
    url: https://www.doola.com
  version: v1
servers:
  - url: https://api.test.doola.com
    description: Sandbox — use test keys (dk_test_…)
  - url: https://api.doola.com
    description: Production — use live keys (dk_live_…)
security:
  - PartnerApiKey: []
tags:
  - name: Playground (sandbox only)
    description: >-
      Sandbox-only helpers to drive a test company through the Formation and
      EinCreation milestones end to end.
  - name: Customers
    description: Create and look up customers under your partner tenant.
  - name: Documents
    description: List and download a company's formation documents.
  - name: Signatures
    description: Request embedded signing sessions for pending company documents.
  - name: Companies
    description: Create companies for your customers, then track formation status.
  - name: Reference data
    description: >-
      Static lookups for building company-creation requests: NAICS codes,
      states, countries, and state filing fees.
paths:
  /v1/partner/companies/{companyId}/signatures:
    post:
      tags:
        - Signatures
      summary: Create a signature session
      description: >-
        Generates an embedded signing URL for the specified document type.
        Always mints a fresh URL — prior unsigned sessions for the same document
        are voided afterwards on a best-effort basis. Returns 409 if the
        document has already been signed, or 422 if the company is not eligible
        (e.g., a member has an SSN or ITIN on file).
      operationId: createSignatureSession
      parameters:
        - name: companyId
          in: path
          description: doola company ID (KSUID).
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSignatureSessionRequest'
        required: true
      responses:
        '201':
          description: >-
            Signature session created. Returns a fresh, whitelabeled signing URL
            that expires two hours after issuance.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiResponseSignatureSessionDtoObject'
        '400':
          description: >-
            E_DOCUMENT_TYPE_NOT_SUPPORTED: the document type cannot be signed
            via this endpoint. Malformed bodies return E_VALIDATION_FAILED.
        '404':
          description: 'E_NOT_FOUND: no company with this ID for the authenticated partner.'
        '409':
          description: 'E_DOCUMENT_ALREADY_SIGNED: the document has already been signed.'
        '422':
          description: >-
            E_FORMATION_NOT_ELIGIBLE: the company is US-based (a member,
            executive member, or responsible party has an SSN or ITIN) and needs
            no SS-4 signature.
components:
  schemas:
    CreateSignatureSessionRequest:
      required:
        - documentType
      type: object
      properties:
        documentType:
          type: string
          enum:
            - SS4
            - FORM8821
    ApiResponseSignatureSessionDtoObject:
      type: object
      properties:
        payload:
          $ref: '#/components/schemas/SignatureSessionDto'
        error:
          type: object
    SignatureSessionDto:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        documentType:
          type: string
          enum:
            - SS4
            - FORM8821
        expiresAt:
          type: string
          format: date-time
  securitySchemes:
    PartnerApiKey:
      type: apiKey
      description: >-
        Partner API key. Send the raw key as the `Authorization` header value —
        e.g. `dk_test_…` in sandbox or `dk_live_…` in production. Generate and
        rotate keys in the doola Partner Portal.
      name: Authorization
      in: header

````