Skip to main content
Workflows are in beta. The APIs documented here are stable to build against, but details may evolve before general availability — check the changelog for updates.

What are Workflows?

A workflow is a graph of nodes connected by conditions. Where a batch places one call per contact, a workflow orchestrates a whole sequence per contact: call them, branch on whether they picked up, retry twice with a 2-minute gap if they didn’t, extract what they said if they did, push the result to your CRM, and follow up on WhatsApp — each contact walking the graph independently. Typical uses:
  • Lead qualification — call, score the conversation from extracted fields, route hot leads to an API and cold leads to a WhatsApp nurture message.
  • Collections and reminders — call, capture a promise-to-pay date, record it via your API, schedule the follow-up.
  • Unreachable-contact handling — retry ladders with configurable gaps, then a fallback channel.

The object model

Workflow

The named container. Holds one mutable draft and any number of immutable published versions.

Draft and versions

You edit the draft, then publish it as a frozen version. Runs always execute published versions — publishing again never changes anything already running.

Campaign

Runs one published version over a batch of uploaded contacts. Pins its version at creation time.

Execution

One contact’s journey through the graph — node attempts, matched cases, and a terminal outcome.
The lifecycle, end to end:

Nodes at a glance

Each node routes onward through ordered cases — condition expressions over the execution’s variables. See Nodes for every node’s configuration and Conditions and variables for the expression language.

Authentication and conventions

All workflow endpoints live on the standard API host and authenticate with your Bolna API key:
Three conventions to know:
  • List endpoints paginate with limit/offset and return {items, total, limit, offset}.
  • Errors carry a machine-readable code in detail.code (for example revision_conflict, duplicate_run, invalid_state), with any extra context alongside it.
  • Action endpoints use a :verb suffix — for example POST /workflow-campaigns/{id}:start — with an empty JSON body.

Next Steps

Quickstart

Create, publish and run your first workflow with curl

Nodes

Every node type with its configuration and examples

Conditions and variables

The expression language behind branching

Campaigns

Run a workflow over thousands of contacts