# DialStack API — endpoint index

Every REST operation, one line each. This index is generated from the
OpenAPI spec and is authoritative for **which endpoints exist and what
their verb, path, and query parameters are**.

It deliberately omits request/response schemas. For those, read the
operation in https://docs.dialstack.ai/api/openapi.yaml (~578 KB —
search it for the `operationId` rather than reading it whole).

Reminders that apply to every line below:

- Base URL: `https://api.dialstack.ai`. Paths below are relative to it.
- Every call needs the `DialStack-Account: acct_...` header.
- There is no PUT or PATCH. Updates are `POST /:resource_id`.
- List responses paginate by following `next_page_url` verbatim.
  Do not construct `page`, `offset`, or cursor parameters.

Total operations: 206.

## AI Agents

- `GET /v1/ai-agents` `listAIAgents` — List AI agents  _query:_ limit
- `POST /v1/ai-agents` `createAIAgent` — Create an AI agent
- `DELETE /v1/ai-agents/{ai_agent_id}` `deleteAIAgent` — Delete AI agent
- `GET /v1/ai-agents/{ai_agent_id}` `getAIAgent` — Get AI agent details
- `POST /v1/ai-agents/{ai_agent_id}` `updateAIAgent` — Update AI agent

## Accounts

- `GET /v1/accounts` `listAccounts` — List all accounts  _query:_ limit
- `POST /v1/accounts` `createAccount` — Create a new account
- `DELETE /v1/accounts/{account_id}` `deleteAccount` — Delete account
- `GET /v1/accounts/{account_id}` `getAccount` — Get account details
- `POST /v1/accounts/{account_id}` `updateAccount` — Update account
- `GET /v1/accounts/{account_id}/pricing` `getAccountPricing` — Get agreed pricing
- `POST /v1/accounts/{account_id}/pricing` `upsertAccountPricing` — Set agreed pricing
- `GET /v1/accounts/{account_id}/tos` `getAccountTos` — Get the subscription agreement  _query:_ expand[]
- `POST /v1/accounts/{account_id}/tos` `acceptAccountTos` — Accept the subscription agreement

## Audio Clips

- `GET /v1/audio_clips` `listAudioClips` — List audio clips  _query:_ limit
- `POST /v1/audio_clips` `createAudioClip` — Upload an audio clip
- `DELETE /v1/audio_clips/{audio_clip_id}` `deleteAudioClip` — Delete an audio clip
- `GET /v1/audio_clips/{audio_clip_id}` `getAudioClip` — Get an audio clip
- `POST /v1/audio_clips/{audio_clip_id}` `updateAudioClip` — Update an audio clip

## Audit Logs

- `GET /v1/audit-logs` `listAuditLogs` — List audit logs  _query:_ limit, event, resource, actor, outcome, ip_address, created_after, created_before

## Button Templates

- `GET /v1/button_templates` `listButtonTemplates` — List button templates  _query:_ limit
- `POST /v1/button_templates` `createButtonTemplate` — Create a button template
- `DELETE /v1/button_templates/{id}` `deleteButtonTemplate` — Delete a button template
- `GET /v1/button_templates/{id}` `getButtonTemplate` — Get a button template  _query:_ for_device, expand[]
- `POST /v1/button_templates/{id}` `updateButtonTemplate` — Update a button template
- `GET /v1/button_templates/{id}/buttons` `listTemplateButtons` — List template buttons  _query:_ limit
- `POST /v1/button_templates/{id}/buttons` `createTemplateButton` — Add a template button
- `DELETE /v1/button_templates/{id}/buttons/{button_id}` `deleteTemplateButton` — Delete a template button
- `POST /v1/button_templates/{id}/buttons/{button_id}` `updateTemplateButton` — Update a template button

## Call Queues

- `GET /v1/queues` `listQueues` — List call queues  _query:_ limit, expand[]
- `POST /v1/queues` `createQueue` — Create a call queue
- `DELETE /v1/queues/{queue_id}` `deleteQueue` — Delete a call queue
- `GET /v1/queues/{queue_id}` `getQueue` — Get a call queue  _query:_ expand[]
- `POST /v1/queues/{queue_id}` `updateQueue` — Update a call queue
- `GET /v1/queues/{queue_id}/members` `listQueueMembers` — List queue members  _query:_ limit
- `POST /v1/queues/{queue_id}/members` `addQueueMember` — Add a queue member
- `DELETE /v1/queues/{queue_id}/members/{member_id}` `removeQueueMember` — Remove a queue member
- `GET /v1/users/{user_id}/queue-agent` `getQueueAgent` — Get queue-agent state
- `POST /v1/users/{user_id}/queue-agent` `updateQueueAgent` — Update queue-agent state

## Calls

- `GET /v1/calls` `listCallLogs` — List call logs  _query:_ limit, user_id, endpoint_id, direction, from_number, to_number, status, from_date, to_date, expand[]
- `POST /v1/calls` `createCall` — Initiate a call
- `GET /v1/calls/{call_id}` `getCallLog` — Get call log details  _query:_ expand[]
- `POST /v1/calls/{call_id}` `updateCall` — Control an active call
- `GET /v1/calls/{call_id}/listeners` `listListeners` — List listeners  _query:_ limit
- `POST /v1/calls/{call_id}/listeners` `createListener` — Create a listener
- `DELETE /v1/calls/{call_id}/listeners/{listener_id}` `deleteListener` — Stop a listener
- `GET /v1/calls/{call_id}/listeners/{listener_id}` `getListener` — Get listener
- `GET /v1/calls/{call_id}/recording` `getCallRecording` — Get call recording
- `POST /v1/calls/{call_id}/recording/pause` `pauseCallRecording` — Pause call recording
- `POST /v1/calls/{call_id}/recording/resume` `resumeCallRecording` — Resume call recording
- `GET /v1/calls/{call_id}/transcript` `getCallTranscript` — Get call transcript
- `POST /v1/test_helpers/calls` `createTestCall` — Trigger a simulated call (test mode only)

## Catalog

- `GET /v1/catalog` `listCatalog` — List hardware catalog

## DECT Bases

- `GET /v1/dect-bases` `listDECTBases` — List DECT base stations
- `POST /v1/dect-bases` `createDECTBase` — Create a DECT base station
- `DELETE /v1/dect-bases/{id}` `deleteDECTBase` — Delete a DECT base station
- `GET /v1/dect-bases/{id}` `getDECTBase` — Get a DECT base station
- `POST /v1/dect-bases/{id}` `updateDECTBase` — Update a DECT base station
- `GET /v1/dect-bases/{id}/handsets` `listDECTHandsets` — List handsets on a DECT base
- `POST /v1/dect-bases/{id}/handsets` `createDECTHandset` — Add a handset to a DECT base
- `DELETE /v1/dect-bases/{id}/handsets/{handset_id}` `deleteDECTHandset` — Delete a handset
- `GET /v1/dect-bases/{id}/handsets/{handset_id}` `getDECTHandset` — Get a handset
- `POST /v1/dect-bases/{id}/handsets/{handset_id}` `updateDECTHandset` — Update a handset
- `GET /v1/dect-bases/{id}/handsets/{handset_id}/extensions` `listDECTExtensions` — List extensions on a handset
- `POST /v1/dect-bases/{id}/handsets/{handset_id}/extensions` `createDECTExtension` — Assign an extension to a handset
- `DELETE /v1/dect-bases/{id}/handsets/{handset_id}/extensions/{extension_id}` `deleteDECTExtension` — Remove an extension from a handset

## Deskphones

- `GET /v1/deskphones` `listDeskphones` — List deskphones  _query:_ limit
- `POST /v1/deskphones` `createDeskphone` — Create a deskphone
- `DELETE /v1/deskphones/{id}` `deleteDeskphone` — Delete a deskphone
- `GET /v1/deskphones/{id}` `getDeskphone` — Get a deskphone
- `POST /v1/deskphones/{id}` `updateDeskphone` — Update a deskphone
- `GET /v1/deskphones/{id}/lines` `listDeskphoneLines` — List deskphone lines
- `POST /v1/deskphones/{id}/lines` `createDeskphoneLine` — Create a deskphone line
- `DELETE /v1/deskphones/{id}/lines/{line_id}` `deleteDeskphoneLine` — Delete a deskphone line
- `POST /v1/deskphones/{id}/lines/{line_id}` `updateDeskphoneLine` — Update a deskphone line
- `GET /v1/deskphones/{id}/provisioning-events` `listDeskphoneProvisioningEvents` — List provisioning events  _query:_ limit

## Devices

- `GET /v1/devices` `listDevices` — List devices  _query:_ type, limit, expand[]
- `POST /v1/devices` `createDevice` — Create a device
- `DELETE /v1/devices/{id}` `deleteDevice` — Delete a device
- `GET /v1/devices/{id}` `getDevice` — Get a device
- `POST /v1/devices/{id}` `updateDevice` — Update a device
- `GET /v1/devices/{id}/button_overrides` `listDeviceButtonOverrides` — List device button overrides  _query:_ limit
- `POST /v1/devices/{id}/button_overrides` `createDeviceButtonOverride` — Create a device button override
- `DELETE /v1/devices/{id}/button_overrides/{override_id}` `deleteDeviceButtonOverride` — Delete a device button override
- `GET /v1/devices/{id}/buttons` `listDeviceButtons` — List effective device buttons
- `GET /v1/devices/{id}/compatible_button_templates` `listCompatibleButtonTemplates` — List button templates compatible with a device  _query:_ limit
- `POST /v1/devices/{id}/status/check-sync` `deviceCheckSync` — Trigger device configuration reload
- `GET /v1/devices/{id}/users` `listDeviceUsers` — List users assigned to a device
- `POST /v1/devices/{id}/users` `assignUserToDevice` — Assign a user to a device
- `DELETE /v1/devices/{id}/users/{user_id}` `removeUserFromDevice` — Remove a user from a device

## Dial Plans

- `GET /v1/dialplans` `listDialPlans` — List dial plans  _query:_ limit, expand[]
- `POST /v1/dialplans` `createDialPlan` — Create a dial plan
- `DELETE /v1/dialplans/{dial_plan_id}` `deleteDialPlan` — Delete a dial plan
- `GET /v1/dialplans/{dial_plan_id}` `getDialPlan` — Get a dial plan  _query:_ expand[]
- `POST /v1/dialplans/{dial_plan_id}` `updateDialPlan` — Update a dial plan

## Events

- `GET /v1/events` `streamEvents` — Stream real-time events

## Extensions

- `GET /v1/extensions` `listExtensions` — List extensions  _query:_ target, limit
- `POST /v1/extensions` `createExtension` — Create an extension
- `DELETE /v1/extensions/{number}` `deleteExtension` — Delete an extension
- `GET /v1/extensions/{number}` `getExtension` — Get an extension
- `POST /v1/extensions/{number}` `updateExtension` — Update an extension

## Faxes

- `GET /v1/faxes` `listFaxes` — List faxes  _query:_ limit, direction, status, did, number, is_read, expand[]
- `POST /v1/faxes` `sendFax` — Send a fax
- `DELETE /v1/faxes/{fax}` `deleteFax` — Delete a fax

## Files

- `POST /v1/files` `uploadFile` — Upload a file

## Hardware Orders

- `GET /v1/hardware-orders` `listHardwareOrders` — List hardware orders  _query:_ expand[]
- `POST /v1/hardware-orders` `createHardwareOrder` — Create hardware order
- `GET /v1/hardware-orders/{order_id}` `getHardwareOrder` — Get hardware order  _query:_ expand[]
- `POST /v1/hardware-orders/{order_id}` `updateHardwareOrder` — Update hardware order items
- `POST /v1/hardware-orders/{order_id}/items/{item_id}` `assignHardwareOrderItem` — Update pre-staging intents on a hardware order item

## Locations

- `GET /v1/locations` `listLocations` — List locations  _query:_ limit, status
- `POST /v1/locations` `createLocation` — Create a location
- `DELETE /v1/locations/{location_id}` `deleteLocation` — Delete location
- `GET /v1/locations/{location_id}` `getLocation` — Get location details
- `POST /v1/locations/{location_id}` `updateLocation` — Update location
- `POST /v1/locations/{location_id}/provision-e911` `provisionLocationE911` — Provision E911
- `POST /v1/locations/{location_id}/validate-e911` `validateLocationE911` — Validate E911 address

## Number Porting

- `POST /v1/port-in-eligibility` `checkPortInEligibility` — Check port-in eligibility
- `GET /v1/port-orders` `listPortOrders` — List port orders  _query:_ limit, status
- `POST /v1/port-orders` `createPortOrder` — Create a draft port order
- `GET /v1/port-orders/{order_id}` `getPortOrder` — Get a port order
- `POST /v1/port-orders/{order_id}` `updatePortOrder` — Update a port order
- `POST /v1/port-orders/{order_id}/approve` `approvePortOrder` — Approve a port order
- `GET /v1/port-orders/{order_id}/bill-copy` `downloadPortOrderBillCopy` — Download bill copy document
- `POST /v1/port-orders/{order_id}/bill-copy` `uploadPortOrderBillCopy` — Upload bill copy document
- `POST /v1/port-orders/{order_id}/cancel` `cancelPortOrder` — Cancel a port order
- `GET /v1/port-orders/{order_id}/csr` `downloadPortOrderCSR` — Download CSR document
- `POST /v1/port-orders/{order_id}/csr` `uploadPortOrderCSR` — Upload CSR document
- `GET /v1/port-orders/{order_id}/events` `listPortOrderEvents` — List port order events
- `POST /v1/port-orders/{order_id}/submit` `submitPortOrder` — Submit a port order

## Phone Numbers

- `GET /v1/available-phone-numbers` `searchAvailablePhoneNumbers` — Search available phone numbers  _query:_ area_code, city, state, zip, npa_nxx, quantity
- `GET /v1/phone-number-orders` `listNumberOrders` — List phone number orders  _query:_ limit, status, order_type
- `POST /v1/phone-number-orders` `createNumberOrder` — Order new phone numbers
- `GET /v1/phone-number-orders/{order_id}` `getNumberOrder` — Get a phone number order
- `GET /v1/phone-numbers` `listPhoneNumbers` — List phone numbers  _query:_ limit, status
- `GET /v1/phone-numbers/{phone_number_id}` `getPhoneNumber` — Get a phone number
- `POST /v1/phone-numbers/{phone_number_id}` `updatePhoneNumber` — Update a phone number
- `POST /v1/phone-numbers/{phone_number_id}/disconnect` `disconnectPhoneNumber` — Disconnect a phone number
- `POST /v1/phone-numbers/{phone_number_id}/reassign` `reassignPhoneNumber` — Reassign a phone number
- `POST /v1/phone-numbers/{phone_number_id}/route` `updatePhoneNumberRouting` — Update inbound routing
- `GET /v1/phone-numbers/{phone_number_id}/sms-port-out` `getSmsPortOut` — Get the SMS port-out window
- `POST /v1/phone-numbers/{phone_number_id}/sms-port-out` `updateSmsPortOut` — Open or lock the SMS port-out window

## Presence

- `GET /v1/presence` `listPresence` — Get presence for several users  _query:_ user[]
- `GET /v1/users/{user_id}/presence` `getUserPresence` — Get a user's presence

## Quality

- `GET /v1/quality/device-registrations` `getDeviceRegistrations` — Get device registration status
- `GET /v1/quality/summary` `getQualitySummary` — Get quality metrics summary  _query:_ from, to, granularity
- `GET /v1/quality/worst-calls` `getQualityWorstCalls` — Get worst quality calls  _query:_ from, to, limit

## Ring Groups

- `GET /v1/ring_groups` `listRingGroups` — List ring groups  _query:_ limit, expand[]
- `POST /v1/ring_groups` `createRingGroup` — Create a ring group
- `DELETE /v1/ring_groups/{ring_group_id}` `deleteRingGroup` — Delete a ring group
- `GET /v1/ring_groups/{ring_group_id}` `getRingGroup` — Get a ring group  _query:_ expand[]
- `POST /v1/ring_groups/{ring_group_id}` `updateRingGroup` — Update a ring group
- `POST /v1/ring_groups/{ring_group_id}/members` `addRingGroupMember` — Add a member
- `DELETE /v1/ring_groups/{ring_group_id}/members/{member_id}` `removeRingGroupMember` — Remove a member

## Schedules

- `GET /v1/schedules` `listSchedules` — List schedules  _query:_ limit
- `POST /v1/schedules` `createSchedule` — Create a schedule
- `DELETE /v1/schedules/{schedule_id}` `deleteSchedule` — Delete schedule
- `GET /v1/schedules/{schedule_id}` `getSchedule` — Get schedule details
- `POST /v1/schedules/{schedule_id}` `updateSchedule` — Update schedule
- `DELETE /v1/schedules/{schedule_id}/hold` `clearScheduleHold` — Clear schedule hold
- `POST /v1/schedules/{schedule_id}/hold` `setScheduleHold` — Set schedule hold

## Sessions

- `POST /v1/account_sessions` `createAccountSession` — Create an account session
- `POST /v1/user_sessions` `createUserSession` — Create a user session
- `POST /v1/users/{user_id}/revoke_sessions` `revokeUserSessions` — Revoke a user's sessions

## Shared Voicemail Boxes

- `GET /v1/shared_voicemail_boxes` `listSharedVoicemailBoxes` — List shared voicemail boxes  _query:_ limit, expand[]
- `POST /v1/shared_voicemail_boxes` `createSharedVoicemailBox` — Create a shared voicemail box
- `DELETE /v1/shared_voicemail_boxes/{shared_voicemail_box_id}` `deleteSharedVoicemailBox` — Delete a shared voicemail box
- `GET /v1/shared_voicemail_boxes/{shared_voicemail_box_id}` `getSharedVoicemailBox` — Get a shared voicemail box  _query:_ expand[]
- `POST /v1/shared_voicemail_boxes/{shared_voicemail_box_id}` `updateSharedVoicemailBox` — Update a shared voicemail box

## User Profile

- `GET /v1/me` `getCurrentUser` — Get current user profile
- `GET /v1/me/calls` `listOwnCalls` — List own call history  _query:_ limit, direction, from_date, to_date
- `GET /v1/me/directory` `listDirectory` — List the account directory  _query:_ limit
- `GET /v1/me/emergency-addresses` `listEmergencyAddresses` — List emergency addresses
- `POST /v1/me/emergency-addresses` `createEmergencyAddress` — Register an emergency address
- `DELETE /v1/me/emergency-addresses/{emergency_address_id}` `deleteEmergencyAddress` — Delete an emergency address
- `GET /v1/me/emergency-addresses/{emergency_address_id}` `getEmergencyAddress` — Get an emergency address
- `DELETE /v1/me/emergency-addresses/{emergency_address_id}/registered_ip` `clearEmergencyAddressRegisteredIp` — Clear an emergency address's network binding
- `GET /v1/me/presence` `getOwnPresence` — Get own presence status
- `PUT /v1/me/presence` `updateOwnPresence` — Update own presence status

## Users

- `GET /v1/users` `listUsers` — List all users  _query:_ limit, search, expand[]
- `POST /v1/users` `createUser` — Create a new user
- `DELETE /v1/users/{user_id}` `deleteUser` — Delete user
- `GET /v1/users/{user_id}` `getUser` — Get user details  _query:_ expand[]
- `POST /v1/users/{user_id}` `updateUser` — Update user

## Voice Apps

- `GET /v1/voice-apps` `listVoiceApps` — List voice apps  _query:_ limit, expand[]
- `POST /v1/voice-apps` `createVoiceApp` — Create a voice app
- `DELETE /v1/voice-apps/{voice_app_id}` `deleteVoiceApp` — Delete voice app
- `GET /v1/voice-apps/{voice_app_id}` `getVoiceApp` — Get voice app details  _query:_ expand[]
- `POST /v1/voice-apps/{voice_app_id}` `updateVoiceApp` — Update voice app
- `POST /v1/voice-apps/{voice_app_id}/rotate_secret` `rotateVoiceAppSecret` — Rotate webhook secret

## Voicemails

- `DELETE /v1/voicemail_greetings/{owner}/{type}` `deleteVoicemailGreeting` — Delete a voicemail greeting
- `GET /v1/voicemail_greetings/{owner}/{type}` `getVoicemailGreeting` — Get a voicemail greeting
- `POST /v1/voicemail_greetings/{owner}/{type}` `uploadVoicemailGreeting` — Upload a voicemail greeting
- `GET /v1/voicemails` `listVoicemails` — List voicemails  _query:_ limit, owner, is_read, from_date, expand[]
- `DELETE /v1/voicemails/{voicemail_id}` `deleteVoicemail` — Delete a voicemail
- `GET /v1/voicemails/{voicemail_id}` `getVoicemail` — Get a voicemail  _query:_ expand[]
- `POST /v1/voicemails/{voicemail_id}` `updateVoicemail` — Update a voicemail
- `GET /v1/voicemails/{voicemail_id}/transcript` `getVoicemailTranscript` — Get a voicemail transcript

## WebRTC

- `GET /v1/webrtc/ice-servers` `getIceServers` — Get ICE server credentials
- `POST /v1/webrtc/push-subscriptions` `createPushSubscription` — Register a browser push subscription

## Webhook Endpoints

- `POST /v1/test_helpers/events` `createTestEvent` — Emit a canned webhook event (test mode only)
- `GET /v1/webhook_endpoints` `listWebhookEndpoints` — List webhook endpoints  _query:_ limit
- `POST /v1/webhook_endpoints` `createWebhookEndpoint` — Create a webhook endpoint
- `DELETE /v1/webhook_endpoints/{webhook_endpoint}` `deleteWebhookEndpoint` — Delete a webhook endpoint
- `GET /v1/webhook_endpoints/{webhook_endpoint}` `getWebhookEndpoint` — Get a webhook endpoint
- `POST /v1/webhook_endpoints/{webhook_endpoint}` `updateWebhookEndpoint` — Update a webhook endpoint
