#AiDial API Reference
- Production API:
https://api.aidial.ai - Version prefix:
/v1
This reference documents public endpoints and approved customer/partner API surfaces. Internal operations, host names, route mappings, storage layout, and deployment details are deliberately excluded.
#Getting Started
- Authentication - API key and bearer authentication, credential precedence, and security guidance
- Partner Integrations - partner identity, API keys, webhooks, catalogs, and capacity
- Error Responses - error formats and status code reference
- Rate Limiting - handling 429 responses and retry strategy
#Endpoint Groups
Protected routes use the authentication mode shown on each endpoint page. Partner server-to-server integrations normally use X-API-Key; customer or partner portal flows may use Authorization: Bearer <jwt> only when the page explicitly says so.
#Partner Integrations
Identity, API-key lifecycle, webhook registration, model/voice catalogs, and capacity monitoring for approved partner integrations.
#Calls Analytics
Call summaries, lists, timeline metrics, call detail, transcript download, and CSV export for authenticated tenant scopes.
#Projects
Project lifecycle, assignments, controlled release operations, safe project-secret metadata, and legacy project billing helpers for authorised scopes.
#Outbound Campaigns
Outbound campaign CRUD, contact import, compliance validation, registry-wash records, and safe outbound-evidence summaries.
#Compliance Caller Requests
Masked caller access/deletion workflow rows, open-count badges, and lifecycle status transitions.
#Billing
Customer billing overview, invoice history, invoice recipient masking/unmasking, invoice PDF download, and billing portal sessions.
#Health & Status
Public availability endpoints for GET / and GET /v1/health.
#Data Scoping
Protected API responses are scoped to the authenticated context. Cross-client data is never returned. Out-of-scope resources return 404 Not Found to avoid tenant enumeration. Missing or invalid authentication returns 401 Unauthorized. If a required backend dependency is unavailable, the API returns 503 Service Unavailable.
PII-sensitive responses respect customer privacy settings and fail closed by redacting or omitting protected fields when access cannot be verified. Raw encrypted values, signing secrets, API keys, bearer tokens, and plaintext secret values are not partner response fields.
#Endpoint Coverage
This table is generated from docs/dev/endpoint-visibility.yaml. Mounted routes classified as internal are intentionally excluded from this public table until they have a reviewed reference page.
| Method | Path | Group | Visibility | Reference |
|---|---|---|---|---|
GET | / | health | public | health.md |
GET | /v1/billing/invoice-recipients | billing | partner | billing.md |
POST | /v1/billing/invoice-recipients/unmask | billing | partner | billing.md |
GET | /v1/billing/invoices | billing | partner | billing.md |
GET | /v1/billing/invoices/{invoice_id}/pdf | billing | partner | billing.md |
GET | /v1/billing/overview | billing | partner | billing.md |
POST | /v1/billing/portal-session | billing | partner | billing.md |
GET | /v1/calls/dashboard/privacy-aggregates | calls | partner | calls-analytics.md |
POST | /v1/calls/export | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/list | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/outcomes | calls | partner | calls-analytics.md |
GET | /v1/calls/provider-performance | calls | partner | calls-analytics.md |
GET | /v1/calls/sentiment | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/sentiment/timeline | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/summary | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/timeline | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/{call_id} | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/{call_id}/inline-preview | calls | partner | calls-analytics.md |
GET | /v1/calls/{call_id}/transcript-download | calls-analytics | partner | calls-analytics.md |
GET | /v1/calls/{call_id}/transcript/pdf | calls | partner | calls-analytics.md |
GET | /v1/capacity/history | capacity | partner | partner-integrations.md |
GET | /v1/capacity/overview | capacity | partner | partner-integrations.md |
GET | /v1/catalogs/models | catalogs | partner | partner-integrations.md |
GET | /v1/catalogs/voices | catalogs | partner | partner-integrations.md |
GET | /v1/compliance/caller-requests | compliance | partner | compliance-caller-requests.md |
POST | /v1/compliance/caller-requests | compliance | partner | compliance-caller-requests.md |
GET | /v1/compliance/caller-requests/open-count | compliance | partner | compliance-caller-requests.md |
POST | /v1/compliance/caller-requests/{request_id}/status-transitions | compliance | partner | compliance-caller-requests.md |
GET | /v1/compliance/calls/{call_id}/outbound-evidence | compliance | partner | outbound-campaigns.md |
GET | /v1/health | health | public | health.md |
GET | /v1/outbound-campaigns | outbound-campaigns | partner | outbound-campaigns.md |
POST | /v1/outbound-campaigns | outbound-campaigns | partner | outbound-campaigns.md |
PATCH | /v1/outbound-campaigns/{campaign_id} | outbound-campaigns | partner | outbound-campaigns.md |
POST | /v1/outbound-campaigns/{campaign_id}/cancel | outbound-campaigns | partner | outbound-campaigns.md |
GET | /v1/outbound-campaigns/{campaign_id}/contacts | outbound-campaigns | partner | outbound-campaigns.md |
POST | /v1/outbound-campaigns/{campaign_id}/contacts/import | outbound-campaigns | partner | outbound-campaigns.md |
POST | /v1/outbound-campaigns/{campaign_id}/registry-wash-records | outbound-campaigns | partner | outbound-campaigns.md |
POST | /v1/outbound-campaigns/{campaign_id}/validate | outbound-campaigns | partner | outbound-campaigns.md |
GET | /v1/outbound-campaigns/{campaign_id}/validation | outbound-campaigns | partner | outbound-campaigns.md |
GET | /v1/partner/api-keys | partner | partner | partner-integrations.md |
POST | /v1/partner/api-keys | partner | partner | partner-integrations.md |
POST | /v1/partner/api-keys/{key_id}/revoke | partner | partner | partner-integrations.md |
POST | /v1/partner/api-keys/{key_id}/rotate | partner | partner | partner-integrations.md |
GET | /v1/partner/me | partner | partner | partner-integrations.md |
GET | /v1/partner/webhooks | partner | partner | partner-integrations.md |
POST | /v1/partner/webhooks | partner | partner | partner-integrations.md |
GET | /v1/partner/webhooks/deliveries | partner | partner | partner-integrations.md |
DELETE | /v1/partner/webhooks/{webhook_id} | partner | partner | partner-integrations.md |
PATCH | /v1/partner/webhooks/{webhook_id} | partner | partner | partner-integrations.md |
POST | /v1/partner/webhooks/{webhook_id}/rotate-secret | partner | partner | partner-integrations.md |
POST | /v1/partner/webhooks/{webhook_id}/test | partner | partner | partner-integrations.md |
GET | /v1/projects | projects | partner | projects.md |
POST | /v1/projects | projects | partner | projects.md |
GET | /v1/projects/{project_id} | projects | partner | projects.md |
PATCH | /v1/projects/{project_id} | projects | partner | projects.md |
PUT | /v1/projects/{project_id} | projects | partner | billing.md |
POST | /v1/projects/{project_id}/archive | projects | partner | projects.md |
POST | /v1/projects/{project_id}/assignments | projects | partner | projects.md |
DELETE | /v1/projects/{project_id}/assignments/{assignment_id} | projects | partner | projects.md |
GET | /v1/projects/{project_id}/billing-config | projects | partner | billing.md |
GET | /v1/projects/{project_id}/billing-summary | projects | partner | billing.md |
POST | /v1/projects/{project_id}/dashboard-metadata/publish | projects | partner | projects.md |
GET | /v1/projects/{project_id}/draft | projects | partner | projects.md |
PUT | /v1/projects/{project_id}/draft | projects | partner | projects.md |
GET | /v1/projects/{project_id}/lifecycle | projects | partner | projects.md |
PATCH | /v1/projects/{project_id}/lifecycle | projects | partner | projects.md |
POST | /v1/projects/{project_id}/publish | projects | partner | projects.md |
POST | /v1/projects/{project_id}/restore | projects | partner | projects.md |
POST | /v1/projects/{project_id}/rollback | projects | partner | projects.md |
GET | /v1/projects/{project_id}/runtime-drift | projects | partner | projects.md |
POST | /v1/projects/{project_id}/runtime-provenance | projects | partner | projects.md |
POST | /v1/projects/{project_id}/test-call/request | projects | partner | projects.md |
POST | /v1/projects/{project_id}/validate | projects | partner | projects.md |
GET | /v1/projects/{project_id}/versions | projects | partner | projects.md |
GET | /v1/projects/{project_id}/versions/compare | projects | partner | projects.md |
GET | /v1/projects/{project_id}/versions/{version_number} | projects | partner | projects.md |