Create a conversation workflow
Pass `template` (visit-confirmation | registration | inbound-intake | blank) to start from a working graph, or `definition` to supply your own — not both. `visit-confirmation` and `registration` are available only to tenants with the matching clinic module (visit confirmation, visit registration); for other tenants they return 404 `TENANT_MODULE_UNAVAILABLE`. A node's `skillRef` must name a skill the bot can actually serve on a call (one on its current config snapshot, or — for a never-published bot — an enabled free-form procedure); otherwise the write is refused with 400 `BOT_WORKFLOW_SKILL_REF_NOT_SERVABLE` and `details.skillRefs` names the offending nodes. A node's `overrideSystemPrompt` can only be switched on by the Mediflo team: 403 `BOT_WORKFLOW_SYSTEM_PROMPT_OVERRIDE_STAFF_ONLY` with `details.nodeIds`. Required scope: `bots.write`.
/bots/{botId}/workflowsAuthorization
ApiKeyAuth An external API key, sent as Authorization: Bearer mflo_…. Scopes are checked per route; see each operation’s description.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/bots/497f6eca-6276-4993-bfeb-53cbbbba6f08/workflows" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "botId": "58ed41f0-04bf-402f-9853-7143ef7dd5ce", "name": "string", "description": "string", "version": 0, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }}Return the bot to prompt-only mode POST
Clears the active flag without deleting the workflow, so it can be reactivated later. Idempotent — deactivating an already-inactive workflow succeeds with `wasActive: false`. Takes effect on the next call. Required scope: `bots.write`.
Replace a workflow PUT
Runs the canonical validator; issues carry `nodeId` and `field`. Send `expectedVersion` (the `version` you last read) to avoid clobbering a concurrent edit — a mismatch returns 409 with both versions. A node’s `skillRef` is also checked against what the bot would actually serve: 400 `BOT_WORKFLOW_SKILL_REF_NOT_SERVABLE` with `details.skillRefs` when a pin is not on the bot’s current config snapshot (publish the bot config, or unpin it). Switching a node’s `overrideSystemPrompt` on is reserved for the Mediflo team: 403 `BOT_WORKFLOW_SYSTEM_PROMPT_OVERRIDE_STAFF_ONLY` with `details.nodeIds` (a node that already carries it may keep it or drop it). Required scope: `bots.write`.