Reference
API reference
One page per resource#
Generated from the backend's published OpenAPI document — regenerate with npm run api:reference, and npm run test:contract fails when it drifts. Each page lists every operation with its door, parameters, request and response fields, declared errors, and a runnable curl example.
| Resource | Operations | What it is for |
|---|---|---|
| Projects API | 3 | A project is the isolation boundary: credentials, keys, agents, numbers, sessions and webhooks all belong to exactly one. |
| API keys | 3 | Project-scoped machine keys. |
| Provider accounts | 13 | Your own AI credentials, encrypted per project. |
| Agents API | 12 | An agent is the frozen configuration a call runs against: pipeline, prompt, language, limits and webhook. |
| Voice sessions | 8 | One session is one call. |
| Carriers and numbers | 22 | Bring your own telephony account. |
| Webhooks API | 10 | Signed, retried event delivery per project. |
| Billing API | 7 | A prepaid USD wallet per account. |
Every operation#
Projects API#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/v2/projects` | account session | — |
POST | `/v2/projects` | account session | — |
GET | `/v2/projects/{project_id}` | account session | — |
API keys#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/v2/api-keys` | account session | — |
POST | `/v2/api-keys` | account session | — |
DELETE | `/v2/api-keys/{key_id}` | account session | — |
Provider accounts#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/v2/provider-accounts` | project key | provider_account:read |
POST | `/v2/provider-accounts` | project key | provider_account:write |
DELETE | `/v2/provider-accounts/{account_id}` | project key | provider_account:write |
GET | `/v2/provider-accounts/{account_id}` | project key | provider_account:read |
POST | `/v2/provider-accounts/{account_id}/probe` | project key | provider_account:write |
POST | `/v2/provider-accounts/{account_id}/rotate` | project key | provider_account:write |
GET | `/console/v2/projects/{project_id}/provider-accounts` | account session | — |
POST | `/console/v2/projects/{project_id}/provider-accounts` | account session | — |
DELETE | `/console/v2/projects/{project_id}/provider-accounts/{account_id}` | account session | — |
GET | `/console/v2/projects/{project_id}/provider-accounts/{account_id}` | account session | — |
POST | `/console/v2/projects/{project_id}/provider-accounts/{account_id}/probe` | account session | — |
POST | `/console/v2/projects/{project_id}/provider-accounts/{account_id}/rotate` | account session | — |
GET | `/v2/provider-catalog` | account session | — |
Agents API#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/v2/agents` | project key | voice:read |
POST | `/v2/agents` | project key | voice:write |
DELETE | `/v2/agents/{agent_id}` | project key | voice:write |
GET | `/v2/agents/{agent_id}` | project key | voice:read |
PATCH | `/v2/agents/{agent_id}` | project key | voice:write |
POST | `/v2/agents/{agent_id}/rotate-secret` | project key | voice:write |
GET | `/console/v2/projects/{project_id}/agents` | account session | — |
POST | `/console/v2/projects/{project_id}/agents` | account session | — |
DELETE | `/console/v2/projects/{project_id}/agents/{agent_id}` | account session | — |
GET | `/console/v2/projects/{project_id}/agents/{agent_id}` | account session | — |
PATCH | `/console/v2/projects/{project_id}/agents/{agent_id}` | account session | — |
POST | `/console/v2/projects/{project_id}/agents/{agent_id}/rotate-secret` | account session | — |
Voice sessions#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/v2/voice/sessions` | project key | voice:read |
POST | `/v2/voice/sessions` | project key | voice:write |
GET | `/v2/voice/sessions/{session_id}` | project key | voice:read |
POST | `/v2/voice/sessions/outbound` | project key | voice:write |
GET | `/console/v2/projects/{project_id}/voice/sessions` | account session | — |
POST | `/console/v2/projects/{project_id}/voice/sessions` | account session | — |
GET | `/console/v2/projects/{project_id}/voice/sessions/{session_id}` | account session | — |
POST | `/console/v2/projects/{project_id}/voice/sessions/outbound` | account session | — |
Carriers and numbers#
Webhooks API#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/v2/projects/{project_id}/webhooks` | project key | webhook:read |
POST | `/v2/projects/{project_id}/webhooks` | project key | webhook:write |
DELETE | `/v2/projects/{project_id}/webhooks/{endpoint_id}` | project key | webhook:write |
POST | `/v2/projects/{project_id}/webhooks/{endpoint_id}/test` | project key | webhook:write |
GET | `/v2/projects/{project_id}/webhooks/dead-letters` | project key | webhook:read |
GET | `/console/v2/projects/{project_id}/webhooks` | account session | — |
POST | `/console/v2/projects/{project_id}/webhooks` | account session | — |
DELETE | `/console/v2/projects/{project_id}/webhooks/{endpoint_id}` | account session | — |
POST | `/console/v2/projects/{project_id}/webhooks/{endpoint_id}/test` | account session | — |
GET | `/console/v2/projects/{project_id}/webhooks/dead-letters` | account session | — |
Billing API#
| Method | Path | Door | Scope |
|---|---|---|---|
GET | `/console/v2/billing/invoices` | account session | — |
GET | `/console/v2/billing/invoices/{invoice_id}.pdf` | account session | — |
GET | `/console/v2/billing/quote` | account session | — |
GET | `/console/v2/billing/rate` | account session | — |
GET | `/console/v2/billing/summary` | account session | — |
POST | `/console/v2/billing/topup` | account session | — |
GET | `/console/v2/billing/transactions` | account session | — |
Conventions#
- Origin:
https://api.developers.dvaarik.com. - Machine door:
X-Api-Key: $DVAARIK_API_KEY, from a trusted server only. - Account door:
Authorization: Bearer $DVAARIK_TOKEN, the console session. - Money is an integer nano-USD decimal string; parse it with
BigInt, neverNumber. - Every error body is
{ "detail": … }; see the errors page. - There is no SDK yet. The examples are curl,
fetch, andrequests. - To try a call without writing code, use the playground rather than pasting a key into a browser.
Use one project per boundary
Provider secrets stay encrypted and project API keys stay on your server.