Skip to main content
The Certior FastAPI server exposes a REST surface used by Certior Studio, programmatic integrations, and the GitHub Action webhook. Base path: /api/v1/.

Endpoint families

FamilyPath prefixWhat it covers
Authentication/authRegister, log in, rotate API keys, read the current user.
Tasks/tasksSubmit a task for verified execution.
Executions/executionsList executions, fetch a single execution, cancel one.
Workflows/workflowsMulti-stage orchestrations with per-stage policy.
Compliance/complianceList built-in presets, export an execution’s compliance package.
Releases/releasesRelease decisions, promotions, GitHub webhook.
Agents/agentsPlan verification, delegation, glass-box records.
Trust badge/trust/badgeSVG trust badge for a repo + commit.

Authentication

Every endpoint outside /auth/register and /auth/login requires an API key in the Authorization header:
Authorization: Bearer <api-key>
API keys are issued by POST /api/v1/auth/register or POST /api/v1/auth/login. Rotate them via POST /api/v1/auth/rotate. See Authentication for the full flow.

Response envelope

Successful responses are returned as JSON matching the documented *Response Pydantic model. Errors return a JSON body of shape:
{ "detail": "..." }
The detail field is a string for simple errors and a structured object for richer cases (for example, the task endpoint returns {"message": "...", "denied": [...]} when a request is denied by the policy ceiling).

Status codes

CodeMeaning
200OK.
201Created (e.g. POST /tasks, POST /workflows, POST /auth/register).
400Invalid policy or request body.
401Missing or invalid API key.
403Denied by role or policy ceiling.
404Resource not found.
422Request body did not validate against the Pydantic model.

OpenAPI

Running ./run.sh exposes /openapi.json and the Swagger UI at /docs for interactive exploration. The OpenAPI document is generated from the same Pydantic models the routes use, so it is always in sync with the running server.

Versioning

See API contract for the v1 stability guarantees.