latestOpenAPI 3.1.02026-08-1557182178.2 KB

85518ccab2aa

selfHosted

Apply a Self-Hosted state transition

Applies one Self-Hosted state transition, discriminated by action: save a mode's config (no on/off or active-mode change), activate a mode (enable Self-Hosted and route calls through it — enable or switch), disable, or request_access. Each mode (llm/audio) has its own independent config.

save and activate require access: "granted" and return 403 otherwise; disable and request_access never do, so an account whose access was withdrawn can still switch Self-Hosted off.

The signing secret for a mode is minted the first time you save a wsUrl for it. Retrieve it from GET /api/v1/self-hosted/secret?mode=… and set up your server's X-Dial-Signature verification before you activate (activating routes your calls at the server immediately). Returns the full configuration after the change.

post/api/v1/self-hosted

Headers

Authorizationstring required

Your Dial API key, sent as Authorization: Bearer sk_live_...

Request body

OR
OR
OR

Response

The full configuration after the change.

enabledboolean required

Whether Self-Hosted mode is currently driving the account's calls.

access'none' | 'pending' | 'granted' | 'denied' required

Whether this account may configure Self-Hosted mode. Self-Hosted lets a third-party server drive live calls, so accounts are approved before they can point calls at one.

none — no access and no request on file; submit one with the request_access action. pending — a request is awaiting review. granted — you may save and activate freely. denied — the request was reviewed and turned down; accessRequest.reviewNote says why.

Accounts that already had Self-Hosted before approval was introduced are granted — nothing changed for them.

activeMode'llm' | 'audio' required

Which mode drives calls when enabled: "llm" (Dial runs voice; your server drives the conversation in text) or "audio" (Dial pipes the raw call audio to your server, full duplex).