Skip to content

Webhooks push events to your server the moment they happen — no polling. Each event type goes to its own URL, configured per workspace.

TypeFires when
impressionSMS accepted by the gateway (API single-send path)
clickRecipient clicks a short URL (optional per-recipient dedup)
conversionPostback received via /track or createAction
deliveryCarrier returns a delivery report (DLR)

In the portal under Webhooks, or via API:

PUT  /api/v1/user/webhooks  · Permission: webhooks.write

Terminal window
curl -X PUT https://restlink23telecom.com/api/v1/user/webhooks \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"delivery_url": "https://your-server.com/webhook/delivery",
"click_url": "https://your-server.com/webhook/click",
"unique_clicks_only": true,
"delivery_fields": [
"message_id",
"recipient",
"sender_id",
"status",
"status_code",
"num_parts",
"cost",
"timestamp"
]
}'

PUT /user/webhooks returns 400 with stable typed codes:

CodeWhen
INVALID_URLURL is not a string or fails SSRF validation (""/null are valid — they disable the channel)
INVALID_SECRETsigning_secret empty, longer than 64 chars, or wrong type
INVALID_FIELDS*_fields is null, empty, or contains an unknown field name
INVALID_TOGGLEunique_clicks_only is not a boolean
CONFLICTING_FIELDSsigning_secret and clear_signing_secret: true sent together
INVALID_BODYJSON parse error

You pick which fields each webhook carries (defaults shown in the example above). The full field list per event is in delivery webhook. workspace_id is opt-in for every event type — add it to the relevant *_fields list if you route multiple workspaces to one receiver.

When true, the click webhook fires only on the first human click per (broadcast, recipient) pair; repeat clicks are skipped. Bot clicks never fire webhooks. Applies to broadcast links only — API auto-shortened links always deliver every human click.

POST  /api/v1/user/webhooks/test  · Permission: webhooks.write

Terminal window
curl -X POST https://restlink23telecom.com/api/v1/user/webhooks/test \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "delivery"
}'

GET  /api/v1/user/webhooks/logs  · Permission: webhooks.read

Terminal window
curl "https://restlink23telecom.com/api/v1/user/webhooks/logs?limit=10" \
-H "X-API-Key: $API_KEY"

Logs include the payload sent, response code, response time and error details for every delivery attempt.