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

# Get workflow node details

`GET /v1/workflows/{workflowId}/nodes/{nodeId}`

Retrieve detailed data for a single workflow node.

## Response `200`

Successful.

- union
  - SignupTriggerWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'SignupTrigger', required
    - `nextNodeIds` string[], required
  - EventTriggerWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'EventTrigger', required
    - `nextNodeIds` string[], required
    - `eventName` string
    - `eventProperties` WorkflowEventProperty[]
      - `name` string, required
      - `type` 'string' | 'number' | 'boolean' | 'date', required
    - `reEligible` boolean, required
  - ContactPropertyTriggerWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'ContactPropertyTrigger', required
    - `nextNodeIds` string[], required
    - `contactPropertyQuery` WorkflowContactPropertyQuery, required
      - `key` string, required
      - `is` WorkflowContactPropertyComparison, required
        - `value` union, required
          - string
          - number
          - boolean
        - `operator` 'any' | 'contains' | 'not_contains' | 'empty' | 'not_empty' | 'equal' | 'not_equal' | 'greater_than' | 'less_than' | 'true' | 'false' | 'numeric_equal' | 'numeric_not_equal' | 'date_empty' | 'date_not_empty' | 'after' | 'before' | 'between' | 'campaign' | 'any_loop_email' | 'specific_loop_email' | 'accepted_opt_in' | 'rejected_opt_in' | 'pending_opt_in' | 'not_opt_in', required
      - `was` WorkflowContactPropertyComparison, required
        - `value` union, required
          - string
          - number
          - boolean
        - `operator` 'any' | 'contains' | 'not_contains' | 'empty' | 'not_empty' | 'equal' | 'not_equal' | 'greater_than' | 'less_than' | 'true' | 'false' | 'numeric_equal' | 'numeric_not_equal' | 'date_empty' | 'date_not_empty' | 'after' | 'before' | 'between' | 'campaign' | 'any_loop_email' | 'specific_loop_email' | 'accepted_opt_in' | 'rejected_opt_in' | 'pending_opt_in' | 'not_opt_in', required
    - `reEligible` boolean, required
  - AddToListTriggerWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'AddToListTrigger', required
    - `nextNodeIds` string[], required
    - `mailingListId` string, required
    - `reEligible` boolean, required
  - BlankTriggerWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'BlankTrigger', required
    - `nextNodeIds` string[], required
  - AudienceFilterWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'AudienceFilter', required
    - `nextNodeIds` string[], required
    - `audienceFilter` AudienceFilter, nullable — A tree of audience conditions combined with `match`. Null when the campaign targets a mailing list or segment without an explicit filter.
      - `match` 'all' | 'any', required
      - `conditions` AudienceFilterCondition[], required
        - union
          - PropertyCondition — Matches contacts by a property value.
            - `type` 'property', required
            - `key` string, required — The contact property name.
            - `operator` 'any' | 'contains' | 'notContains' | 'equals' | 'notEquals' | 'greaterThan' | 'lessThan' | 'isTrue' | 'isFalse' | 'empty' | 'notEmpty' | 'dateEmpty' | 'dateNotEmpty' | 'after' | 'before' | 'between', required
            - `value` union — The comparison value. Omitted for value-less operators (e.g. `isTrue`, `empty`). A `{ from, to }` object for `between`.
              - …
          - OptInCondition — Matches contacts by mailing-list opt-in status.
            - `type` 'optIn', required
            - `status` 'accepted' | 'pending' | 'rejected' | 'null', nullable, required
          - ActivityCondition — Matches contacts by their activity on a campaign or workflow.
            - `type` 'activity', required
            - `action` 'sent' | 'opened' | 'clicked', required
            - `negate` boolean, required
            - `target` 'campaign' | 'workflow' | 'workflowEmail', required
            - `id` string, required — The ID of the campaign, workflow, or workflow email.
    - `audienceSegmentId` string
    - `appliesDownstream` boolean, required
  - TimerActionWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'TimerAction', required
    - `nextNodeIds` string[], required
    - `amount` number, required
    - `unit` 'm' | 'h' | 'd' | 's', required
  - SendEmailActionWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'SendEmailAction', required
    - `nextNodeIds` string[], required
    - `emailMessageId` string, required
    - `subject` string, required
  - ExitActionWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'ExitAction', required
    - `nextNodeIds` string[], required
  - BranchWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'BranchNode', required
    - `nextNodeIds` string[], required
    - `evalStrategy` string
  - ExperimentBranchWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'ExperimentBranchNode', required
    - `nextNodeIds` string[], required
    - `samplingRate` number, required
    - `url` string
    - `experimentId` string
    - `experimentType` 'webhook' | 'autosplit', required
  - VariantWorkflowNode
    - `id` string, required
    - `workflowId` string, required
    - `typeName` 'VariantNode', required
    - `nextNodeIds` string[], required
    - `isControl` boolean

## Other responses

- `400` — Invalid `workflowId` or `nodeId`.
- `401` — Invalid API key or workflow API not enabled for this team.
- `404` — Workflow or workflow node not found.
- `405` — Wrong HTTP request method.

---

[API](https://skmtc.dev/loops/apis/loops-openapi-spec.md) · [All operations](https://skmtc.dev/loops/apis/loops-openapi-spec/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/loops/loops-openapi-spec/revisions/3a0b8d8025c0/schema)
