A grouped reference of the Get2Dial control-plane endpoints. All paths are under
/api/v1 unless noted. See Authentication for how to
authenticate and Conventions for the shared envelope and
pagination.
Three auth classes appear below:
- Public — no token (health, login, signup, a few edge bootstrap paths).
- JWT — a user bearer token; scoped to the caller’s tenant.
- Node — an edge node API key; the
/nodes/* data endpoints.
Role requirements (e.g. admin, platform_admin) are mostly enforced
in-handler, so a path alone doesn’t always reveal the required role.
| Method |
Path |
Purpose |
| GET |
/healthz (root) |
Liveness |
| GET |
/readyz (root) |
Readiness (Postgres/Redis/NATS) |
| GET |
/metrics (root) |
Prometheus metrics |
| GET |
/api/v1/edge/health |
Edge-stack health aggregator |
| POST |
/auth/login |
Authenticate, mint a JWT |
| GET |
/auth/bootstrap-status |
Is the platform initialized |
| POST |
/auth/bootstrap |
One-shot platform-admin creation (gated by AUTH_BOOTSTRAP_TOKEN) |
| POST |
/signup, /signup/verify |
Self-serve signup (rate-limited) |
| Method |
Path |
Purpose |
| GET |
/auth/me |
Current user |
| PATCH |
/auth/me |
Update own profile (display name, timezone) |
| POST |
/auth/me/password |
Change own password |
| POST |
/auth/logout |
Audit-only logout |
| GET |
/users/me/sip |
Own SIP credentials |
| Method |
Path |
Purpose |
| GET |
/tenants, /tenants/me |
List tenants / caller’s tenant |
| POST |
/platform/tenants |
Create a tenant |
| GET·PUT |
/tenants/{id}/limits |
Resource quotas |
| GET·PUT |
/tenants/{id}/features |
Feature entitlements |
| GET·POST |
/users |
List / create users |
| GET·PATCH·DELETE |
/users/{id} |
Read / update / delete a user |
| POST |
/users/{id}/reset-password, /disable, /enable |
User lifecycle |
| GET·PUT |
/users/{id}/capabilities |
Per-user capability grants |
| Method |
Path |
Purpose |
| GET·POST |
/agents |
List / create agents |
| PUT |
/agents/{id}/state |
Set agent state |
| PUT |
/agents/{id}/skills |
Set agent skills |
| GET·POST |
/queues |
List / create queues |
| GET |
/queues/{id}/depth |
Live queue depth |
| GET·POST·DELETE |
/queues/{id}/members |
Queue membership |
| GET·POST |
/routing-rules |
Inbound DID routing |
| GET |
/routing-rules/lookup/{did} |
Resolve a DID |
| GET·POST |
/ivr-menus, /ivr-menus/{id}/options |
IVR menus and options |
| GET·POST |
/voicemail/boxes |
Voicemail mailboxes |
| GET |
/voicemail/boxes/{id}/messages |
Messages in a mailbox |
| GET·POST |
/business-hours |
Business-hours schedules |
| Method |
Path |
Purpose |
| GET·POST |
/campaigns |
List / create campaigns |
| POST |
/campaigns/{id}/status |
Start / pause / archive |
| GET |
/campaigns/{id}/metrics, /active-calls |
Live campaign data |
| GET·POST |
/campaigns/{id}/lead-lists |
Lead lists |
| POST |
/campaigns/{id}/lead-lists/{list_id}/import |
Import leads (CSV) |
| GET |
/campaigns/{id}/leads |
Browse leads |
| POST |
/campaigns/{id}/leads/{lead_id}/disposition |
Set a disposition |
| GET·POST |
/dispositions, /disposition-lists |
Disposition codes & lists |
| GET·POST·DELETE |
/dnc |
Do-Not-Call entries |
| GET·POST |
/audio-assets |
Audio library |
| GET |
/audio-assets/{id}/audio |
Stream an asset |
| GET·POST |
/carriers, /phone-numbers, /outbound-routes |
Carrier config |
| Method |
Path |
Purpose |
| GET |
/cdrs |
List CDRs (filters: from, to, disposition, limit, offset) |
| GET |
/cdrs/export |
CSV export |
| GET |
/recordings, /recordings/{call_id}/audio |
List / stream recordings |
| POST |
/supervisor/monitor |
Listen / whisper / barge on a live call |
| GET·POST |
/qa/scorecards, /qa/evaluations |
QA scoring |
| GET |
/reports/{campaigns,agents,call-volume,compliance,dispositions} |
Reports |
| GET·POST |
/report-schedules |
Scheduled reports |
| Method |
Path |
Purpose |
| GET |
/platform/edge-nodes |
Edge node inventory |
| POST |
/platform/edge-nodes/{id}/reconcile |
Push desired state |
| POST |
/platform/tenants/{id}/provision-edge |
Mint edge credentials (returned once) |
| GET·POST |
/platform/rtp-pool, /platform/edge-pools |
Media fabric pools |
| GET |
/platform/infra/status |
Infra status |
| GET |
/platform/audit-logs |
Cross-tenant audit log |
| Method |
Path |
Purpose |
| POST |
/nodes/register, /nodes/heartbeat |
Registration / heartbeat (network-gated) |
| GET |
/nodes/media/manifest, /nodes/media/object |
Media sync (pull) |
| GET·POST |
/nodes/recordings/pending, /nodes/recordings/{call_id} |
Recording sync (push) |
| POST |
/nodes/cdrs, /nodes/voicemail, /nodes/dispositions |
Write-back ingest |
| GET |
/nodes/routing/resolve |
Inbound DID resolution |
| GET |
/nodes/subscribers, /nodes/carriers, /nodes/campaigns/{id} |
Config reads (READ_SOURCE=api) |
| Path |
Purpose |
/ws/supervisor |
Supervisor realtime feed |
/ws/agent |
Agent screen-pop feed |
- This table is representative, not exhaustive — the authoritative list is the
route table in
cmd/control/main.go.
GET /cdrs is special: it accepts an optional token. With a token it is
tenant/role-scoped (an agent sees only their own calls); without one it
falls back to the service default tenant.
provision-edge returns the edge credentials once — capture them at
creation time.