---
title: "[Beta] List available action and trigger types"
method: GET
path: "/workflows/definitions"
tags: ["Workflows (Beta)"]
---

# [Beta] List available action and trigger types

`GET /workflows/definitions`

List all available workflow action types and trigger types with their metadata. Use this to discover what actions and triggers are available when building workflows programmatically.

## Response `200`

Default Response

- WorkflowDefinitionsPublicDto
  - `action_types` ActionTypePublicDto[], required — Available action types with their input/output schemas
    - `type` string, required — Action type identifier (e.g. "ask-ai", "send-webhook"). Use this as the "type" in workflow_blocks.
    - `name` string, required — Human-readable name
    - `description` string, required — What this action does
    - `category` string, required — Action category (e.g. "AI", "Session", "Outbound")
    - `icon` string, required — Icon name
    - `input_fields` FieldSchemaPublicDto[], nullable, required — Input fields this action accepts. Pass these in the "input" object of the workflow block.
      - `name` string, required — Field name (use as key in input object)
      - `type` string, required — Field type: text, number, boolean, select, object, array, etc.
      - `display_name` string, required — Human-readable label
      - `description` string — What this field does
      - `required` boolean, required — Whether this field must be provided
    - `output_fields` FieldSchemaPublicDto[], nullable, required — Output fields this action produces. Reference via {{step_id.field_name}}.
      - `name` string, required — Field name (use as key in input object)
      - `type` string, required — Field type: text, number, boolean, select, object, array, etc.
      - `display_name` string, required — Human-readable label
      - `description` string — What this field does
      - `required` boolean, required — Whether this field must be provided
    - `input_shape` unknown, required
    - `output_shape` unknown, required
    - `supported_trigger_types` string[], nullable, required — Trigger types this action is compatible with. Filter actions by this when composing a workflow for a specific trigger. Null means compatible with any trigger.
    - `can_test` boolean, required — Whether this action supports being tested in isolation via the dashboard test runner.
  - `trigger_types` TriggerTypePublicDto[], required — Available trigger types
    - `type` string, required — Trigger type identifier. Use this as the "trigger_type" when creating a workflow.
    - `name` string, required — Human-readable name
    - `description` string, required — What this trigger does
    - `icon` string, required — Icon name
    - `payload_def` unknown, required
    - `configuration_def` unknown, required
  - `block_types` object[], required — Available control-flow block types
    - `type` string, required
    - `name` string, required
    - `description` string, required
  - `operators` OperatorPublicDto[], required — Condition operators for if-else blocks, from the engine registry. This is the complete set the runtime evaluates — always pick "operatorName" from this list.
    - `name` string, required — Operator identifier — use this exact value as "operatorName" in conditions (e.g. "equals", "notEquals", "stringContains").
    - `display_name` string, required — Human-readable name
    - `type` 'Unary' | 'Binary' | 'Logical', required — Operator arity. "Unary": condition takes "left" only. "Binary": condition takes "left" and "right". "Logical": "and"/"or" take a "conditions" array of nested conditions; "not" takes a single "condition".
    - `applies_to` string[], required — Field types this operator can be applied to
  - `extra_variables` unknown[], required — Field schemas for the extra reference scopes available in every run, beyond the trigger payload and step outputs. Each entry's "name" is the scope root and its "properties" are the referenceable fields: {{metadata.<field>}} (date/time of the run), {{run.<field>}}, {{workflow.<field>}}, {{organization.<field>}}, and {{variables.<key>}} for the organization's global variables. Leaf scopes have no "properties" and are referenced directly, e.g. {{routingSkills}} — a JSON string of every org skill (name + description).
    - unknown

## Other responses

- `500` — Internal Server Error

---

[API](https://skmtc.net/open/apis/opencx-api.md) · [All operations](https://skmtc.net/open/apis/opencx-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/open/opencx-api/revisions/57b06b52302d/schema)
