REST API
The HTTP API behind the CLI, MCP, and dashboard.
Base URLs & versions
One HTTP API powers the CLI, MCP server, and dashboard. It’s JSON in, JSON out, and authenticated with an API token.
https://workeros-api.floom.devRoutes are mounted under several prefixes for client convenience — /workers, /api/workers, /v1/workers, and /api/v1/workers all hit the same handler. This reference uses /api. There is no breaking-version split today; /v1 is an alias.
Authentication
Send a personal or workspace token in the x-floom-token header (a Supabase Authorization: Bearer JWT also works). Scope to a workspace with x-workeros-workspace. Full detail on the Authentication page.
curl https://workeros-api.floom.dev/api/workers \ -H "x-floom-token: floom_xxx" \ -H "x-workeros-workspace: ws_123" # optional
Conventions
- Content type — request and response bodies are JSON (
application/json), except uploads (multipart) and downloads (binary/ZIP). - IDs — resources use stable string ids (worker ids are human-readable slugs; runs are
run_…). - Timestamps — ISO-8601 UTC strings.
- Methods —
GETreads,POSTcreates/acts,PUT/PATCHupdate,DELETEremoves.
Pagination
Most list endpoints accept limit and offset; the default and cap vary by endpoint (for example, /runs defaults to 50 with a max of 200). Runs also support a stable cursor for deep pagination — pass both cursor fields together:
limitnumberoffsetnumber0.before_created_atstringbefore_idstringcurl "https://workeros-api.floom.dev/api/runs?limit=50&before_created_at=2026-06-01T00:00:00Z" \ -H "x-floom-token: floom_xxx"
Errors & rate limits
Errors use standard HTTP status codes with a JSON body:
{ "detail": "Worker not found" }400Bad Request401Unauthorized403Forbidden404Not Found409Conflict429Too Many Requests429 includes Retry-After (seconds).Webhook triggers
A worker with a webhook trigger gets a secret-protected URL. POST any JSON body to start a run — the body becomes the worker’s input payload. The token query parameter must match the worker’s webhook secret.
curl -X POST "https://workeros-api.floom.dev/api/webhooks/<worker_id>?token=<secret>" \
-H "content-type: application/json" \
-d '{ "email": "lead@acme.com", "plan": "pro" }'
# → { "status": "queued", "run_id": "run_..." }Rotate the secret with workers.update (webhook_secret_rotate: true) or in the dashboard. Outbound notifications go the other way — configure worker alerts to POST a webhook or email on run events.
Endpoint reference
Grouped by resource. Paths show the /api prefix; the same routes exist at / and /v1. Many resources also expose share-links, public (token-scoped) variants, and version history beyond what’s listed here.
Workers
Create, read, edit, version, and control workers.
/api/workers/api/workers/api/workers/{id}/api/workers/{id}/files/api/workers/{id}/pause/api/workers/{id}/resume/api/workers/{id}/archive/api/workers/{id}/restore/api/workers/{id}/api/workers/{id}/visibility/api/workers/{id}/versions/api/workers/{id}/rollback/{sha}/api/workers/{id}/sample-input/api/workers/{id}/bundle.zip/api/workers/{id}/stats/api/workers/{id}/runs/timeseries/api/workers/{id}/logs/api/workers/{id}/alertsRuns
Trigger runs, read results, stream live, cancel, and export.
/api/runs/api/workers/{worker_id}/runs/api/runs/{run_id}/api/runs/{run_id}/cancel/api/runs/{run_id}/logs/api/runs/{run_id}/logs/stream/api/runs/{run_id}/stream/api/runs/{run_id}/events/api/runs/{run_id}/download/api/runs/{run_id}/artifacts/{artifact_id}/download/api/runs/export.csvApprovals
Resolve runs paused for a human decision.
/api/approvals/api/approvals/count/api/runs/{run_id}/approve/api/runs/{run_id}/reject/api/approvals/{approval_id}/approveContexts (brain)
Manage the file packs workers read at run time.
/api/contexts/api/contexts/{name}/api/contexts/{name}/api/contexts/{name}/api/contexts/{name}/files/{path}/api/contexts/{name}/files/{path}/api/contexts/{name}/files/{path}/api/contexts/{name}/upload/api/contexts/{name}/visibility/api/contexts/{name}/versions/api/contexts/{name}/rollback/{sha}Connections
Authorize apps (OAuth) and register MCP servers.
/api/connections/api/connections/api/connections/mcp/api/connections/{id}/status/api/connections/{id}/test/api/connections/{id}/tools/api/connections/{id}Secrets
Encrypted credentials, referenced by name in worker bundles.
/api/secrets/api/secrets/{name}/api/secrets/{name}/test/api/secrets/{name}Integrations & MCP tools
Browse the catalog and register reusable MCP tools.
/api/integrations/catalog/api/integrations/catalog/{slug}/tools/api/mcp-toolsWorkspaces & members
Tenancy, membership, and workspace API tokens.
/api/workspaces/api/workspaces/api/workspaces/{id}/api/workspaces/{id}/api/workspaces/{id}/select/api/workspaces/{id}/members/api/workspaces/{id}/members/invite/api/workspaces/{id}/members/{user_id}/role/api/workspace/tokensAuth & tokens
Identity, sessions, and personal tokens. See the Authentication page.
/auth/me/auth/tokens/auth/refresh/api/cli-auth/devices/auth/cli-exchangeSystem & health
Health checks, platform info, and workspace overview.
/healthz/health/health/details/api/system/info/api/system/overview/api/system/platform-configChat & conversations
Drive the workspace agent and read its history.
/api/chat/api/conversations/api/conversations/{id}Worked examples
Run a worker and poll for the result
# 1. trigger
RUN=$(curl -s -X POST https://workeros-api.floom.dev/api/workers/inbox-cleaner/runs \
-H "x-floom-token: floom_xxx" -H "content-type: application/json" \
-d '{ "inputs": { "limit": 20 } }' | jq -r .run_id)
# 2. poll until it settles
curl -s "https://workeros-api.floom.dev/api/runs/$RUN" \
-H "x-floom-token: floom_xxx" | jq '{ status, outputs }'Stream a run live (SSE)
curl -N "https://workeros-api.floom.dev/api/runs/<run_id>/events" \ -H "x-floom-token: floom_xxx"