OptionaldeliveryOptionaldeliveryThe delivery axis. unconfirmed means the rail sends no delivery receipts
(iMessage numbers) — only a read can upgrade it.
Who sent it, E.164. On an inbound group message this is the participant who sent it — not the group, and not your own line.
OptionalgroupThe group this message belongs to, or null for a one-to-one conversation. A Dial id — never the channel's own group identifier.
Media attachments (MMS), in send order. Empty for plain SMS.
OptionalreactionThe reaction this message carries (a reaction name or an emoji); null otherwise.
OptionalreadWhen the recipient read the message; null if unread or unsupported.
OptionalreadThe read axis, independent of delivery — a message can be both delivered and
read. unsupported means the rail never reports reads (SMS): nothing is
coming, so don't wait for it.
OptionalreplyId of the message this one replies or reacts to; null for ordinary messages.
Delivery only, in the original vocabulary. Kept for compatibility — prefer
deliveryState, which names the same axis more precisely (sent is
pending, unknown is unconfirmed) and pairs with readState.
No longer returns read: reads live on readState/readAt.
OptionalstatusA human-readable failure reason, present only when status is
undelivered or failed. Null otherwise. Identical to deliveryError.
The destination, E.164 — and null exactly when groupId is set, in both
directions: a group message is addressed to the group, and a group is not a
phone number.
Which of your numbers the conversation is on is phoneNumberId, which is set
on every message. Code reading to as "my number" must read that instead.
Vendor-neutral failure reason; non-null only on
undelivered/failed.