We use optional, privacy-safe analytics to understand which pages help visitors. Nothing optional runs until you choose. Privacy policy

Skip to content
Developer guide

Receive iMessage via API

How inbound replies reach your application. When a customer answers, SendiMessage records the message, updates the conversation, and posts a signed webhook to your endpoint.

Inbound lifecycle

Customer sends a replySendiMessage line receives itMessage recordedConversation updatedreceive webhook posted to your app

Where replies show up

Inbound messages appear in GET /v2/messages with direction "in" and status RECEIVED, and in their conversation thread. The receive webhook notifies your endpoint the moment a reply arrives. Inbound STOP-family keywords set the sender's opt-out state automatically.

The event

receive webhook
{
"event": "receive",
"message_handle": "96699B14-AFDB-4B33-AA66-C4B093533DA3",
"from": "+14155550123",
"to": "+15555550100",
"content": "Can we move it to 3 PM?",
"media_url": null,
"service": "iMessage",
"is_outbound": false,
"status": "RECEIVED",
"date_sent": "2026-08-21T09:07:35Z",
"conversation_handle": "ee60f9b5-2ddb-4ea8-8ad7-bc70cf85727f"
}

Verify X-SMSBridge-Signature against the raw body before trusting the payload, then read content and from.

How are replies grouped?

By conversation — one thread per line and counterpart. You can page a thread's history over the API to reconstruct context for your app, CRM, or agent.

Verify and consume events

The webhook reference includes signature-verification examples in Node.js and Python.

Related