Skip to main content
POST
/
api
/
webhook
Handle inbound SMS webhook (Sinch)
curl --request POST \
  --url https://your-instance.example.com/api/webhook \
  --header 'Content-Type: application/json' \
  --data '
{
  "id": "01K608PQBF3H41EQS64AH7CE11",
  "from": "14165550100",
  "to": "12362320246",
  "body": "Hey, can you call me back?",
  "operator_id": "310010",
  "received_at": "2026-05-18T15:04:01.135Z",
  "type": "mo_text"
}
'
{
  "message": "Webhook received",
  "messageId": "01K608PQBF3H41EQS64AH7CE11"
}

Body

application/json
id
string
required

Sinch-assigned inbound message id; echoed back in the ack for log correlation.

from
string
required

Sender phone number (Sinch may omit the +; the handler normalizes to E.164).

to
string
required

Tether-provisioned recipient number that received the SMS.

body
string
required

SMS text content as delivered by the carrier.

operator_id
string

Sinch carrier/operator identifier for the originating network.

received_at
string

ISO-8601 timestamp at which Sinch ingested the message.

type
string

Sinch event type, e.g. mo_text for an inbound text message.

Response

Webhook accepted (immediate ack — processing continues async)

Immediate ack returned to Sinch for an inbound SMS. Tether persists + routes the message asynchronously.

message
string
required
messageId
string
required

Sinch message id from the inbound payload, echoed back for log correlation.