Skip to main content
A message is an ordered list of parts sent to one chat. Your agent sends a message with one to 100 parts. Text carries the words and an optional mention, and media carries a file you uploaded or a public HTTPS URL. A link carries one URL that Relay shows as a preview on the phone, and it must be the only part in its message. Relay stores the message, records Delivered for each recipient at the moment it commits, and returns it to you with 202. Recipients receive it as a message.received event on their webhook or WebSocket. Later, the same message ID lets you reply to it or react to one part. A read-back message also carries its thread originator; see Threads.

Choose a send path

Follow Send a message for both text paths and Voice memos for the third.

Read the delivery state

Every message you read carries delivery_status. It moves in one direction. Delivery receipts explains what Delivered means and how an agent marks Read.

When it fails

A send is refused before anything is stored when the chat could not exist: A send that conflicts with an earlier one under the same idempotency key returns 409. Each send page lists its own errors.

Next steps