Skip to main content
The AgentRuntime public API is served by the BFF at https://api.agentruntime.io. All customer integrations should use this base URL. For request/response samples, see API examples.

Interactive explorer

Browse a subset of workflow and run endpoints in the marketing site’s Scalar UI: agentruntime.io/api-reference
The marketing OpenAPI spec covers core workflow surfaces. It may lag behind the full BFF route catalog. Cross-check with the tables below or test against api.agentruntime.io.

OpenAPI specifications

Hand-authored OpenAPI 3.1 specs in the monorepo (not auto-generated from handlers):
SpecCoverage
Billing API/v1/config/stripe, /v1/billing/*
Onboarding API/v1/onboarding/*, /v1/setup/*
There is no single full-BFF OpenAPI file today. Use this page and product guides for workflows, integrations, and auth.

Authentication

All authenticated requests use either:
  • Session cookie — Browser sessions from the Console
  • Bearer PATAuthorization: Bearer pat_... for programmatic access
Scoped requests also require:
X-Tenant-Id: your-workspace-slug
X-Project-Id: your-project-id
See API authentication. Role shorthand in tables: viewer+ = project_viewer or higher, contributor+ = project_contributor or higher, tenant_admin = workspace billing admin.

Workflows

Base path: /v1/workflows
MethodPathRoleDescription
GET/v1/workflowsviewer+List workflows
POST/v1/workflowscontributor+Create workflow
GET/v1/workflows/{id}viewer+Get workflow
PATCH/v1/workflows/{id}contributor+Update draft graph or run_setup (Save defaults)
DELETE/v1/workflows/{id}contributor+Archive workflow
POST/v1/workflows/{id}/versionscontributor+Publish version
GET/v1/workflows/{id}/versionsviewer+List versions
POST/v1/workflows/{id}/validatecontributor+Dry-run graph validation
POST/v1/workflows/{id}/commandcontributor+Run control (see below)
GET/v1/workflows/{id}/runsviewer+List runs for workflow
GET/v1/workflows/{id}/streamviewer+WebSocket event stream

Start, pause, resume, stop

POST /v1/workflows/{id}/command
{
  "command": "start",
  "params": {
    "trigger_type": "api",
    "trigger_payload": {
      "topic": "weekly digest",
      "message": "Hello"
    },
    "trigger_steps": {
      "step-uuid-optional": { "prompt": "per-step override" }
    },
    "use_run_setup_defaults": false
  }
}
ParamDescription
trigger_payloadGlobal shared input → {{input.*}}
trigger_stepsPer-step map (optional overrides / gated entry grants)
use_run_setup_defaultsWhen true, merge saved Studio defaults from the workflow version; request keys win on conflicts. Default false.
params become workflow input ({{input.*}} in steps). See Run setup.
commandparamsEffect
startTrigger fieldsStart a new run
pauserun_idPause scheduling
resumerun_idResume paused run
stoprun_id, optional modeStop run (immediate default, or graceful)

Workflow connection overrides

API only — no Console panel yet. See Feature availability.
MethodPathRoleDescription
GET/v1/workflows/{id}/connection-overridesviewer+List overrides
PUT/v1/workflows/{id}/connection-overridescontributor+Replace override map

Runs and human tasks

MethodPathRoleDescription
GET/v1/runsviewer+Tenant-wide run feed (Command Center data source)
GET/v1/workflows/{id}/runs/{runID}/eventsviewer+Step event log
GET/v1/workflows/{id}/runs/{runID}/contextviewer+Run variables and step results
GET/v1/tasks/pendingviewer+Pending human tasks (tenant inbox)
GET/v1/workflows/{id}/runs/{runID}/tasks/pendingcontributor+Pending tasks for one run
POST/v1/workflows/{id}/runs/{runID}/tasks/{task_id}/completecontributor+Approve or reject human task
Complete task body:
{
  "approved": true,
  "result": {
    "comment_body": "Optional fields merged into step result"
  }
}
The human task step result always includes approved. The Console Approve/Reject buttons send only { "approved": true|false }. See Human tasks.

Run event types

Persisted on GET /v1/workflows/{id}/runs/{runID}/events. See also Runs and Command Center — Failure handling.
event_typeDescription
step_startedStep began
step_completedStep succeeded, or synthetic skip (data.skipped: true)
step_failedStep error; run may transition to failed
step_cancelledStep was in flight when another step failed the run
state_changedRun status transition
run_started / run_rejectedRun lifecycle
Skip reasons on step_completed when skipped: true:
reasonMeaning
blockedRun failed before this step started
out_of_scopeEpisode mode — step outside scope
step_disabledStep disabled in graph
Cancelled step (step_cancelled): data.cancelled: true, data.reason: "run_failed", optional caused_by_step_id. See Runs and Command Center — Failure handling for Console badges.

Inbound webhooks

MethodPathAuthDescription
POST/v1/inbound-webhookscontributor+Create subscription
GET/v1/inbound-webhookscontributor+List subscriptions
DELETE/v1/inbound-webhooks/{id}contributor+Delete subscription
POST/v1/inbound-webhooks/{subscription_id}HMAC + Bearer PATPublic ingress — starts run
Create subscription:
{
  "workflow_id": "workflow-uuid",
  "name": "form-leads",
  "automation_pat_id": "optional-stored-pat-id",
  "automation_bearer": "pat_…"
}
Response includes ingress_url, signing_secret (once), and subscription. Ingress request headers:
  • Authorization: Bearer pat_…
  • X-Agentruntime-Signature: sha256=<hmac-sha256 of raw body>
  • Content-Type: application/json
See Inbound webhooks.

Connections

Base path: /v1/connectionsproject_contributor
MethodPathDescription
GET/v1/connectionsList workspace connections
POST/v1/connectionsCreate custom connection
PATCH/v1/connections/{id}Update connection
DELETE/v1/connections/{id}Delete connection
GET/v1/connections/{id}/credentialsReveal credential metadata (not full secrets)

Google OAuth

MethodPathDescription
GET/v1/connections/google/configWhether Google connect is enabled
POST/v1/connections/google/oauth-urlStart OAuth
POST/v1/connections/google/completeComplete OAuth callback
GET/v1/connections/google/accounts/{connectionId}Account + enabled services
PATCH/v1/connections/google/accounts/{connectionId}/servicesEnable/disable services

WhatsApp

MethodPathDescription
GET/v1/connections/whatsapp/configWhether WhatsApp connect is enabled
POST/v1/connections/whatsapp/completeComplete embedded signup
POST/v1/connections/whatsapp/manualManual WABA credentials

MCP

Base path: /v1/mcpproject_contributor unless noted.

Servers and catalog

MethodPathDescription
GET/v1/mcp/platform-catalogPlatform adapter catalog
GET/v1/mcp/toolsTool catalog
GET/v1/mcp/serversTenant MCP servers
POST/v1/mcp/serversRegister tenant server
GET/v1/mcp/servers/{id}Server detail
POST/v1/mcp/servers/{id}/validateRun validation checks
POST/v1/mcp/servers/{id}/connections/{connection_id}/validateValidate connection binding

Instances and config profiles

MethodPathDescription
GET/v1/mcp/instancesList instances
POST/v1/mcp/instancesCreate instance
POST/v1/mcp/instances/resolveResolve instances for workflow
GET/v1/mcp/instances/{id}/config-profilesList profiles
POST/v1/mcp/instances/{id}/config-profilesCreate profile
PATCH/v1/mcp/instances/{id}/config-profiles/{profile_id}Update profile wiring
POST/v1/mcp/instances/{id}/config-profiles/{profile_id}/set-activeSet active profile
Duplicate connection CRUD also exists under /v1/mcp/connections for legacy clients.

AI, chat, and memory

MethodPathRoleDescription
POST/v1/autopilot/chatviewer+Autopilot message
GET/v1/autopilot/streamviewer+Streaming response
GET/POST/v1/chat/*viewer+Chat service proxy
GET/v1/llm-provider-keys/catalogviewer+LLM model catalog
POST/v1/llm/resolvecontributor+Resolve model ref

Memory (preview)

Memory routes require memory kernel configuration. Console Memory UI may be off in production — see Feature availability.
MethodPathDescription
POST/v1/memory/searchSemantic search
POST/v1/memory/index-conversationIndex chat episode
POST/v1/memory/index-fileIndex work file
POST/v1/memory/extract/batchBatch extract jobs
GET/v1/memory/extract/{jobId}Extract job status
POST/v1/memory/tools/callAgent memory tool call

Billing endpoints

Base path: /v1/billing
MethodPathRoleDescription
GET/v1/billing/summarycontributor+Tenant/project summary
GET/v1/billing/planscontributor+Plan catalog for this deployment’s product_code (Stripe-synced)
GET/v1/billing/statuscontributor+Subscription and trial status
GET/v1/billing/usagecontributor+Credit balances (microcredits)
GET/v1/billing/usage-dimensionsviewer+Usage breakdown dimensions
GET/v1/billing/usage-historycontributor+Metered usage ledger
GET/v1/billing/payment-historycontributor+Payments and top-ups
GET/v1/billing/action-pricingcontributor+Resolved per-action prices
POST/v1/billing/topups/payg/intentcontributor+PAYG top-up Stripe intent
POST/v1/billing/trialtenant_adminStart trial
POST/v1/billing/subscriptiontenant_adminActivate subscription
POST/v1/billing/subscription/change-plantenant_adminChange plan
POST/v1/billing/subscription/canceltenant_adminCancel at period end (default)
POST/v1/billing/subscription/convert-trial-nowtenant_adminEnd trial early
POST/v1/billing/codes/applytenant_adminApply billing code
POST/v1/billing/discounts/validatetenant_adminValidate discount
GET /v1/config/stripe — publishable Stripe config for Console checkout. GET /v1/billing/plans returns tiers for the BFF’s configured product (AgentRuntime Console → agentruntime). Catalog rows are keyed by (product_code, plan_code) in Wheelhouse; the public response surfaces plan_code and pricing fields. See Multi-product billing. See Billing and credits and API examples.

Agents

Base path: /v1/agentsproject_viewer (read), project_contributor (write). Requires enableAgents in your deployment.
MethodPathDescription
GET/v1/agentsList agents
POST/v1/agentsCreate agent
GET/v1/agents/{id}Get agent
PATCH/v1/agents/{id}Update agent
DELETE/v1/agents/{id}Delete agent

Analytics

Base path: /v1/analyticsproject_contributor
EndpointMetric
/v1/analytics/live-runsCurrently running workflows
/v1/analytics/success-rateRun success percentage
/v1/analytics/execution-durationWall-clock execution time
/v1/analytics/runs-countRuns in selected window
/v1/analytics/steps-executedMetered workflow steps
/v1/analytics/credits-consumedCredits used in window
/v1/analytics/steps-summaryStep-type breakdown and latency
/v1/analytics/runs-timeseriesRun count over time
/v1/analytics/usage-timeseriesUsage over time
Query window=month|week|all or bounded from / to with optional granularity on timeseries endpoints. See Analytics.

Personal access tokens

MethodPathRoleDescription
GET/v1/patscontributor+List tokens
POST/v1/patscontributor+Create token
GET/v1/pats/{id}/revealviewer+Reveal token (once)
DELETE/v1/pats/{id}contributor+Revoke token
Console Settings → API keys manages the same keys for inbound webhook automation.

Error codes

StatusMeaning
401Missing or invalid authentication
403Insufficient project role or PAT scope
404Resource not found
422Validation error (graph, bindings, billing)
429Rate limited
5xxServer error — retry with backoff

SDKs and collections

Contact support@agentruntime.io for enterprise API SLAs.