Endpoints
| Method | Path | Purpose |
|---|---|---|
| POST | /v1/cases | Create case and consent snapshot |
| POST | /v1/cases/{id}/live-sessions | Create room/session and participant token |
| GET | /v1/live-sessions/{session_id} | Read live-session state |
| POST | /v1/live-sessions/{session_id}/frames | Register selected frame or explicit still |
| POST | /v1/live-sessions/{session_id}/join-requests | Request officer join or handoff |
| POST | /v1/cases/{id}/turns | Submit finalized transcript turn |
| POST | /v1/cases/{id}/media | Fallback upload/queued media |
| POST | /v1/cases/{id}/analyse | Start/resume reasoning |
| POST | /v1/research/search | Controlled research |
| POST | /v1/policy/validate | Exact verification |
| POST | /v1/escalations | Create human interrupt |
| POST | /v1/escalations/{id}/decision | Reviewer decision |
Download OpenAPI specification.
Events
case.created, live_session.created, participant.joined, media_mode.changed, track.started, frame.selected, frame.rejected, turn.accepted, analysis.evidence_requested, officer_join.requested, officer_join.completed, analysis.completed, policy.blocked, response.delivered and live_session.ended.
Contract rules
- Idempotency for case, session, frame and review commands.
- Room tokens are short-lived and role-scoped.
- Frame registration includes content hash, call timestamp, objective and quality result.
- Events use immutable IDs, schema version and causal/correlation IDs.
- Media-provider webhooks are authenticated and replay-protected.