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

> ## Agent Instructions
> Flowsign is one word with a lowercase s.
> The REST API base URL is https://my.flowsign.app and every endpoint lives under /api/v1.
> When answering API questions, cite the HTTP method and endpoint path.
> API access needs the Enterprise plan and an API key with the API access permission.

# Convert a dynamic template document

> Turns an uploaded .docx, added with `documentKind: DYNAMIC`, into content Flowsign lays out itself. Call it once the file's bytes are uploaded. Converting again replaces the content and clears the document's variables, regions and questions. The variables the content declares then come back on the document in `GET /api/v1/templates/:templateId`, and their details are set through `documentConfig` on PATCH. Requires CREATE template access.



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/templates/{templateId}/documents/{documentId}/convert
openapi: 3.0.3
info:
  title: Flowsign API
  version: 1.0.0
  description: >-
    Public v1 API for Flowsign. Every endpoint is authenticated with a Bearer
    API key (prefix `fsk_`). Errors use `{ error, details? }`; success responses
    wrap payload data as `{ data }`.


    An organisation is divided into workspaces. A key is issued for one
    workspace and acts there on every request (see `GET /api/v1/workspaces`);
    `X-Workspace-Id` is optional and may only name that workspace. Packages,
    templates, contacts and members are scoped to the key's workspace.
servers:
  - url: https://my.flowsign.app
    description: Production
security:
  - ApiKey: []
paths:
  /api/v1/templates/{templateId}/documents/{documentId}/convert:
    post:
      tags:
        - Templates
      summary: Convert a dynamic template document
      description: >-
        Turns an uploaded .docx, added with `documentKind: DYNAMIC`, into
        content Flowsign lays out itself. Call it once the file's bytes are
        uploaded. Converting again replaces the content and clears the
        document's variables, regions and questions. The variables the content
        declares then come back on the document in `GET
        /api/v1/templates/:templateId`, and their details are set through
        `documentConfig` on PATCH. Requires CREATE template access.
      operationId: postTemplatesByTemplateIdDocumentsByDocumentIdConvert
      parameters:
        - schema:
            type: string
          required: true
          name: templateId
          in: path
        - schema:
            type: string
          required: true
          name: documentId
          in: path
        - schema:
            type: string
            description: >-
              The workspace the key was issued for, as returned by `GET
              /api/v1/workspaces`. Optional: omitting it acts in the key's
              workspace, and any other id is rejected with 401.
          required: false
          name: x-workspace-id
          in: header
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The document that was converted.
                        example: cmg3k5r1c0003s7p4h2m8tb7k
                      sections:
                        type: integer
                        minimum: 0
                        description: How many sections the converted content has.
                        example: 3
                    required:
                      - id
                      - sections
                required:
                  - data
        '400':
          description: The document is not DYNAMIC
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Caller's plan does not include this feature (publicApi / webhooks)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: API key present but caller lacks the required permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No template with that id in the workspace, or no such document on it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The template is open for editing in the app by another user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Request failed schema validation; details keyed by field
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded; see `Retry-After`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: What went wrong, in plain words.
          example: 'Missing permission: canSendPackages'
        details:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Validation problems keyed by field path. Present only on 422
            responses.
          example:
            recipients.0.email:
              - Invalid email
      required:
        - error
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: fsk_*

````