GET /v1/messages/{id}. Each time a message changes status — sent, delivered, read, or failed — RelayOS sends an HTTP POST request to the callbackUrl you configure on your project. Your endpoint receives a JSON payload describing the event and can use it to update your database, trigger follow-up logic, or surface delivery confirmation to your users.
Configure your callback URL
Set yourcallbackUrl by calling PUT /v1/projects/me/meta-credentials. You can include it alongside your Meta credentials or update it on its own at any time.
Webhook event payload
Every event RelayOS sends has the same JSON structure. Theevent field tells you which status transition occurred, and message_id lets you correlate the event to the original message.
Payload fields
string
required
The type of event that occurred. See the event types table below.
string
required
The RelayOS message ID returned when you called
POST /v1/messages. Use this to match events to messages in your system.string
required
The recipient phone number in E.164 format.
string
required
The name of the template used for this message.
string
required
The new status of the message after this event. Mirrors the
event field in upper-case noun form: SENT, DELIVERED, READ, or FAILED.string
required
The opaque message ID assigned by Meta’s WhatsApp Cloud API (
wamid.*). Useful for support escalations.string
required
ISO 8601 UTC timestamp of when the status change occurred.
Event types
Request headers RelayOS sends
RelayOS includes the following headers on every webhookPOST so your server can identify and deduplicate events:
Handle and acknowledge events
Your endpoint must respond with any2xx HTTP status code within a reasonable time. RelayOS considers any other response — including 3xx redirects, 4xx errors, 5xx errors, or a timeout — a failed delivery and will retry.