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.

Type Fires when
impression SMS accepted by the gateway (API sends)
click Recipient clicks a short URL (optional per-recipient dedup)
conversion Postback received via /track or createAction
delivery Carrier 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:

Code When
INVALID_URL URL is not a string or fails SSRF validation (""/null are valid — they disable the channel)
INVALID_SECRET signing_secret empty, longer than 64 chars, or wrong type
INVALID_FIELDS *_fields is null, empty, or contains an unknown field name
INVALID_TOGGLE unique_clicks_only is not a boolean
CONFLICTING_FIELDS signing_secret and clear_signing_secret: true sent together
INVALID_BODY JSON 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.