v4
OpenAPI 3.1.02026-08-0255174167.5 KBProvision a phone number
Provisions a new phone number. inboundInstruction is optional — it becomes the new number's inbound voice-agent prompt, and a default greeting is used if you omit it. Not idempotent — there is no idempotency key, so retrying a failed request can provision an additional number. Confirm via List phone numbers before retrying.
Billing. Pay-as-you-go accounts are charged the first ownership month from their credit balance immediately, and the request is rejected with 402 when the balance can't cover it. On a flat-rate subscription the number is added to the subscription instead — the quantity goes up by one and Stripe invoices the prorated difference. The one exception: a subscription always bills at least one number, so if you hold no numbers (you released them all) the first number you provision back adds no charge — the quantity is already there. Either way the new number is covered by the subscription the moment this call returns.
Include imessage in capabilities to provision an iMessage number. iMessage provisioning is asynchronous: the response is 202 with the number in setupStatus: provisioning. Poll List phone numbers until setupStatus is ready before sending from it or calling from it. iMessage numbers are available on pay-as-you-go only — an account on a flat-rate subscription is rejected with 403; switch to pay-as-you-go to add one.
explicitProgrammaticConsent is required on every provisioning request (standard and iMessage): a short, human-readable attestation that the account holder has explicitly consented to provisioning this number programmatically (e.g. "User modal confirmation"). Requests without it are rejected with 400.
Headers
Your Dial API key, sent as Authorization: Bearer sk_live_...
Request body
Response
Number provisioned (synchronous — SMS/call numbers).