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

# Get workflow variable catalog

> Typed variables available to a workflow definition: trigger inputs and the outputs of earlier steps.

**Required scope:** `workflows.view`

<Note>Requires workflows enabled for your workspace. Otherwise the request is refused; see [Errors](/concepts/errors).</Note>


## OpenAPI

````yaml /api-reference/openapi.json post /workflows/variable-catalog
openapi: 3.0.3
info:
  title: Pineyard API
  version: 1.0.0
  description: >-
    Programmatic access to agents, campaigns, calls, phone numbers, WhatsApp and
    results in your Pineyard workspace.
servers:
  - url: https://api.pineyard.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /workflows/variable-catalog:
    post:
      summary: Get workflow variable catalog
      description: >-
        Typed variables available to a workflow definition: trigger inputs and
        the outputs of earlier steps.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                definition:
                  type: object
                  additionalProperties:
                    nullable: true
                  description: >-
                    Opaque workflow definition JSON object. Graph validation is
                    performed by the workflow validator.
                  example:
                    definitionVersion: 1
                    nodes:
                      - id: start
                        type: start
                        position:
                          x: 0
                          'y': 0
                        data: {}
                      - id: end_ok
                        type: end
                        position:
                          x: 0
                          'y': 1
                        data:
                          label: Done
                    edges:
                      - id: e1
                        source: start
                        target: end_ok
              required:
                - definition
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  triggerInput:
                    $ref: '#/components/schemas/VariableDescriptor'
                  producers:
                    type: array
                    items:
                      type: object
                      properties:
                        nodeId:
                          type: string
                        label:
                          type: string
                        output:
                          $ref: '#/components/schemas/VariableDescriptor'
                      required:
                        - nodeId
                        - label
                        - output
                  availabilityByNode:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
                  conditionOperatorsByType:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
                required:
                  - triggerInput
                  - producers
                  - availabilityByNode
                  - conditionOperatorsByType
        '400':
          description: >-
            - `internal_error`: An unexpected error. A `400` with this code
            usually means the body is not valid JSON; a `413` means the body is
            larger than 1 MB.

            - `invalid_body`: The request body (or query) failed validation.
            Details are in `issues` (or `detail`). `422` on `POST
            /v1/campaigns/{campaignId}/leads`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - invalid_body
                  issues:
                    type: array
                    items:
                      nullable: true
                required:
                  - error
        '401':
          description: >-
            - `invalid_api_key`: The API key is unknown, revoked or expired, or
            its workspace was deleted.

            - `unauthorized`: No `Authorization: Bearer` header, or an empty
            token.
        '403':
          description: >-
            - `api_key_not_scoped`: A key issued without scopes was used outside
            `/v1`.

            - `api_key_owner_inactive`: The member the key acts for was removed
            or suspended.

            - `forbidden`: The key lacks the permission named in
            `requiredPermission`, or the resource belongs to another workspace.

            - `workspace_pending_approval`: The workspace has not been approved
            yet.

            - `workspace_suspended`: The workspace is suspended.
        '404':
          description: >-
            - `not_found`: The resource does not exist in your workspace, or the
            feature is not enabled for it.
        '413':
          description: >-
            - `internal_error`: An unexpected error. A `400` with this code
            usually means the body is not valid JSON; a `413` means the body is
            larger than 1 MB.
        '422':
          description: >-
            - `workflow_invalid`: Stored or submitted workflow definition fails
            parsing or validation (details included).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - workflow_invalid
                  details:
                    type: array
                    items:
                      type: string
                required:
                  - error
                  - details
        '429':
          description: '- `rate_limited`: Too many requests.'
        '500':
          description: >-
            - `internal_error`: An unexpected error. A `400` with this code
            usually means the body is not valid JSON; a `413` means the body is
            larger than 1 MB.
        '502':
          description: >-
            - `provider_error`: The calling service rejected the request
            (`upstreamStatus` 4xx) or was unavailable (5xx).
        '503':
          description: '- `database_unavailable`: The service is temporarily unavailable.'
components:
  schemas:
    VariableDescriptor:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
          enum:
            - string
            - number
            - boolean
            - object
            - unknown
        description:
          type: string
        allowedValues:
          type: array
          items:
            type: string
        open:
          type: boolean
        children:
          type: array
          description: >-
            Nested descriptors of the same shape (recursive
            VariableDescriptor[]).
          items:
            $ref: '#/components/schemas/VariableDescriptor'
      required:
        - name
        - type
        - description
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your API key, e.g. `pk_live_xxxxxxxxxxxxxxxxxxxxxxxx`.

````

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