> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getdial.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getdial.ai/_mcp/server.

# 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-number` texts a code to the number that will own the account
* `POST /v1/auth/verify-number` submits 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](/documentation/get-started/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](/documentation/cli/commands), [Node](/documentation/sdks/node) and [Python](/documentation/sdks/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](/documentation/platform/manage-phone-numbers#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:

```bash
dial auth login you@example.com
dial auth verify-otp --code 123456
dial auth register-number +14155550123
dial auth verify-otp --number --code 654321
```

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](/documentation/cli/commands#auth-login).

### `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.