Conv-Flow logoConv-Flow

API Reference

REST API for Conv-Flow. Console routes require session cookie or API key (Bearer cf_xxx).

Auth

Sign up and log in to get a session cookie. For programmatic access, use API keys from Settings.

POST/api/v1/console/auth/signup

Body

{
  "email": "[email protected]",
  "password": "password123"
}

curl -X POST "https://www.conv-flow.com/api/v1/console/auth/signup" -H "Content-Type: application/json" -d '{"email":"[email protected]","password":"password123"}'

POST/api/v1/console/auth/login

Body

{
  "email": "[email protected]",
  "password": "password123"
}

curl -X POST "https://www.conv-flow.com/api/v1/console/auth/login" -H "Content-Type: application/json" -d '{"email":"[email protected]","password":"password123"}'

GET/api/v1/console/auth/me

curl -X GET "https://www.conv-flow.com/api/v1/console/auth/me"

API keys

Create keys in Settings. Use in requests:

Authorization: Bearer cf_your_api_key
# or
X-API-Key: cf_your_api_key

Workflows (console)

GET/api/v1/console/workflows

curl -X GET "https://www.conv-flow.com/api/v1/console/workflows"

POST/api/v1/console/workflows

Body

{
  "name": "My workflow",
  "description": "Optional"
}

curl -X POST "https://www.conv-flow.com/api/v1/console/workflows" -H "Content-Type: application/json" -d '{"name":"My workflow","description":"Optional"}'

GET/api/v1/console/workflows/:workflowId

curl -X GET "https://www.conv-flow.com/api/v1/console/workflows/:workflowId"

PATCH/api/v1/console/workflows/:workflowId

Body

{
  "name": "Updated name",
  "draftGraphJson": {
    "nodes": [],
    "edges": []
  }
}

curl -X PATCH "https://www.conv-flow.com/api/v1/console/workflows/:workflowId" -H "Content-Type: application/json" -d '{"name":"Updated name","draftGraphJson":{"nodes":[],"edges":[]}}'

POST/api/v1/console/workflows/:workflowId/publish

curl -X POST "https://www.conv-flow.com/api/v1/console/workflows/:workflowId/publish"

POST/api/v1/console/workflows/:workflowId/duplicate

curl -X POST "https://www.conv-flow.com/api/v1/console/workflows/:workflowId/duplicate"

Conversations (console)

GET/api/v1/console/workflows/:workflowId/conversations?limit=20&offset=0

curl -X GET "https://www.conv-flow.com/api/v1/console/workflows/:workflowId/conversations?limit=20&offset=0"

GET/api/v1/console/conversations/:conversationId/messages

curl -X GET "https://www.conv-flow.com/api/v1/console/conversations/:conversationId/messages"

DELETE/api/v1/console/conversations/:conversationId

curl -X DELETE "https://www.conv-flow.com/api/v1/console/conversations/:conversationId"

Analytics

GET/api/v1/console/workflows/:workflowId/analytics?from=2026-02-01&to=2026-02-14

curl -X GET "https://www.conv-flow.com/api/v1/console/workflows/:workflowId/analytics?from=2026-02-01&to=2026-02-14"

Widget API

End-user chat. Authenticate with X-Workflow-Token (publish token).

POST/api/v1/widget/:workflowId/conversations

Headers

X-Workflow-Token: ptk_live_xxx

Body

{
  "externalUserId": "optional",
  "metadata": {
    "locale": "fr-FR"
  }
}

curl -X POST "https://www.conv-flow.com/api/v1/widget/:workflowId/conversations" -H "X-Workflow-Token: ptk_live_xxx" -H "Content-Type: application/json" -d '{"externalUserId":"optional","metadata":{"locale":"fr-FR"}}'

POST/api/v1/widget/:workflowId/conversations/:conversationId/messages

Headers

X-Workflow-Token: ptk_live_xxx

Body

{
  "content": "Hello"
}

curl -X POST "https://www.conv-flow.com/api/v1/widget/:workflowId/conversations/:conversationId/messages" -H "X-Workflow-Token: ptk_live_xxx" -H "Content-Type: application/json" -d '{"content":"Hello"}'

GET/api/v1/widget/:workflowId/conversations/:conversationId/messages

Headers

X-Workflow-Token: ptk_live_xxx

curl -X GET "https://www.conv-flow.com/api/v1/widget/:workflowId/conversations/:conversationId/messages" -H "X-Workflow-Token: ptk_live_xxx"

Inbound webhook

Trigger workflows from Zapier, Make, or any HTTP client.

POST/api/v1/widget/:workflowId/webhook

Headers

x-publish-token: ptk_live_xxx

Body

{
  "content": "Hello from Zapier"
}

curl -X POST "https://www.conv-flow.com/api/v1/widget/:workflowId/webhook" -H "x-publish-token: ptk_live_xxx" -H "Content-Type: application/json" -d '{"content":"Hello from Zapier"}'

MCP (AI agents)

MCP endpoint for Cursor, Claude, Windsurf, VS Code. Use API key in Authorization header. See User Guide → MCP for setup.

POST/api/mcp

Headers

Authorization: Bearer cf_xxx

curl -X POST "https://www.conv-flow.com/api/mcp" -H "Authorization: Bearer cf_xxx"

Tools: convflow_list_workflows, convflow_create_workflow, convflow_get_embed_snippet, etc.

Error format

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Not authenticated",
    "details": {}
  }
}