First 200 users get the Growth plan for $19/mo.

Claim
Browse the docs

Guides

Workflows over the API

List, run and poll the workspace's automations from a script or an agent.

Workflows are the automations built in the app. Over the API they are exposed as three MCP tools under the workflows:run scope: list_workflows, run_workflow, get_workflow_run. There is no REST route for workflows yet; a script calls the MCP endpoint with a JSON-RPC body, which is one POST per call. The starter workflows a workspace can clone are listed publicly at overads.io/templates; templateKey on a listed workflow names the one it came from.

List

curlbash
curl -sS https://api.overads.io/public/v1/mcp -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_workflows","arguments":{}}}'

Each row has id, name, description, enabled, autonomy, triggers (the trigger node types), templateKey, updatedAt. A disabled workflow can still be run manually.

Run

curlbash
curl -sS https://api.overads.io/public/v1/mcp -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"run_workflow","arguments":{"workflowId":"WORKFLOW_ID","triggerMeta":{"source":"nightly-job"},"idempotencyKey":"nightly-2026-09-11"}}}'

The run is queued and executes in the background; the result is { runId, workflowId, status, dryRun }. Pass dryRun: true to walk the data and condition nodes and report what the action nodes would stage without staging it. triggerMeta values are exposed to nodes as {{trigger.*}}.

A run is refused with plan_limit_reached when the plan's daily run cap is used up, and with a budget message when the monthly AI budget is spent. Report those as the plan limit, not as a failure of the workflow.

Poll

curlbash
curl -sS https://api.overads.io/public/v1/mcp -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_workflow_run","arguments":{"runId":"RUN_ID"}}}'
  • status is queued, running, succeeded, failed or skipped.
  • costMicros is null until the run finishes; null is not free.
  • steps are in order. A step that staged an action for a human to confirm says so; the action has not been performed.
  • proposalCount and draftPostCount say what the run left behind for a member to confirm or schedule.

Or skip polling: subscribe to workflow.run.completed and workflow.run.failed on a webhook. Both carry workflowId and runId.

The curl calls above use the legacy single-POST shape (no Accept: text/event-stream, no session), which the server keeps for one release. A long-lived integration should speak Streamable HTTP through an MCP client library instead; see MCP server.