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

# Get Variable Keys

> Retrieve the dynamic variable keys derived from the columns of leads uploaded into a workflow.

<Warning>
  **Legacy endpoint - deprecated.** Unversioned endpoints are scheduled for removal on **July 31, 2026**. Use the [`/v1` version](/docs/api-reference/v1/workflow-leads/variable-keys) for new integrations. This endpoint remains available for existing integrations until then.
</Warning>

Returns the list of dynamic variable keys derived from the column headers of the lead files uploaded to this workflow. These keys are what you can reference inside an agent's prompt using the `{{variable_name}}` template syntax. For example, if a lead file contained the columns `phone_number`, `name`, `city`, and `product`, this endpoint returns the variable list `["name", "city", "product"]`: `phone_number` is excluded because it is reserved as the dial target rather than a personalization variable.

## When to use this

* **Prompt editors**: populate an autocomplete or "available variables" panel so the prompt author can only reference variables that actually exist on this workflow's leads.
* **Validation pipelines**: verify a prompt template before publishing an agent change. Reject the deploy if it references a `{{variable_name}}` that does not appear in this list.
* **Workflow audits**: confirm a newly uploaded lead file produces the columns the prompt expects, especially after editing the upload schema.

The keys returned reflect the union of all lead-file column headers ever uploaded to the workflow. If a column disappeared from later uploads, its key may still appear here; treat the list as "available", not "always populated per lead".

## Path parameters

| Parameter    | Description                                      |
| ------------ | ------------------------------------------------ |
| `workflowId` | The workflow ID, for example `wfl_m3v7zb9rk2px`. |

## Errors

* `404 Not Found` is returned when the workflow does not exist.
* `403 Forbidden` is returned when the API key cannot read workflows on this workspace.

## Related endpoints

* [List Workflow Leads](/docs/api-reference/v1/workflow-leads/list): view enrolled leads.
* [Upload Workflow Leads](/docs/api-reference/v1/workflow-leads/add): programmatically enroll a single lead with arbitrary variables.
* [Dynamic variables](/docs/agents/dynamic-variables): guidance on referencing variables inside prompts.


## OpenAPI

````yaml GET /workflows/{workflowId}/leads/variable-keys
openapi: 3.0.0
info:
  title: DialNexa API
  description: >-
    Public REST API for the DialNexa voice AI platform. Versioned endpoints are
    under /v1; unversioned endpoints are legacy and deprecated.
  version: 1.0.0
servers:
  - url: https://api.dialnexa.com
    description: DialNexa production API
security:
  - bearer: []
tags:
  - name: API Keys
  - name: Agent Functions
  - name: Agents V1
  - name: Agents2
  - name: Batch Calls
  - name: Batch Calls V1
  - name: Call Logs
  - name: Calls
  - name: Calls V1
  - name: Campaign Leads
  - name: Campaigns
  - name: External Webhooks
  - name: Knowledge Base
  - name: Knowledge Base V1
  - name: LLMs
  - name: LLMs V1
  - name: Languages
  - name: Languages V1
  - name: Organization Phone Numbers
  - name: Organization Phone Numbers V1
  - name: Phone Number Pricing
  - name: Phone Number Pricing V1
  - name: Transcribers
  - name: Transcribers V1
  - name: User Webhooks
  - name: User Webhooks V1
  - name: V1
  - name: Voices
  - name: Voices V1
  - name: Webcall
  - name: Workflow Leads
  - name: Workflow Leads V1
  - name: Workflows
  - name: Workflows V1
paths:
  /workflows/{workflowId}/leads/variable-keys:
    get:
      tags:
        - Workflow Leads
      summary: Get distinct dynamic variable keys from workflow leads (CSV columns)
      description: >-
        **Legacy endpoint - deprecated, scheduled for removal on July 31,
        2026.** Use the `/v1` version for new integrations. 
      operationId: WorkflowLeadsController_getVariableKeys
      parameters:
        - name: workflowId
          required: true
          in: path
          schema:
            type: string
        - name: x-organization-id
          in: header
          description: RSA encrypted organization ID (base64 format)
          required: true
          schema:
            type: string
            example: BASE64_ENCRYPTED_ORG_ID_HERE
      responses:
        '200':
          description: List of variable keys
      deprecated: true
components:
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````