API · v1 · REST + MCP

Every Routix workflow is also an API endpoint.

Embed agents in your product, your warehouse jobs, your Cursor, your Claude Desktop. Routix exposes REST, webhooks, streaming SSE, and an MCP server out of the box.

cURL
curl https://api.routix.com/v1/workflows/renewal-brief/run \
  -H "Authorization: Bearer $ROUTIX_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "inputs": { "window_days": 30 }, "mode": "review" }'

# streamed events:
event: plan      data: { steps: 5 }
event: tool      data: { name: "salesforce.query", ms: 412 }
event: draft     data: { count: 6 }
event: verify    data: { pass: 5, hold: 1 }
event: complete  data: { trace_id: "8f24...", spent_credits: 21 }
typescript
import { Routix } from "@routix/sdk";

const rx = new Routix({ apiKey: process.env.ROUTIX_KEY });

const run = await rx.workflows.run("renewal-brief", {
  inputs: { window_days: 30 },
  mode:   "review",
});

for await (const ev of run.stream()) {
  console.log(ev.type, ev.data);
}
python
from routix import Routix

rx = Routix(api_key=os.environ["ROUTIX_KEY"])

run = rx.workflows.run(
  "renewal-brief",
  inputs={"window_days": 30},
  mode="review",
)

for ev in run.stream():
  print(ev.type, ev.data)
~/.claude/mcp.json
{
  "mcpServers": {
    "routix": {
      "command": "npx",
      "args": ["@routix/mcp", "--tenant", "acme"],
      "env": { "ROUTIX_KEY": "rx_live_..." }
    }
  }
}

# every Routix workflow now appears as a tool to Claude

Endpoint reference.

MethodPathDescription
GET/v1/workflowsList workflows in your tenant.
POST/v1/workflows/:id/runRun a workflow synchronously or stream events.
GET/v1/runs/:idGet a run, its trace, and outputs.
POST/v1/runs/:id/approvePromote a held output to action.
GET/v1/patternsList mined patterns with hours-saved + frequency.
POST/v1/patterns/:id/synthesizeGenerate a workflow from a pattern.
GET/v1/evals/:workflowRead the eval set + last run scores.
POST/v1/webhooksRegister a webhook for events.