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

# Partially Update Template

> Update template properties, a single user, OR a single field. Cannot mix multiple entity types in one request. Use PUT for comprehensive updates including users, fields, and reminders. A `seal_participant` that names a seal answers 404 `NOT_FOUND` when the seal does not exist or belongs to another company, and 400 `SEAL_UNAVAILABLE` when the seal is revoked, deleted or not the current version of its lineage. Adding a seal participant or changing its seal answers 503 `SEALS_DISABLED` when organization seals are not enabled. Adding a seal participant requires `order` (see the order contract).



## OpenAPI

````yaml api-reference/v01.39.01/openapi-v01.39.01.json patch /templates/{id}
openapi: 3.0.3
info:
  title: Firma Partner API
  description: >-
    RESTful API for document signing and template management.


    **Authentication**: All endpoints require API key authentication via the
    `Authorization` header. Use your API key directly without any prefix (e.g.,
    `your-api-key`). The Bearer prefix is optional but not required.


    **Security Features**:

    - Input validation using Zod schemas with detailed field-level error
    messages

    - RSA-256 signed JWT tokens for embedded template access


    **Rate Limiting**: Rate limits are tiered based on operation type:

    - Read operations (GET): 200 requests per minute

    - Write operations (POST/PUT/PATCH/DELETE): 120 requests per minute

    - Webhook CRUD operations: 60 requests per minute

    - Webhook test: 10 requests per minute

    - API key regeneration/expiration: 1 request per minute

    - Webhook secret rotation: 1 request per minute


    When rate limits are exceeded, the API returns a `429 Too Many Requests`
    response with headers:

    - `X-RateLimit-Limit`: Maximum requests per minute for this endpoint

    - `X-RateLimit-Remaining`: Requests remaining in current window

    - `X-RateLimit-Reset`: Unix timestamp when limit resets

    - `Retry-After`: Seconds until retry is allowed


    **Error Handling**: All errors return structured JSON responses with `error`
    (human-readable message), `code` (machine-readable identifier), and
    `details` (field-level validation errors when applicable).


    **Embedded Template Integration**: The Firma Template Editor can be embedded
    in your application using a standalone JavaScript library.


    ```html

    <!-- Load the Firma Template Editor library -->

    <script
    src="https://api.firma.dev/functions/v1/embed-proxy/template-editor.js"></script>


    <script>

    // Generate JWT token via API first

    fetch('https://api.firma.dev/functions/v1/signing-request-api/generate-template-token',
    {
      method: 'POST',
      headers: {
        'Authorization': 'YOUR_API_KEY',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        companies_workspaces_templates_id: 'template-id'
      })
    })

    .then(res => res.json())

    .then(data => {
      // Initialize editor with JWT token
      window.FirmaTemplateEditor.init({
        container: '#firma-editor-container',
        jwt: data.token,
        templateId: 'template-id',
        theme: 'dark',
        readOnly: false,
        onSave: (savedData) => {
          console.log('Template saved:', savedData);
        },
        onError: (error) => {
          console.error('Editor error:', error);
        },
        onLoad: (template) => {
          console.log('Template loaded:', template);
        }
      });
    });

    ```


    **X-Firma-Deprecation Header**: Some seal creation and image update
    operations return an `X-Firma-Deprecation` response header when called on
    the edge gateway, indicating the operation should be performed on the
    primary API host instead.


    **Multi-document documents (API 01.39.00, enablement required)**: a template
    or signing request can hold up to 20 documents. The `/documents`
    sub-resource routes and the `documents`, `documents_version` and
    `documents_layout_version` keys are served only for companies enabled for
    multi-document documents; for any other company the routes answer `404
    NOT_FOUND` and the keys are absent.


    **Template seals on create (API 01.39.01)**: creating a signing request from
    a template with `POST /signing-requests` or `POST
    /signing-requests/create-and-send` now inherits the template's seal
    participants, and the template fields that belong to them, when
    `seal_participants` is absent or `null`. This changes the behaviour of v1
    without a version bump; send `seal_participants: []` to create the request
    with no seals. `POST /templates/{id}/duplicate` also carries the template's
    seal participants over; see that operation for how it differs for companies
    enabled for multi-document documents. `GET /templates/{id}` returns
    `seal_participants`, and `POST /templates` answers `warnings` when its body
    contains keys it ignores.
  version: 01.39.01
  contact:
    name: API Support
    url: https://firma.com/support
servers:
  - url: https://api.firma.dev/functions/v1/signing-request-api
    description: Production API - Recommended (Current)
  - url: https://api.firma.dev/api/v1
    description: Production API - Planned
security:
  - ApiKeyAuth: []
tags:
  - name: Company
    description: Company information and settings
  - name: Workspaces
    description: Workspace management operations
  - name: Templates
    description: Template management operations
  - name: Signing Requests
    description: Document signing request operations
  - name: Custom Fields
    description: >-
      Custom field definition management for workspaces, templates, and signing
      requests
  - name: Webhooks
    description: Webhook configuration and management
  - name: JWT Management
    description: JWT token generation and revocation for embedded templates
  - name: Workspace Settings
    description: Workspace configuration and settings
  - name: Email Domains
    description: >-
      Email domain setup and verification for sending signing request emails
      from custom domains
  - name: Email Templates
    description: >-
      Email template management for workspace and company-level customization of
      signing request notifications
  - name: Organization Seals
    description: >-
      Organization seal management: create, update, revoke, and erase seals
      applied to signing requests
  - name: Signer Terms
    description: >-
      Custom signer terms-of-service / consent statements, company-level with
      per-language workspace overrides
paths:
  /templates/{id}:
    patch:
      tags:
        - Templates
      summary: Partially Update Template
      description: >-
        Update template properties, a single user, OR a single field. Cannot mix
        multiple entity types in one request. Use PUT for comprehensive updates
        including users, fields, and reminders. A `seal_participant` that names
        a seal answers 404 `NOT_FOUND` when the seal does not exist or belongs
        to another company, and 400 `SEAL_UNAVAILABLE` when the seal is revoked,
        deleted or not the current version of its lineage. Adding a seal
        participant or changing its seal answers 503 `SEALS_DISABLED` when
        organization seals are not enabled. Adding a seal participant requires
        `order` (see the order contract).
      operationId: patchTemplate
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  description: Update template properties
                  properties:
                    name:
                      type: string
                      description: Template name
                      maxLength: 255
                    description:
                      type: string
                      description: Template description
                    document:
                      type: string
                      format: byte
                      description: >-
                        Base64-encoded PDF or DOCX to replace document. DOCX
                        files are automatically converted to PDF. For documents
                        larger than 5 MB, use POST /documents and pass the
                        document_id instead. (mutually exclusive with
                        document_id)
                    document_id:
                      type: string
                      format: uuid
                      description: >-
                        ID of a previously uploaded document (mutually exclusive
                        with document). Obtain by calling POST /documents first.
                      example: 123e4567-e89b-12d3-a456-426614174000
                    expiration_hours:
                      type: integer
                      minimum: 1
                      description: Hours until expiration
                    settings:
                      type: object
                      properties:
                        allow_editing_before_sending:
                          type: boolean
                        attach_pdf_on_finish:
                          type: boolean
                        allow_download:
                          type: boolean
                        hand_drawn_only:
                          type: boolean
                        require_otp_verification:
                          type: boolean
                          nullable: true
                          description: >-
                            Require signers to verify their email with a
                            one-time code; `null` inherits the workspace or
                            company setting.
                        disable_guided_navigation:
                          type: boolean
                          nullable: true
                        allow_presigning_download:
                          type: boolean
                          nullable: true
                          description: >-
                            Allow signers to download the original document
                            before signing; `null` inherits the workspace or
                            company setting.
                        show_qr_code:
                          type: boolean
                          nullable: true
                          description: >-
                            Show a QR code on the signing page that lets signers
                            continue on their phone. Inherits from workspace or
                            company setting when null.
                - type: object
                  description: Update or create a single user
                  required:
                    - user
                  properties:
                    user:
                      type: object
                      required:
                        - first_name
                        - email
                        - designation
                        - order
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: >-
                            Include to update existing user, omit to create new.
                            An existing recipient cannot be changed between CC
                            and Signer/Approver (400); delete it and create it
                            again.
                        first_name:
                          type: string
                          maxLength: 255
                        last_name:
                          type: string
                          maxLength: 255
                          description: >-
                            Optional, but required if using full_name or
                            last_name prefilled variables
                        email:
                          type: string
                          format: email
                        designation:
                          type: string
                          enum:
                            - Signer
                            - Approver
                            - CC
                        order:
                          type: integer
                          minimum: 1
                        phone_number:
                          type: string
                        street_address:
                          type: string
                        city:
                          type: string
                        state_province:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                        title:
                          type: string
                        company:
                          type: string
                - type: object
                  description: Update or create a single field
                  required:
                    - field
                  properties:
                    field:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Include to update existing field, omit to create new
                        type:
                          type: string
                          enum:
                            - text
                            - signature
                            - date
                            - checkbox
                            - initial
                            - initials
                            - dropdown
                            - radio_buttons
                            - textarea
                            - text_area
                            - url
                            - file
                            - stamp
                            - approval_signature
                            - approval_checkmark
                            - approval_date
                          description: >-
                            Field type. Accepts 'initial' or 'initials',
                            'textarea' or 'text_area'. Required for new fields.
                            url fields are automatically read-only. file fields
                            allow signers to upload attachments (images/PDF).
                            stamp fields display a pre-configured image.
                        x:
                          type: number
                          description: X position on document. Required for new fields.
                        'y':
                          type: number
                          description: Y position on document. Required for new fields.
                        width:
                          type: number
                          description: Field width. Required for new fields.
                        height:
                          type: number
                          description: Field height. Required for new fields.
                        page:
                          type: integer
                          minimum: 1
                          description: Page number (1-indexed). Required for new fields.
                        required:
                          type: boolean
                          description: Whether field is required
                        assigned_to_user_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            Template user ID to assign the field to; `null`
                            removes the field's user and leaves the field
                            unassigned.
                        variable_name:
                          type: string
                          description: Variable name for prefilled data mapping
                        variable_defined_name:
                          type: string
                          maxLength: 100
                          nullable: true
                          description: >-
                            Human-readable custom field definition name. Can be
                            used as an alternative to variable_name for
                            targeting fields in template-based creation.
                        options:
                          type: array
                          items:
                            type: string
                          description: Options for dropdown fields
                        format_rules:
                          type: object
                          description: >-
                            Format rules (e.g., date format, urlDisplayText for
                            url fields, acceptedFileTypes for file fields)
                        multi_group_id:
                          type: string
                          format: uuid
                          description: Group ID for radio button groups
                        default_to_signing_date:
                          type: boolean
                          description: For date fields, use signing date as default
                        read_only:
                          type: boolean
                          description: >-
                            Whether field is read-only (automatically true for
                            url fields)
                        read_only_value:
                          type: string
                          description: >-
                            Static value for read-only fields. For url fields,
                            this is the URL to link to.
                    documents_layout_version:
                      type: integer
                      minimum: 0
                      description: >-
                        The `documents_layout_version` of your last read
                        (multi-document). Required for a field write on a
                        template with more than one document or a layout version
                        above 1 (`409 DOCUMENTS_LAYOUT_VERSION_REQUIRED`); a
                        stale value answers `409 DOCUMENT_SET_VERSION_CONFLICT`;
                        a value that is not a non-negative integer answers `400
                        VALIDATION_ERROR` with key `documents_layout_version`.
                - type: object
                  required:
                    - seal_participant
                  description: >-
                    Add or update one seal participant of the template. Send
                    only the `seal_participant` key.
                  properties:
                    seal_participant:
                      type: object
                      description: >-
                        One of two uses, chosen by the keys sent; each answers
                        `{ "seal_participant": ... }`. Add: send `seal_id` and
                        `order` without `id`; answers 201. Update: send `id`
                        with `order` to move the participant, with `seal_id` to
                        change its seal, or with both; answers 200. A template
                        seal participant cannot be swapped.
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: >-
                            ID of the seal participant to update. Omit it to add
                            a seal participant.
                        seal_id:
                          type: string
                          format: uuid
                          description: >-
                            ID of the organization seal. Required to add a seal
                            participant; on an update it becomes the seal of the
                            participant. The seal must belong to the company, be
                            the current version of its lineage, and be neither
                            revoked nor deleted.
                        order:
                          type: integer
                          minimum: 1
                          description: >-
                            Position in the template's order, shared with the
                            users' order space. Required to add a seal
                            participant; on an update it moves the participant.
            examples:
              update-properties:
                summary: Update properties
                value:
                  name: Updated Template Name
                  expiration_hours: 72
              create-url-field:
                summary: Create URL field
                value:
                  field:
                    type: url
                    x: 100
                    'y': 200
                    width: 150
                    height: 30
                    page: 1
                    read_only_value: https://example.com/terms
                    format_rules:
                      urlDisplayText: View Terms & Conditions
              create-file-field:
                summary: Create file upload field
                value:
                  field:
                    type: file
                    x: 100
                    'y': 300
                    width: 200
                    height: 40
                    page: 1
                    required: true
                    format_rules:
                      acceptedFileTypes: image_and_pdf
              update-field:
                summary: Update existing field
                value:
                  field:
                    id: field123-e89b-12d3-a456-426614174000
                    x: 120
                    'y': 220
      responses:
        '200':
          description: >-
            Template partially updated successfully. Updating a seal participant
            returns `{ "seal_participant": <SealParticipantApi> }`.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: 'Rate limit: 120 requests per minute'
            X-RateLimit-Remaining:
              schema:
                type: integer
            X-RateLimit-Reset:
              schema:
                type: integer
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/TemplatePatchResponse'
                  - type: object
                    description: Response when updating a seal participant
                    required:
                      - seal_participant
                    properties:
                      seal_participant:
                        $ref: '#/components/schemas/SealParticipantApi'
        '201':
          description: >-
            A field or a seal participant was created. The body is the created
            field object; for a seal participant it is `{ "seal_participant":
            <SealParticipantApi> }`. Updating a seal participant answers 200
            with the same `{ "seal_participant": ... }` body.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: 'Rate limit: 120 requests per minute'
            X-RateLimit-Remaining:
              schema:
                type: integer
            X-RateLimit-Reset:
              schema:
                type: integer
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    description: The created field
                  - type: object
                    description: The created seal participant
                    required:
                      - seal_participant
                    properties:
                      seal_participant:
                        $ref: '#/components/schemas/SealParticipantApi'
        '400':
          description: >-
            Bad Request - Validation failed. Multi-document:
            `PAGE_COUNT_MISMATCH`, `DIMENSION_MISMATCH` (document replacement).
            Multi-document field writes: `VALIDATION_ERROR` with key `page` (a
            page beyond the document's page count) or `documents_layout_version`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Validation Error
                message: Invalid input data
                details:
                  name: Name is required
                  email: Invalid email format
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          description: Template or seal participant not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_found:
                  value:
                    error: Template not found
                    code: NOT_FOUND
                seal_not_found:
                  value:
                    error: Seal not found
                    code: NOT_FOUND
        '409':
          description: >-
            Conflict: `MULTI_DOCUMENT_READ_ONLY`,
            `MULTI_DOCUMENT_REPLACE_UNSUPPORTED`,
            `DOCUMENT_SET_VERSION_CONFLICT`, `DOCUMENT_SET_BUSY`,
            `DOCUMENT_SET_DISPATCH_STALE`, `DOCUMENT_CANDIDATE_EXPIRED`,
            `DOCUMENT_SET_INCONSISTENT`, `DOCUMENTS_LAYOUT_VERSION_REQUIRED`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MultiDocumentError'
        '429':
          $ref: '#/components/responses/RateLimitError'
        '503':
          description: >-
            Organization seals are not enabled and a seal participant is added
            or its seal is changed (`SEALS_DISABLED`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: TypeScript
          label: '@firma-dev/sdk'
          source: |-
            import { FirmaClient } from "@firma-dev/sdk";

            const firma = new FirmaClient({ apiKey: "YOUR_API_KEY" });

            const response = await firma.templates.patchTemplate({
                id: "id",
                body: {
                    name: "Updated Template Name",
                    expiration_hours: 72
                }
            });
            console.log(response);
components:
  schemas:
    TemplatePatchResponse:
      type: object
      properties:
        message:
          type: string
        updated_fields:
          type: array
          items:
            type: string
          description: Returned when updating properties
        user:
          type: object
          description: Returned when updating/creating a user
      description: Template partial update result
      required:
        - message
        - updated_fields
    SealParticipantApi:
      type: object
      description: >-
        Seal participant as the API answers it on a signing request or a
        template. Every key is always present; nullable keys are null when
        unset.
      required:
        - id
        - order
        - seal
        - status
        - applied_at
        - paused_at
        - pause_reason
        - swapped_from_seal_id
        - triggered_by_recipient_id
        - sender_kind
        - seal_out_of_scope
      properties:
        id:
          type: string
          format: uuid
        order:
          type: integer
          minimum: 1
          description: >-
            Position in the signing order, shared with the recipients' order
            space.
        seal:
          type: object
          description: The organization seal this participant applies.
          required:
            - id
            - lineage_id
            - name
            - version
            - display_name
          properties:
            id:
              type: string
              format: uuid
            lineage_id:
              type: string
              format: uuid
              description: Shared across versions of the same seal
            name:
              type: string
            version:
              type: integer
            display_name:
              type: string
        status:
          type: string
          enum:
            - pending
            - paused
            - applied
          description: >-
            applied when applied_at is set, else paused when paused_at is set,
            else pending.
        applied_at:
          type: string
          format: date-time
          nullable: true
        paused_at:
          type: string
          format: date-time
          nullable: true
        pause_reason:
          type: string
          nullable: true
          enum:
            - seal_revoked_stop_pending
            - seal_integrity_mismatch
            - null
        swapped_from_seal_id:
          type: string
          format: uuid
          nullable: true
        triggered_by_recipient_id:
          type: string
          format: uuid
          nullable: true
          description: The recipient whose action applied the seal.
        sender_kind:
          type: string
          nullable: true
          enum:
            - dashboard
            - api_key
            - embedded
            - null
        seal_out_of_scope:
          type: boolean
          description: >-
            True when the seal belongs to a workspace other than the signing
            request's or the template's.
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message
        code:
          type: string
          description: >-
            Machine-readable error code Seal-related codes: SEALS_DISABLED,
            SEAL_ALREADY_REVOKED, SEAL_CREATION_DISABLED_EDGE,
            SEAL_ERASE_NOT_ELIGIBLE, SEAL_IMAGE_INVALID,
            SEAL_MUTATION_NOT_ALLOWED, SEAL_NOT_FOUND, SEAL_NO_IMAGE_FIELD,
            SEAL_ORDER_COLLISION, SEAL_PAUSED, SEAL_SCOPE_FORBIDDEN,
            SEAL_UNAVAILABLE Multi-document codes: see MultiDocumentErrorCode
            (41 codes).
        errors:
          type: array
          description: >-
            All validation errors when multiple failures are reported together.
            The top-level error repeats the first item for backward
            compatibility.
          items:
            type: object
            required:
              - message
            properties:
              message:
                type: string
        message:
          type: string
          description: Detailed error description
        details:
          type: object
          description: Additional error details
          additionalProperties: true
      required:
        - error
      description: >-


        Organization Seal error codes: SEALS_DISABLED, SEAL_ALREADY_REVOKED,
        SEAL_CREATION_DISABLED_EDGE, SEAL_ERASE_NOT_ELIGIBLE,
        SEAL_IMAGE_INVALID, SEAL_MUTATION_NOT_ALLOWED, SEAL_NOT_FOUND,
        SEAL_NO_IMAGE_FIELD, SEAL_ORDER_COLLISION, SEAL_PAUSED,
        SEAL_SCOPE_FORBIDDEN, SEAL_UNAVAILABLE
    MultiDocumentError:
      description: An error answered by a multi-document route.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          required:
            - error
            - code
          properties:
            code:
              $ref: '#/components/schemas/MultiDocumentErrorCode'
    MultiDocumentErrorCode:
      type: string
      enum:
        - ALREADY_CANCELLED
        - ALREADY_FINISHED
        - ALREADY_SENT
        - ANCHOR_DOCUMENT_REQUIRED
        - ANCHOR_MISMATCH
        - CONFLICTING_DOCUMENT_SOURCE
        - DIMENSION_MISMATCH
        - DOCUMENTS_LAYOUT_VERSION_REQUIRED
        - DOCUMENT_CANDIDATE_EXPIRED
        - DOCUMENT_NOT_FOUND
        - DOCUMENT_ORIGINAL_NOT_AVAILABLE
        - DOCUMENT_SET_BUSY
        - DOCUMENT_SET_DISPATCH_STALE
        - DOCUMENT_SET_INCONSISTENT
        - DOCUMENT_SET_LOCKED
        - DOCUMENT_SET_TOO_LARGE
        - DOCUMENT_SET_VERSION_CONFLICT
        - DOCUMENT_SIGNED_NOT_AVAILABLE
        - DOCUMENT_UPLOAD_NOT_FOUND
        - DUPLICATE_DOCUMENT_ID
        - FENCE_COLUMN_PROTECTED
        - INSUFFICIENT_CREDITS
        - INTERNAL
        - INTERNAL_ERROR
        - INVALID_DOCUMENT_ORDER
        - INVALID_SIGNING_ORDER
        - MAX_DOCUMENTS_EXCEEDED
        - MIN_DOCUMENTS_REQUIRED
        - MULTI_DOCUMENT_READ_ONLY
        - MULTI_DOCUMENT_REPLACE_UNSUPPORTED
        - NOT_FOUND
        - PAGE_COUNT_MISMATCH
        - PARTICIPANTS_CHANGED
        - RATE_LIMIT_EXCEEDED
        - SEAL_MUTATION_NOT_ALLOWED
        - SEND_EFFECTS_EXIST
        - SEND_IN_PROGRESS
        - SIGNED_DATA_IMMUTABLE
        - SIGNING_ORDER_LOCKED_APPLIED
        - SIGNING_ORDER_LOCKED_SENDING
        - SIGNING_ORDER_LOCKED_SENT
        - VALIDATION_ERROR
      description: >-
        Error codes of the multi-document contract and of the routes it changes
        (generated from the error matrix's API-surfaced rows). A genuine server
        fault answers 500 with INTERNAL_ERROR on the legacy routes and INTERNAL
        on the shared HttpError paths (multi-document dispatch, the RPC status
        map, document-set routes); neither carries detail.
  responses:
    UnauthorizedError:
      description: Unauthorized - Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized
            message: Invalid API key
    RateLimitError:
      description: Too Many Requests - Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Maximum requests per minute
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Requests remaining
        X-RateLimit-Reset:
          schema:
            type: integer
          description: Unix timestamp of reset
        Retry-After:
          schema:
            type: integer
          description: Seconds until retry allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Rate Limit Exceeded
            message: Too many requests. Please wait before retrying.
            details:
              retry_after: 45
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key for authentication. Use your API key directly without any prefix
        (e.g., 'your-api-key'). Bearer prefix is optional but not required.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.