Skip to content
Setup typeWebhook · self-service
Setup timeAbout 15 minutes
Sends SMSYes
Delivery status in BrazeNo — check 23 Telecom
Who can configureBraze user with webhook campaign permissions

A Braze Webhook campaign (or a Webhook step in Canvas) calls the 23 Telecom API to send an SMS. Braze shows the HTTP response; carrier delivery reports stay in 23 Telecom.

POST  /api/v1/sms/send-individual  · Permission: sms.send

  1. Open Messaging → Campaigns → Create Campaign → Webhook (or add a Webhook step in a Canvas).

  2. Set the URL to https://restlink23telecom.com/api/v1/sms/send-individual, method POST.

  3. Add headers Content-Type: application/json, your secret X-API-Key, and an Idempotency-Key (the endpoint requires it). For the sandbox test use a fixed one-off value such as braze-sandbox-001.

  4. Paste the raw JSON body and map the recipient with a phone Liquid tag.

  5. Use the Test tab to send to a test user, then review the response.

Request body
{
"messages": [
{ "to": "{{phone_liquid_tag}}", "message": "Your message", "sender_id": "YourBrand" }
]
}

Replace the to value with your phone Liquid tag and message with your content.

Braze fieldValue
MethodPOST
URLhttps://restlink23telecom.com/api/v1/sms/send-individual
Content-Typeapplication/json
X-API-Keyyour restricted 23 Telecom key (sandbox first)
Idempotency-Keydispatch and user identity, unique per user (see below)
messages[0].tophone Liquid tag (E.164)
messages[0].messageyour message content
messages[0].sender_idyour approved sender ID

Use the Test tab with a Random, Specific or Customized user and your sk_test_ key. Confirm the exact Liquid you use for the idempotency value renders a stable, per-user string.

Live traffic uses managed activation because Braze branches on the HTTP status and a single dispatch_id is shared across the audience. Your 23 Telecom team confirms a retry-safe path using the strict integration endpoint, where a 2xx guarantees acceptance, or an adapter that validates the response body and enforces per-recipient idempotency.

The activation package includes the approved production URL or adapter mapping, the restricted key and a one-message launch check. Apply that configuration — rather than changing only the API key on the sandbox batch template — and then publish the Canvas or Campaign.

Accepted means queued. Read carrier delivery in Message status or Statistics, or add a live delivery webhook. If you need delivery status inside Braze, ask us to scope a managed custom-event bridge.

ResponseCause & fix
400 IDEMPOTENCY_KEY_REQUIREDAdd the Idempotency-Key header
401 INVALID_API_KEYWrong or disabled key in the secret header
403 NO_SMS_ACCESSSMS not enabled — contact 23 Telecom
429 RATE_LIMIT_EXCEEDEDSending faster than your budget — slow the audience
  • Webhook, Canvas, Liquid or credits — Braze support.
  • API key, sender ID, accepted-but-not-delivered — your 23 Telecom account manager, or the contact form.

Last verified: 16 July 2026.