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.
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:- List endpoints paginate with
limit/offsetand return{items, total, limit, offset}. - Errors carry a machine-readable code in
detail.code(for examplerevision_conflict,duplicate_run,invalid_state), with any extra context alongside it. - Action endpoints use a
:verbsuffix — for examplePOST /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

