RUN · 0006REST V1 · MCP · OAUTH 2.1
DEVELOPERS

Everything in the canvas, over the wire.

A REST API and a native MCP server, authenticated with one bearer token. Run bots, read runs down to each step, and let an agency build and fire them.

01auth.tokenAUTHENTICATE

One token, three scopes.

Create a token in the app under Developer, API and MCP. It looks like opflow_ and carries read, write and run scopes. Send it as a bearer header on every request.

SESSION · CONNECTBASH
# mint a token in OpFlow: Developer → API & MCP$ export OPFLOW_TOKEN=opflow_xxxxxxxxxxxxxxxx$ curl https://flow.opscend.net/api/v1/bots -H "Authorization: Bearer $OPFLOW_TOKEN"{ "data": [ { "id": "wf_…", "name": "lead-intake", "enabled": true } ] }$ curl -X POST https://flow.opscend.net/api/v1/bots/wf_…/run -d '{ "trigger_payload": { "email": "[email protected]" } }'{ "data": { "run_id": "run_7f3a", "status": "pending" } }
02rest.v1REST API · V1

The endpoints.

Owner-scoped end to end. A token only ever sees its owner's bots and runs. The full contract is served as an OpenAPI 3.1 spec.

GET/botsList your botsread
GET/bots/{id}Fetch one botread
POST/bots/{id}/runRun a bot now, optional trigger_payloadrun
POST/sub-agents/{id}/runRun an agent, with a goal for AI agentsrun
GET/runsRecent runs, filter by workflow_id (a bot's id), status, limitread
GET/runs/{id}One run with every step's input and outputread
GET/openapiThe OpenAPI 3.1 spec, publicopen
03mcp.serverMCP SERVER

Point an AI client at OpFlow.

A native Model Context Protocol server, and a full OAuth 2.1 provider so Cowork and claude.ai connect in one click. Claude Code and Cursor connect with the same token: list the node catalog, validate a graph, build a bot, run it.

claude mcp add --transport http opflow https://flow.opscend.net/api/public/mcp --header "Authorization: Bearer opflow_YOUR_TOKEN"
04engine.sameTHE SAME ENGINE

No sandboxed subset.

The API runs your real bots on the engine the canvas uses.