Mediflo
REST APIWorkflows

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`.

POST/bots/{botId}/workflows

Authorization

ApiKeyAuth
AuthorizationBearer <token>

An external API key, sent as Authorization: Bearer mflo_…. Scopes are checked per route; see each operation’s description.

In: header

Path Parameters

botId*string
Formatuuid

Request 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"  }}