Send an SMS
Send a text message from one of your Dial numbers to any phone number. You need two things: the recipient in E.164 format (e.g. +14155550123) and the id of the Dial number you’re sending from (run dial number list to find it).
The message comes back with an id and a deliveryState of pending, which advances to delivered (or undelivered/failed, with a deliveryError reason) as the carrier reports back. You don’t have to poll for it: each advance is published as a message.status_changed event, so streaming events tells you the moment a message lands or is rejected.
Delivery and read state
Every message carries two independent fields, because delivery and reads are separate facts and not every rail reports both:
A read receipt proves delivery, so a message that is read is also reported as delivered.
Inbound messages report deliveryState: "delivered" (they arrived) and readState: "unsupported" — Dial doesn’t track whether you read an inbound message.
Migrating from status. The older status and statusError fields are still returned and still describe delivery only — no change in behavior. statusError and deliveryError are identical. status and deliveryState are the same axis in two vocabularies, and differ on two values:
Prefer deliveryState: it names those two states for what they mean, and it pairs with readState. Note that status no longer returns read — reads now live on readState and readAt, so a read message reports status: "delivered".
400. Pay-as-you-go accounts can send to any supported destination.Attach media (MMS)
Attach up to 10 media items (5 MB each) to a message. Supply each one either as a local file — the CLI and SDKs upload it for you — or as a public URL that Dial downloads server-side. Either way Dial mirrors the bytes into its own storage and serves them from a stable public URL, returned in the message’s media array.
Supported types: images (jpeg, png, gif, webp, bmp), audio (mp3, m4a, ogg, wav, amr), video (mp4, 3gpp), pdf, vCard (.vcf), and iCalendar (.ics). Any other type is rejected with a 400. Note that HEIC (the default iPhone photo format) and SVG are not supported — convert HEIC to JPEG/PNG before sending.
to and from numbers must both be in E.164 format.media[].url either way.media array is identical either way.