API overview
VerifAIer exposes one FastAPI application (vailidator.api.routes:app). It speaks JSON over HTTP, is local-first (default base URL http://localhost:8000), and is organized into three authentication tiers. The reported service version comes from GET /health.
curl
curl -s http://localhost:8000/health
# {"status":"ok","version":"1.4.2"}
| Property | Value |
|---|---|
| Base URL (local-first) | http://localhost:8000 |
| Content type | application/json |
| Service version | 1.4.2 (from /health; the FastAPI app title is "VerifAIer") |
| Tiers | open /api/v1/* · session /api/vai/* · API-key /api/control/* |
| Egress | none by default, see local-first posture |
flowchart TD
REQ["HTTP request"] --> T{"path prefix?"}
T -->|"/api/v1/* + /health /validate /pipeline /dev/audit /sentinel/verify"| OPEN["OPEN TIER, no auth"]
T -->|"/api/auth/* /api/vai/* /api/orgs/* /api/observability/* /api/security/* /api/billing/*"| SESS["SESSION TIER, vai_session cookie OR X-Session-Token header"]
T -->|"/api/control/* (data endpoints)"| KEY["API-KEY TIER, X-API-Key: vrf_..."]
OPEN --> R["JSON response (local-first, no egress)"]
SESS --> A1{"valid session?"}
KEY --> A2{"valid key?"}
A1 -->|no| E401["401 Authentication required / Invalid or expired session"]
A2 -->|no| E401b["401 Authentication required / Invalid credentials · 403 revoked"]
A1 -->|yes| R
A2 -->|yes| R
Request routing by tier. Grounded in api/routes.py router mounts + auth/guards.py + cc/auth.py.How to read these docs. Auth requirements, status codes and pagination are stated per endpoint and verified against the code. Where a capability (rate limiting, pagination on some endpoints) is not implemented in the app, it is documented as current behavior and marked a deployment-gateway responsibility rather than glossed over.
Versioning
- URL versioning. The governance API is namespaced under
/api/v1/*. Thev1segment is the API version; new capabilities are added as new/api/v1endpoints, and existing response bodies grow only additively (new optional fields), preserving older clients. - Object versioning. Every domain object carries its own
*_versionstring,schema_version(evidence"1.0"),receipt_version,trust_version,passport_version, etc. Consumers can branch on these independently of the URL version. See the schemas. - Service version.
/healthreports the FastAPI app version (1.4.2), distinct from the API (v1) and object versions.
Local-first / no-egress posture
The API makes no outbound network calls by default. It is designed to run on your own infrastructure, laptop, VPC, air-gapped or sovereign, and the docs site itself vendors all assets (including diagrams) so nothing phones home.
- No egress on the evidence path. The default AI provider is a deterministic offline mock. A live provider makes an outbound call only when explicitly enabled, keyed and in live mode (triple-gated).
- Assessment endpoints never leave the box. Compliance / risk / quality / trust / passport / reputation / registry / signals operate purely on the evidence you POST, no model calls, no telemetry.
- Secrets stay server-side. API keys are read from the server environment; callers never send provider keys and never receive them. See security considerations.
- Persistence is local. The registry defaults to in-memory; the durable option is a local JSON store. No external database is required.
Complete API documentation index
All thirty topics in this API documentation set:
| # | Topic | Where |
|---|---|---|
| 1 | API overview | this page |
| 2 | Authentication model | api-auth |
| 3 | Authorization model | api-auth |
| 4 | API tiers (open / vai / control) | api-auth |
| 5 | Headers | api-auth |
| 6 | Request format | api-conventions |
| 7 | Response format | api-conventions |
| 8 | Error format | api-conventions |
| 9 | Status codes | api-conventions |
| 10 | Idempotency | api-conventions |
| 11 | Retries | api-conventions |
| 12 | Timeouts | api-conventions |
| 13 | Pagination | api-conventions |
| 14 | Rate limit posture | api-conventions |
| 15 | Versioning | this page |
| 16 | Security considerations | api-auth |
| 17 | Local-first / no-egress posture | this page |
| 18 | Endpoint-by-endpoint · authenticated | api-open / api-authenticated |
| 19 | curl examples | api-examples |
| 20 | Python examples | api-examples |
| 21 | TypeScript examples | api-examples |
| 22 | SDK mapping | api-examples |
| 23 | First audit API path | api-open |
| 24 | Registry API path | api-open |
| 25 | Dashboard API path | api-open |
| 26 | Control Center API path | api-open |
| 27 | Signals export API path | api-open |
| 28 | Authenticated artifact / receipt / control APIs | api-authenticated |
| 29 | Common mistakes | api-troubleshooting |
| 30 | Troubleshooting | api-troubleshooting |
Related. For how the runtime produces these objects internally, see the engineering docs. For a guided first call, see First audit and the first-audit API path.