API Reference
The RadioShaq API is a FastAPI application. All protected endpoints require a Bearer JWT from POST /auth/token (query params: subject, role, station_id).
Interactive docs: When the API is running, see http://localhost:8000/docs (Swagger UI) and http://localhost:8000/redoc.
Overview
| Area | Prefix | Purpose |
|---|---|---|
| Health | /health, /health/ready |
Liveness and readiness (DB, orchestrator) |
| Metrics | /metrics |
Prometheus scrape (uptime, callsigns, optional GPU). See Monitoring. |
| Auth | /auth/token, /auth/refresh, /auth/me |
Issue token, refresh, current user |
| Messages | /messages/process, /messages/whitelist-request, /messages/from-audio, /messages/inject-and-store |
Orchestration and whitelist flow |
| Relay | /messages/relay |
Band translation (e.g. 40m → 2m). Stores source + relayed transcripts; optional inject/TX when config enables. Recipients poll GET /transcripts?callsign=<callsign>&destination_only=true&band=<band> to retrieve relayed messages. |
| Callsigns | /callsigns, /callsigns/register, /callsigns/register-from-audio, /callsigns/registered/{callsign} |
Registered callsigns and registration |
| Config | /api/v1/config/llm, /api/v1/config/memory, /api/v1/config/overrides |
LLM, memory (Hindsight), and per-role overrides (GET/PATCH; keys redacted). See Configuration. |
| Audio | /api/v1/config/audio, /api/v1/audio/devices, /api/v1/audio/pending, approve/reject |
Audio config and pending response queue |
| Transcripts | /transcripts, /transcripts/{id}, /transcripts/{id}/play |
Search and play transcripts |
| Radio | /radio/status, /radio/propagation, /radio/bands, /radio/send-tts |
Radio connected?, propagation, band list, send TTS |
| Inject | /inject/message |
Demo: push message into RX injection queue |
| Internal | /internal/bus/inbound |
MessageBus inbound (e.g. Lambda) |
Generated API reference from the FastAPI OpenAPI spec (run python radioshaq/scripts/export_openapi.py from repo root before building to produce docs/api/openapi.json):
RadioShaq API 0.1.0
Strategic Autonomous Ham Radio and Knowledge Operations Dispatch System
health
GET /health
Health
??? note "Description" Liveness probe.
Response 200 OK
GET /health/ready
Ready
??? note "Description" Readiness probe: DB (if configured), orchestrator, optional audio agent.
Response 200 OK
metrics
GET /metrics
Metrics
??? note "Description" Prometheus scrape endpoint. Exposes radioshaq_uptime_seconds, radioshaq_callsigns_registered_total, and optional GPU gauges (when nvidia-smi is available). Install prometheus- client for full metrics.
Response 200 OK
auth
POST /auth/token
Create Token
??? note "Description" Create an access token (e.g. for field station).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
role |
query | string | field | No | |
station_id |
query | None | No | ||
subject |
query | string | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /auth/refresh
Refresh Token
??? note "Description" Exchange refresh token for new access token.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
refresh_token |
query | string | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /auth/me
Me
??? note "Description" Return current token claims (requires Bearer token).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
radio
GET /radio/propagation
Propagation
??? note "Description" Get propagation prediction between two points.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
lat_dest |
query | number | No | Destination latitude | |
lat_origin |
query | number | No | Origin latitude | |
lon_dest |
query | number | No | Destination longitude | |
lon_origin |
query | number | No | Origin longitude |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /radio/bands
Bands
??? note "Description" List supported bands (from band plan).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
GET /radio/status
Radio Status
??? note "Description" Report whether a radio (CAT rig) is connected. When connected, optionally include current frequency and mode from the rig.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
POST /radio/send-tts
Send Tts
??? note "Description" Send arbitrary text as TTS over the radio (audio out).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
??? hint "Schema of the request body"
{
"properties": {
"message": {
"type": "string",
"minLength": 1,
"title": "Message"
},
"frequency_hz": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Frequency Hz"
},
"mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mode"
}
},
"type": "object",
"required": [
"message"
],
"title": "SendTTSBody",
"description": "Body for POST /radio/send-tts."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
memory
GET /memory/{callsign}/blocks
Get Blocks
??? note "Description" Get core memory blocks (user, identity, ideaspace, system_instructions) for a callsign.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
callsign |
path | string | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
PUT /memory/{callsign}/blocks/{block_type}
Update Block
??? note "Description" Replace a core block's content.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
block_type |
path | string | No | ||
callsign |
path | string | No |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /memory/{callsign}/blocks/{block_type}/append
Append Block
??? note "Description" Append content to a core block.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
block_type |
path | string | No | ||
callsign |
path | string | No |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /memory/{callsign}/summaries
Get Summaries
??? note "Description"
Get daily summaries for a callsign (last days days).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
callsign |
path | string | No | ||
days |
query | integer | 7 | No |
Response 200 OK
??? hint "Schema of the response body"
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
messages
POST /messages/process
Process Message
??? note "Description" Submit a message for REACT orchestration. Requires orchestrator to be set in app state (lifespan). Optional body fields: channel, chat_id, sender_id (InboundMessage shape for routing).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /messages/whitelist-request
Whitelist Request
??? note "Description" Whitelist entry point: request access to gated services (e.g. messaging between bands). Text or audio → orchestrator evaluates → response as text and optionally TTS. Accepts application/json: { "text" or "message", "callsign?", "send_audio_back?" } or multipart/form-data: file (audio), callsign, send_audio_back.
Approved/message can come from either the orchestrator final message (tool
path:
LLM used register_callsign tool and replied) or a completed whitelist agent
task
(agent path: ACTING ran the whitelist agent; result in completed_tasks).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
POST /messages/from-audio
Message From Audio
??? note "Description" Upload audio; run ASR; whitelist check; store transcript. Optionally inject to RX queue.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
{
"file": "string",
"source_callsign": "string",
"destination_callsign": null,
"band": null,
"mode": "string",
"frequency_hz": 10.12,
"session_id": null,
"inject": true
}
??? hint "Schema of the request body"
{
"properties": {
"file": {
"type": "string",
"contentMediaType": "application/octet-stream",
"title": "File"
},
"source_callsign": {
"type": "string",
"title": "Source Callsign"
},
"destination_callsign": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination Callsign"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band"
},
"mode": {
"type": "string",
"title": "Mode",
"default": "PSK31"
},
"frequency_hz": {
"type": "number",
"title": "Frequency Hz",
"default": 0.0
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id"
},
"inject": {
"type": "boolean",
"title": "Inject",
"default": false
}
},
"type": "object",
"required": [
"file",
"source_callsign"
],
"title": "Body_message_from_audio_messages_from_audio_post"
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /messages/inject-and-store
Inject And Store
??? note "Description" Inject message into RX queue and store to DB (whitelist enforced).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
{
"text": "string",
"band": null,
"frequency_hz": 10.12,
"mode": "string",
"source_callsign": null,
"destination_callsign": null,
"audio_path": null,
"metadata": {}
}
??? hint "Schema of the request body"
{
"properties": {
"text": {
"type": "string",
"minLength": 1,
"title": "Text"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band"
},
"frequency_hz": {
"type": "number",
"title": "Frequency Hz",
"default": 0.0
},
"mode": {
"type": "string",
"title": "Mode",
"default": "PSK31"
},
"source_callsign": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Callsign"
},
"destination_callsign": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination Callsign"
},
"audio_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Audio Path"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata"
}
},
"type": "object",
"required": [
"text"
],
"title": "InjectAndStoreBody",
"description": "Body for POST /messages/inject-and-store."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /messages/relay
Relay Message Between Bands
??? note "Description" Translate a message from one band to another and store both sides.
Scenario: User A emits on band A (e.g. 40m), message is received and stored;
then it is "relayed" to band B (e.g. 2m) for User B. Stores:
1. Original (or reference) transcript on source band
2. Relay transcript on target band with metadata linking to source
Body:
- message (str): Text to relay
- source_band (str): e.g. "40m"
- source_frequency_hz (float, optional): exact freq if known
- source_callsign (str): who sent on source band
- target_band (str): e.g. "2m"
- target_frequency_hz (float, optional): target freq; else use band default
- destination_callsign (str, optional): who receives on target band
- session_id (str, optional): default generated
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
{
"message": "string",
"source_band": "string",
"target_band": "string",
"source_frequency_hz": null,
"target_frequency_hz": null,
"source_callsign": "string",
"destination_callsign": null,
"session_id": null,
"deliver_at": null,
"source_audio_path": null,
"target_audio_path": null
}
??? hint "Schema of the request body"
{
"properties": {
"message": {
"type": "string",
"minLength": 1,
"title": "Message"
},
"source_band": {
"type": "string",
"title": "Source Band"
},
"target_band": {
"type": "string",
"title": "Target Band"
},
"source_frequency_hz": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Source Frequency Hz"
},
"target_frequency_hz": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Target Frequency Hz"
},
"source_callsign": {
"type": "string",
"title": "Source Callsign",
"default": "UNKNOWN"
},
"destination_callsign": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination Callsign"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id"
},
"deliver_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Deliver At",
"description": "ISO datetime when message should be delivered on target band (optional)"
},
"source_audio_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Audio Path"
},
"target_audio_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Audio Path"
}
},
"type": "object",
"required": [
"message",
"source_band",
"target_band"
],
"title": "RelayBody",
"description": "Body for POST /messages/relay (band translation)."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
transcripts
GET /transcripts
Search Transcripts
??? note "Description"
Search transcripts (received/relayed messages). Use for demo so User 2 can
poll
for messages on a band or for their callsign (e.g. after relay from 40m to
2m).
For a callsign to poll their messages on a band: use
callsign=
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
band |
query | None | No | Filter by band name (e.g. 40m, 2m); uses extra_data.band | |
callsign |
query | None | No | Filter by source or destination callsign | |
destination_only |
query | boolean | False | No | If True and callsign set, return only transcripts where callsign is destination |
frequency_max |
query | None | No | Maximum frequency (Hz) | |
frequency_min |
query | None | No | Minimum frequency (Hz) | |
limit |
query | integer | 100 | No | Max results |
mode |
query | None | No | Filter by mode (FM, PSK31, etc.) | |
since |
query | None | No | Only transcripts after this time (ISO 8601) |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /transcripts/{transcript_id}
Get Transcript
??? note "Description" Get a single transcript by id (for play or display).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
transcript_id |
path | integer | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /transcripts/{transcript_id}/play
Play Transcript Over Radio
??? note "Description" Load transcript, generate TTS, and send over radio (audio out).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
transcript_id |
path | integer | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
callsigns
GET /callsigns
List Registered
??? note "Description" List all registered callsigns (whitelist).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
POST /callsigns/register
Register Callsign
??? note "Description" Register a callsign so it is automatically accepted for store/relay.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
??? hint "Schema of the request body"
{
"properties": {
"callsign": {
"type": "string",
"maxLength": 10,
"minLength": 3,
"title": "Callsign"
},
"source": {
"type": "string",
"title": "Source",
"description": "api or audio",
"default": "api"
},
"preferred_bands": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Preferred Bands",
"description": "Preferred bands e.g. [40m, 2m]"
}
},
"type": "object",
"required": [
"callsign"
],
"title": "RegisterBody",
"description": "Body for POST /callsigns/register."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /callsigns/register-from-audio
Register From Audio
??? note "Description" Upload audio; run ASR and register the extracted or confirmed callsign.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
callsign |
query | None | No |
Request body
??? hint "Schema of the request body"
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
PATCH /callsigns/registered/{callsign}
Patch Callsign Bands
??? note "Description" Set preferred_bands for a registered callsign. Band names must be in BAND_PLANS (e.g. 40m, 2m).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
callsign |
path | string | No |
Request body
??? hint "Schema of the request body"
{
"properties": {
"preferred_bands": {
"items": {
"type": "string"
},
"type": "array",
"minItems": 0,
"title": "Preferred Bands",
"description": "Preferred bands e.g. [40m, 2m]"
}
},
"type": "object",
"required": [
"preferred_bands"
],
"title": "PatchCallsignBandsBody",
"description": "Body for PATCH /callsigns/registered/{callsign}."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
DELETE /callsigns/registered/{callsign}
Unregister Callsign
??? note "Description" Remove a callsign from the registry.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
callsign |
path | string | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
inject
POST /inject/message
Inject Message
??? note "Description" Inject a message into the RX path for demo/testing.
The message will be available to receivers (radio_rx / digital_modes)
when they poll the injection queue. Unless inject_skip_bus is True,
also publish to MessageBus so the orchestrator processes it.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
{
"text": "string",
"band": null,
"frequency_hz": 10.12,
"mode": "string",
"source_callsign": null,
"destination_callsign": null,
"audio_path": null,
"metadata": {}
}
??? hint "Schema of the request body"
{
"properties": {
"text": {
"type": "string",
"minLength": 1,
"title": "Text",
"description": "Message text to inject as received"
},
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"description": "Band name (e.g. 40m, 2m)"
},
"frequency_hz": {
"type": "number",
"title": "Frequency Hz",
"description": "Frequency in Hz",
"default": 0.0
},
"mode": {
"type": "string",
"title": "Mode",
"description": "Mode (PSK31, FT8, FM, etc.)",
"default": "PSK31"
},
"source_callsign": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Callsign",
"description": "Source callsign"
},
"destination_callsign": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination Callsign",
"description": "Destination callsign"
},
"audio_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Audio Path",
"description": "Optional path to audio file (stored with transcript)"
},
"metadata": {
"additionalProperties": true,
"type": "object",
"title": "Metadata"
}
},
"type": "object",
"required": [
"text"
],
"title": "InjectMessageBody",
"description": "Body for POST /inject/message (user injection for demo)."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
receiver
POST /receiver/upload
Receiver Upload
??? note "Description" Accept upload from a remote receiver station.
Called by radioshaq.remote_receiver (SDR service) when HQ_URL points here.
Requires Bearer JWT. When receiver_upload_store is enabled, persists
transcript
with band (from frequency). When receiver_upload_inject is enabled, injects
into the RX path after store.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
{
"station_id": "string",
"operator_id": "string",
"timestamp": "string",
"frequency_hz": 10.12,
"signal_strength_db": 10.12,
"decoded_text": null,
"mode": "string"
}
??? hint "Schema of the request body"
{
"properties": {
"station_id": {
"type": "string",
"title": "Station Id",
"description": "Receiver station ID"
},
"operator_id": {
"type": "string",
"title": "Operator Id",
"description": "Operator/sub from JWT"
},
"timestamp": {
"type": "string",
"title": "Timestamp",
"description": "ISO timestamp"
},
"frequency_hz": {
"type": "number",
"title": "Frequency Hz",
"description": "Frequency in Hz"
},
"signal_strength_db": {
"type": "number",
"title": "Signal Strength Db",
"description": "Signal strength dB"
},
"decoded_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Decoded Text",
"description": "Decoded text if any"
},
"mode": {
"type": "string",
"title": "Mode",
"description": "Mode (e.g. FM, FT8)",
"default": ""
}
},
"type": "object",
"required": [
"station_id",
"operator_id",
"timestamp",
"frequency_hz",
"signal_strength_db"
],
"title": "ReceiverUploadBody",
"description": "Payload from a remote receiver station (SDR samples/decoded data)."
}
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
internal
POST /internal/bus/inbound
Publish Inbound
??? note "Description" Accept an inbound message (e.g. from Lambda) and publish to MessageBus. Body: channel, sender_id, chat_id, content; optional media, metadata, session_key_override. Orchestrator consumer must be running elsewhere to process (e.g. run_inbound_consumer).
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
audio
GET /api/v1/config/audio
Get Audio Config
??? note "Description" Get current audio configuration (env/file + optional runtime overrides).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
PATCH /api/v1/config/audio
Update Audio Config
??? note "Description" Update audio configuration (runtime overlay only; does not persist to file).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /api/v1/config/audio/reset
Reset Audio Config
??? note "Description" Clear runtime audio config overrides.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
GET /api/v1/audio/devices
List Audio Devices
??? note "Description" List available audio input/output devices (requires voice_rx).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
POST /api/v1/audio/devices/{device_id}/test
Test Audio Device
??? note "Description" Test an audio device by ID (placeholder).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
device_id |
path | integer | No |
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /api/v1/audio/pending
List Pending Responses
??? note "Description" List pending responses awaiting human confirmation.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
POST /api/v1/audio/pending/{pending_id}/approve
Approve Pending Response
??? note "Description" Approve a pending response (send it over the radio).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
pending_id |
path | string | No |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
POST /api/v1/audio/pending/{pending_id}/reject
Reject Pending Response
??? note "Description" Reject a pending response.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
pending_id |
path | string | No |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
config
GET /api/v1/config/llm
Get Config Llm
??? note "Description" Get current LLM configuration (API keys redacted). Runtime overrides merged if set.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
PATCH /api/v1/config/llm
Update Config Llm
??? note "Description" Update LLM configuration (runtime overlay only; does not persist to file). API keys in body are not stored.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /api/v1/config/memory
Get Config Memory
??? note "Description" Get current memory/Hindsight configuration. Runtime overrides merged if set.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
PATCH /api/v1/config/memory
Update Config Memory
??? note "Description" Update memory configuration (runtime overlay only; does not persist to file).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
GET /api/v1/config/overrides
Get Config Overrides
??? note "Description" Get per-role LLM and memory overrides. Keys: orchestrator, judge, whitelist, daily_summary, memory.
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Response 200 OK
PATCH /api/v1/config/overrides
Update Config Overrides
??? note "Description" Update per-role overrides (runtime overlay only; does not persist to file).
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
HTTPBearer |
header | string | N/A | No | JWT Bearer token |
Request body
Response 200 OK
Response 422 Unprocessable Entity
??? hint "Schema of the response body"
Schemas
Body_message_from_audio_messages_from_audio_post
| Name | Type |
|---|---|
band |
|
destination_callsign |
|
file |
string |
frequency_hz |
number |
inject |
boolean |
mode |
string |
session_id |
|
source_callsign |
string |
Body_register_from_audio_callsigns_register_from_audio_post
| Name | Type |
|---|---|
file |
string |
HTTPValidationError
| Name | Type |
|---|---|
detail |
Array<ValidationError> |
InjectAndStoreBody
| Name | Type |
|---|---|
audio_path |
|
band |
|
destination_callsign |
|
frequency_hz |
number |
metadata |
|
mode |
string |
source_callsign |
|
text |
string |
InjectMessageBody
| Name | Type |
|---|---|
audio_path |
|
band |
|
destination_callsign |
|
frequency_hz |
number |
metadata |
|
mode |
string |
source_callsign |
|
text |
string |
PatchCallsignBandsBody
| Name | Type |
|---|---|
preferred_bands |
Array<string> |
ReceiverUploadBody
| Name | Type |
|---|---|
decoded_text |
|
frequency_hz |
number |
mode |
string |
operator_id |
string |
signal_strength_db |
number |
station_id |
string |
timestamp |
string |
RegisterBody
| Name | Type |
|---|---|
callsign |
string |
preferred_bands |
|
source |
string |
RelayBody
| Name | Type |
|---|---|
deliver_at |
|
destination_callsign |
|
message |
string |
session_id |
|
source_audio_path |
|
source_band |
string |
source_callsign |
string |
source_frequency_hz |
|
target_audio_path |
|
target_band |
string |
target_frequency_hz |
SendTTSBody
| Name | Type |
|---|---|
frequency_hz |
|
message |
string |
mode |
ValidationError
| Name | Type |
|---|---|
ctx |
|
input |
|
loc |
Array<> |
msg |
string |
type |
string |
Security schemes
| Name | Type | Scheme | Description |
|---|---|---|---|
| HTTPBearer | http | bearer |