---
title: "Get workflow details"
method: GET
path: "/public/v1/workflows/{workflowId}"
tags: ["Workflows"]
---

# Get workflow details

`GET /public/v1/workflows/{workflowId}`

Returns a workflow automation. Pass includeNodes=true to include graph nodes.

## Path parameters

- `workflowId` number, nullable

## Query parameters

- `includeNodes` union
  - boolean
  - string

## Response `200`

Workflow details

- WorkflowDetail
  - `id` number, required
  - `name` string, required
  - `description` string, nullable, required
  - `status` 'ACTIVE' | 'DELETED' | 'DRAFT', required
  - `triggerType` 'CONVERSATION_ENDED' | 'CONTACT_CREATED' | 'CONTACT_UPDATED' | 'FEEDBACK_CAPTURED' | 'INCOMING_WEBHOOK' | 'TABLE_ROW_CREATED' | 'OBJECT_RECORD_CREATED' | 'TABLE_ROW_UPDATED' | 'OBJECT_RECORD_UPDATED' | 'SCHEDULED_TRIGGER' | 'CONVERSATION_IDLE' | 'COMPOSIO_TRIGGER', nullable, required
  - `createdAt` string, required
  - `updatedAt` string, required
  - `runsCount` number, required
  - `runsFailedCount` number, required
  - `lastRunDate` string, nullable, required
  - `liveSnapshotId` string, nullable, required
  - `draftSnapshotId` string, nullable, required
  - `nodes` PublicWorkflowNode[]
    - `nodeId` string, required
    - `alias` string, nullable
    - `name` string
    - `position` object, required
      - `positionX` number, required
      - `positionY` number, required
    - `type` 'TRIGGER' | 'SCHEDULED_TRIGGER' | 'WEBHOOK' | 'TOOLS_AI' | 'API' | 'CONDITIONAL_ROUTING' | 'AI_CAPTURE' | 'DATA_TRANSFORMER' | 'DYNAMIC_TABLES' | 'ITERATION' | 'BREAK' | 'AUTOMATION_STATUS' | 'SEND_MESSAGE' | 'SEND_WHATSAPP_MESSAGE' | 'TRANSCRIPTION' | 'FILE_ANALYSIS' | 'CREATE_RECORD_ACTIVITY', required
    - `data` union
      - object
        - `type` 'TRIGGER', required
        - `triggerType` 'CONVERSATION_ENDED' | 'CONTACT_CREATED' | 'CONTACT_UPDATED' | 'FEEDBACK_CAPTURED' | 'INCOMING_WEBHOOK' | 'TABLE_ROW_CREATED' | 'OBJECT_RECORD_CREATED' | 'TABLE_ROW_UPDATED' | 'OBJECT_RECORD_UPDATED' | 'CONVERSATION_IDLE' | 'COMPOSIO_TRIGGER', nullable
        - `triggeredBy` 'BOTH' | 'AGENT' | 'USER' | 'INCOMING_WEBHOOK', nullable
        - `triggeredByAgentIds` string[]
        - `triggerByWebhookIds` string[]
        - `triggeredByTableId` number, nullable
        - `triggeredByRecordTypeId` number, nullable
        - `connectedAccountTriggerId` string, nullable
        - `triggerToolkit` string, nullable
        - `triggerSlug` string, nullable
        - `triggerConfig` object, nullable
        - `triggerQueryConfig` object, nullable
          - `query` object — Dynamic-table query: a single `{ path, operator, value }` condition, or a nested `{ operator: 'and' | 'or', conditions: [...] }` group.
        - `connectedAccountId` number, nullable
      - object
        - `type` 'SCHEDULED_TRIGGER', required
        - `cronExpression` string, required — Cron expression (default preset). Validated by cron-validate.
        - `timezone` string, required — IANA timezone identifier. Validated against the host ICU table.
        - `startTime` string, nullable, required
        - `endTime` string, nullable, required
        - `startDate` string, nullable
        - `endDate` string, nullable
        - `frequency` 'INTERVALS' | 'DAILY' | 'WEEKLY' | 'MONTHLY', nullable
      - object
        - `type` 'WEBHOOK', required
        - `includeConversationTranscript` boolean
        - `includeContactInfo` boolean
        - `includeFeedbackCaptured` boolean
        - `includeCapturedVariables` boolean
        - `includeWebhookPayload` boolean
        - `url` string, uri, nullable
      - object
        - `type` 'TOOLS_AI', required
        - `conditions` object[], required
          - `handleId` string, required
          - `expression` string, required
        - `temperature` number
        - `model` string
        - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA'
        - `instructions` string, nullable, required
        - `prompt` string, nullable
        - `customToolIds` number[], nullable
        - `maxIterations` number
        - `agentType` 'BASIC' | 'ADVANCED'
        - `captureVariables` object[], nullable
        - `knowledgeBaseMode` 'DEFAULT' | 'CUSTOM' | 'DISABLED'
        - `knowledgeBaseIds` integer[], nullable
        - `selectedRecordTypes` object[], nullable
          - `recordTypeId` number, required
          - `read` boolean
          - `create` boolean
          - `update` boolean
          - `delete` boolean
          - `createActivity` boolean
        - `systemToolsConfig` object, nullable
          - `webSearchEnabled` boolean
          - `urlScrapeEnabled` boolean
          - `linkedinSearchEnabled` boolean
        - `connectedAccountConfigs` object[], nullable
          - `connectedAccountId` number, required
          - `useAllTools` boolean
          - `selectedToolSlugs` string[], nullable
        - `playbookIds` integer[], nullable
        - `aiModelId` integer, nullable
      - object
        - `type` 'API', required
        - `url` string, uri, required
        - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', required
        - `headers` object[], required
          - `key` string, required
          - `value` string, required
        - `body` string, nullable
        - `response` string, nullable
        - `parameters` object[], nullable
          - `key` string, required
          - `value` string, required
        - `variables` object[], nullable
          - `key` string, required
          - `value` string, required
          - `fullResponse` boolean
      - object
        - `type` 'CONDITIONAL_ROUTING', required
        - `routingType` 'CONDITIONAL_AI' | 'DYNAMIC', required
        - `conditions` object[], required
          - `handleId` string, required
          - `expression` string, required
        - `temperature` number
        - `model` string
        - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA'
        - `aiModelId` integer, nullable
      - object
        - `type` 'AI_CAPTURE', required
        - `aiModelId` number, nullable
        - `model` string, required
        - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', required
        - `instructions` string, nullable
        - `prompt` string, nullable, required
        - `temperature` number, required
        - `captureVariables` object[], required
        - `knowledgeBaseMode` 'DEFAULT' | 'CUSTOM' | 'DISABLED'
        - `knowledgeBaseIds` integer[], nullable
      - object
        - `type` 'DATA_TRANSFORMER', required
        - `prompt` string, nullable, required
        - `temperature` number
        - `model` string, nullable, required
        - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', nullable, required
        - `aiModelId` integer, nullable
        - `outputJson` string, nullable
        - `outputMode` 'JSON' | 'KEY_VALUE' | 'TEXT', nullable, required
        - `keyValuePairs` object[], nullable
          - `key` string, required
          - `value` string, required
      - object
        - `type` 'DYNAMIC_TABLES', required
        - `tableId` number, nullable
        - `recordTypeId` number, nullable
        - `targetRecordTypeId` number, nullable — Destination record type id. Required when actionType is CHANGE_RECORD_TYPE.
        - `actionType` 'CREATE' | 'UPDATE' | 'DELETE' | 'SEARCH' | 'SEARCH_BY_ID' | 'CHANGE_RECORD_TYPE', nullable — Operation to run. Required-field rules per action: CREATE → rowData; UPDATE → rowId + rowData; DELETE / SEARCH_BY_ID → rowId; CHANGE_RECORD_TYPE → rowId + targetRecordTypeId.
        - `rowData` object, nullable
        - `inputModeByField` object, nullable
        - `rowId` string, nullable
        - `search` string, nullable
        - `pageNum` union
          - number
          - string
          - object, nullable
        - `pageSize` union
          - number
          - string
          - object, nullable
        - `pageNumMode` 'INPUT' | 'VARIABLE' | 'EMPTY', nullable
        - `pageSizeMode` 'INPUT' | 'VARIABLE' | 'EMPTY', nullable
        - `sort` object[], nullable
          - `path` string, required
          - `type` 'asc' | 'desc', required
        - `query` union
          - DynamicTablesQueryCondition
            - `path` string, required — Field path in format [Field] or [Relation].[Field]
            - `operator` string, required
            - `value` object, nullable
            - `valueType` object, nullable
          - DynamicTablesQueryGroup
            - `operator` 'and' | 'or', required
            - `conditions` object[], required — Nested filter conditions or AND/OR groups
              - …
          - object, nullable
      - object — Loop node. Wire type is ITERATION. Connect edges with sourceHandle body (for-each), completed (after all items), and empty (null/empty list). At most 50 items per loop invocation; if the resolved array has more than 50 items, the automation run fails before the loop body starts (no items processed). Automations are also limited to 500 node execution steps total. Not available in agent flows.
        - `type` 'ITERATION', required
        - `variableName` string
        - `variablePath` string
        - `continueOnError` boolean
      - object
        - `type` 'BREAK', required
      - object — Changes another automation's status (live/draft/toggle). Does not publish draft graph changes.
        - `type` 'AUTOMATION_STATUS', required
        - `automationId` integer, nullable
        - `automationName` string, nullable
        - `action` 'SET_ACTIVE' | 'SET_DRAFT' | 'TOGGLE'
      - object
        - `type` 'SEND_MESSAGE', required
        - `whatsapp` object, nullable
          - `messageType` 'STATIC' | 'DYNAMIC' | 'WHATSAPP_TEMPLATE', required
          - `message` string, nullable
          - `prompt` string, nullable
          - `temperature` number, nullable
          - `aiModelId` number, nullable
          - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', nullable
          - `model` string, nullable
          - `template` string, nullable
          - `templateVariables` object, nullable
            - `body` object
            - `header` object
            - `buttons` object[]
              - …
          - `templateData` object, nullable
        - `instagram` object, nullable
          - `messageType` 'STATIC' | 'DYNAMIC' | 'WHATSAPP_TEMPLATE', required
          - `message` string, nullable
          - `prompt` string, nullable
          - `temperature` number, nullable
          - `aiModelId` number, nullable
          - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', nullable
          - `model` string, nullable
        - `messenger` object, nullable
          - `messageType` 'STATIC' | 'DYNAMIC' | 'WHATSAPP_TEMPLATE', required
          - `message` string, nullable
          - `prompt` string, nullable
          - `temperature` number, nullable
          - `aiModelId` number, nullable
          - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', nullable
          - `model` string, nullable
      - object — Sends a WhatsApp Business template message. phoneNumberId must belong to this account and have an assistantId assigned.
        - `type` 'SEND_WHATSAPP_MESSAGE', required
        - `recipientMode` 'PHONE_NUMBER' | 'PEOPLE_RECORD', nullable
        - `peopleRecordTypeId` number, nullable
        - `peopleRowId` string, nullable
        - `personName` string, nullable
        - `phoneNumber` string, nullable
        - `phoneNumberId` string, nullable
        - `template` string, nullable
        - `templateVariables` object, nullable
          - `body` object
          - `header` object
          - `buttons` object[]
      - object
        - `type` 'TRANSCRIPTION', required
        - `audioUrl` string, required
        - `language` string
        - `aiModelId` number, nullable
        - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', nullable
        - `model` string
        - `captureVariables` object[], nullable
        - `enableDiarization` boolean
        - `captureSegmentsVariable` object, nullable
          - `id` number, required
          - `name` string, required
          - `description` string
      - object
        - `type` 'FILE_ANALYSIS', required
        - `fileUrl` string, required
        - `aiModelId` number, nullable
        - `aiVendor` 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'AZURE' | 'DEEPSEEK' | 'LLAMA', nullable
        - `model` string, nullable
        - `prompt` string, nullable
        - `captureVariables` object[], nullable
          - `id` number, required
          - `name` string, required
          - `description` string
        - `captureOcrVariable` object, nullable
          - `id` number, required
          - `name` string, required
          - `description` string
      - object
        - `type` 'CREATE_RECORD_ACTIVITY', required
        - `recordTypeId` object, nullable
        - `rowId` string, nullable
        - `activityType` 'NOTE' | 'EMAIL' | 'PHONE_CALL' | 'MEETING' | 'WHATSAPP', nullable
        - `content` string, nullable
      - object, nullable
    - `workflowId` string
    - `handles` object[]
      - `handleId` string, required
      - `sourceEdge` object, required
        - `from` string, required
        - `fromHandleId` string, required
        - `to` string, required
        - `toHandleId` string, required
      - `text` string, required
    - `targetEdges` object[]
      - `from` string, required
      - `fromHandleId` string, required
      - `to` string, required
      - `toHandleId` string, required
    - `createdAt` string, nullable
    - `updatedAt` string, nullable

## Other responses

- `404` — Not Found

---

[API](https://skmtc.net/getfrontline/apis/public-api.md) · [All operations](https://skmtc.net/getfrontline/apis/public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getfrontline/public-api/versions/9d33b6aad674/schema)
