Skip to content

REST API Reference

All routes are served by FastAPI under /api (backend/app/main.py registers one router per resource from backend/app/routers/). Interactive OpenAPI documentation with request/response schemas is available from a running backend at http://localhost:8001/docs; the Pydantic models behind every payload are in backend/app/schemas.py.

In Docker Compose the frontend nginx proxies /api from port 3000, so the same paths work against http://localhost:3000.

Method Path Purpose
GET /api/health Liveness check
Method Path Purpose
POST /api/sessions Create a session
GET /api/sessions List sessions
GET /api/sessions/{id} Get one session
PATCH /api/sessions/{id} Update name, notes, meeting type/context, group, state
DELETE /api/sessions/{id} Delete a session and its children
GET /api/sessions/{id}/segments List call segments
GET /api/sessions/{id}/segments/{n}/audio Download a segment’s recorded WAV
POST /api/sessions/{id}/enhance-insights Re-run insight enrichment after speaker changes
GET /api/sessions/{id}/agents Effective per-session agent list
PUT /api/sessions/{id}/agents Set per-session agent enable/disable overrides
Method Path Purpose
GET /api/groups List groups
POST /api/groups Create a group
PATCH /api/groups/{id} Rename/update a group
DELETE /api/groups/{id} Delete a group
Method Path Purpose
POST /api/sessions/{id}/directives Add a directive
GET /api/sessions/{id}/directives List directives
PATCH /api/sessions/{id}/directives/{directive_id} Edit or (de)activate
DELETE /api/sessions/{id}/directives/{directive_id} Remove
Method Path Purpose
POST /api/sessions/{id}/documents Upload a document (summarized for agent context)
GET /api/sessions/{id}/documents List documents
DELETE /api/sessions/{id}/documents/{document_id} Remove
Method Path Purpose
POST /api/sessions/{id}/speakers Register a speaker
GET /api/sessions/{id}/speakers List speakers
PATCH /api/sessions/{id}/speakers/{speaker_id} Rename, set role/type/display name
POST /api/sessions/{id}/speakers/{speaker_id}/merge Merge into another speaker
DELETE /api/sessions/{id}/speakers/{speaker_id} Remove
Method Path Purpose
POST /api/sessions/{id}/transcripts Append a transcript entry manually
GET /api/sessions/{id}/transcripts List transcript entries
PATCH /api/sessions/{id}/transcripts/{transcript_id} Edit text or speaker attribution
Method Path Purpose
GET /api/sessions/{id}/questions List insights (all item types)
PATCH /api/sessions/{id}/questions/{question_id} Mark answered/dismissed, edit
Method Path Purpose
GET /api/sessions/{id}/synthesis Get the saved session synthesis (or null)
POST /api/sessions/{id}/synthesis/refresh Regenerate the synthesis
Method Path Purpose
POST /api/sessions/{id}/import/transcript Import .txt, .md, or .docx transcript
POST /api/sessions/{id}/import/audio Import .wav, .mp3, .m4a, .ogg, .flac audio through the live pipeline
Method Path Purpose
POST /api/sessions/{id}/analyze Run post-import analysis over the transcript (routers/analyze.py)
POST /api/sessions/{id}/retranscribe Replay stored segment audio through a batch-capable model; replaces existing transcript entries (routers/retranscribe.py)
Method Path Purpose
GET /api/sessions/{id}/artifacts/transcript-export Transcript as TXT
GET /api/sessions/{id}/artifacts/questions-export Insights as XLSX
GET /api/sessions/{id}/artifacts/summary-export Summary as HTML
Method Path Purpose
GET /api/agents List agent configs
GET /api/agents/{slug} Get one agent config
PATCH /api/agents/{slug} Update enabled, model, interval, prompt
POST /api/agents/reset/{slug} Restore the seeded prompt
Method Path Purpose
GET /api/models Model registry with capabilities and key requirements

Providers: google, openai. Keys are stored encrypted (see Configuration).

Method Path Purpose
GET /api/credentials List configured providers (masked)
PUT /api/credentials/{provider} Save/replace a key
DELETE /api/credentials/{provider} Remove a key
POST /api/credentials/{provider}/test Validate the stored key against the provider
Method Path Purpose
GET /api/offerings List/filter the offerings catalog
GET /api/offerings/vendors Distinct vendors
GET /api/offerings/categories Distinct categories
GET /api/offerings/tags Distinct tags in use
POST /api/offerings Create an offering
PATCH /api/offerings/{offering_id} Update an offering
DELETE /api/offerings/{offering_id} Remove an offering
POST /api/offerings/import Bulk import from CSV/XLSX
POST /api/offerings/seed Load the seed catalog (?replace=true to overwrite)
Method Path Purpose
GET /api/knowledge List knowledge sources
POST /api/knowledge Create a source
GET /api/knowledge/{source_id} Get a source
PATCH /api/knowledge/{source_id} Update a source
DELETE /api/knowledge/{source_id} Remove a source and its records
GET /api/knowledge/{source_id}/records List records
POST /api/knowledge/{source_id}/records Add a record
PATCH /api/knowledge/records/{record_id} Update a record
DELETE /api/knowledge/records/{record_id} Remove a record
POST /api/knowledge/{source_id}/records/import Bulk import records from CSV/XLSX
POST /api/knowledge/{source_id}/files Upload a file, converted to Markdown records
Method Path Purpose
POST /api/chat Ask questions over selected sessions’ transcripts via the provider-routed text LLM
Method Path Purpose
GET /api/diagnostics/diarization Diarizer capability and runtime config
PATCH /api/diagnostics/diarization/config Update diarizer runtime config
GET /api/diagnostics/transcription Batch transcription config
PATCH /api/diagnostics/transcription/config Update batch transcription config
POST /api/diagnostics/diarization/sortformer/benchmark Benchmark Sortformer on an uploaded file

The live-call WebSocket endpoint /ws/{session_id} is documented separately in WebSocket Protocol.