New features, improvements, and fixes to Dial

September 4, 2026

Fixed

Replying to a message that arrived over SMS answers 400, not 500

A threaded reply attaches to its target by the message id the target’s channel carries, and only iMessage and RCS carry one. When the other party has neither, an inbound message reaches your iMessage line over the SMS fallback — and a body reply to that message had nothing to attach to. Reply to a message reported that as 500 Internal server error, which read as a fault on our side for a request that simply isn’t supported.

It now answers 400 with a message naming the reason, so it’s distinguishable from a real failure and safe not to retry. Nothing was ever delivered on the 500 and nothing is delivered on the 400 either — the behaviour is unchanged, only the classification.

To reach a contact whose messages arrive over SMS, send a new message (POST /api/v1/messages) rather than a reply. It lands in the same conversation; it just isn’t quoted on the recipient’s device, which SMS can’t render anyway.

Unaffected: a reaction on such a target still follows the reaction rules (an emoji is delivered as a regular message carrying the emoji; a reaction name answers 400), and a body reply whose conversation merely can’t thread at send time is still delivered as a regular message.