August 9, 2026
Added
Creating an account requires a verified phone number
An account is created only once both an email address and a phone number are verified. When the email is new, POST /v1/auth/verify returns a registrationId and no account — continue from there:
POST /v1/auth/register-numbertexts a code to the number that will own the accountPOST /v1/auth/verify-numbersubmits that code and returns the account and its API key
A phone number can create one Dial account and can never create another, and a Dial number cannot be used to create one. Signing in to an existing account is unchanged and never asks for a phone number. See Authentication.
Identify your app in Dial’s request logs
Name the product or runtime making the call and it travels with every request, ahead of the identifier the CLI or SDK already sends:
- CLI: set
DIAL_USER_AGENT="my-app/1.2.3" - Node:
new DialClient({ apiKey, userAgent: "my-app/1.2.3" }) - Python:
DialClient(DialConfig(api_key=..., user_agent="my-app/1.2.3"))
The framework packages take the client you construct, so setting it once covers all of them. Left unset, nothing changes. See Commands, Node and Python.
iMessage messages report when they are read
An outbound iMessage message’s status advances to read once the recipient opens it, for recipients who share read receipts.
The 10DLC registration form reviews your answers
While you fill in the registration form in the dashboard, Dial checks the answers carrier reviewers scrutinise — your use case, message flow, opt-in screenshot and sample messages — and shows suggested fixes beside each field. The suggestions are advice: dismiss any of them, and submit whenever you like. See Register a US number for 10DLC.
Changed
dial auth replaces dial signup and dial onboard
Creating an account from the CLI is now four commands:
Signing in to an existing account stops after the second command. dial signup and dial onboard print the command that replaces them and do nothing else. The CLI’s MCP tools follow the same names: auth_login, auth_verify_otp and auth_register_number. See Commands.
inboundInstruction is gone from POST /v1/auth/verify
A new number starts with the default inbound prompt. Change it afterwards with PATCH /api/v1/numbers/{id}, or dial number set.
Fixed
Blank incoming iMessage messages
From August 1 to August 3, an iMessage read receipt arrived as an incoming message with no content — a blank message in the dashboard, an empty entry on GET /api/v1/messages, and a message.received webhook event carrying nothing. Read receipts now report as a read status on the message that was read. SMS and voice were unaffected.