Skip to content

API reference ​

Every sopops endpoint, grouped by what you're trying to do. Paths start with /v1, and {ws} is a workspace id (each team has one).

The OpenAPI spec at /openapi.json lists every field, and /docs lets you try each endpoint. Each operation's operationId is its route name (list_workspaces, get_agent, config_put_procedure), so generated clients get readable function names. The web UI's typed client (web/src/client) is generated this way. Paths outside /v1 (and /docs, /openapi.json) serve the web UI.

Pages ​

PageWhat it covers
Agents and configEditing agents, shared instructions, procedures and groups; the files behind them; stateless sopc checks
ReleasesPublishing and rolling back, serving instructions when a call starts, and pushing them to ElevenLabs or Vapi
SessionsSending calls and chats to sopops, streaming, backfill, the session format, and importing a file
Checks and reviewHow sessions are checked, grouped mistakes, verdicts, suggested fixes, and reworded rules
InsightsPass rates, trends, release comparisons, A/B tests, and model spend
Teams and accessSign-in, teams and members, tokens, and a team's AI keys and models
ImportImporting agents' existing instructions, including the endpoints a coding agent calls
GitHubConnecting a repository, syncing, and the GitHub App

Authentication ​

Agents, webhooks and coding agents use workspace tokens, sent as Authorization: Bearer <token> (Tokens). Everything else needs a signed-in session once sign-in is on: passwords, GitHub, Google or email (Sign-in). With sign-in off, only tokens guard anything, so keep sopops on a private network. Sign-in and access lists which endpoints need what.

Errors ​

A 404 or 409 has {"detail": "..."}.

Errors that come from sopc return 422 {"valid": false, "issues": [...]}. Each issue has sopc's code, message, path and severity, plus where it belongs in the forms:

Field
kindagent, instruction, procedure, group or settings
idWhich one
fieldAs the /config endpoints name it, e.g. blocks, steps
indexWhich entry of a list field
textThe problem in plain words, e.g. "Lists 'nope', which isn't a shared instruction, procedure or group."

sopops is open source under Apache-2.0.