Outbound Notifications API (SMS Channel)

Overview

The Outbound Notifications API, a Talkdesk Digital Engagement™ solution, allows you to send notification messages at scale through multiple channels, utilizing various message types. You can proactively reach your customers by sending messages via WhatsApp or SMS to multiple recipients in a single batch request.

📘 Use Case

Consider the case where you need to send bulk notifications to your customers — such as order confirmations, appointment reminders, or promotional messages. You can use the Outbound Notifications API to send messages from a WhatsApp or SMS sender you control. For WhatsApp, each message can be sent as free-form content or using pre-approved templates. For SMS, messages are sent as plain text. Each message can target multiple destinations in a single request.


Outbound Notifications API Details

The Outbound Notifications API lets clients send outbound notification messages in bulk through Talkdesk's outbound messaging service. Content can be sent as plain text or via a pre-approved WhatsApp template, specified by name, language, and optional variables for personalization. Messages are trackable using a unique bulk request identifier and can be linked to active Talkdesk conversations.

Channel support

The API supports the following channels:

  • WhatsApp — two message types: direct content messages and template-based messages. For contacts without reply in the last 24 hours, only WhatsApp template messages are permitted.
  • SMS — one message type: plain text messages via the body field.

Sender configuration

ChannelSender requirement
WhatsAppMust be configured as a WhatsApp touchpoint in Channels App.
SMSSMS sender identifier. Must be a valid Talkdesk touchpoint registered with the "PROACTIVE" use type.

This operation is asynchronous. A successful call returns 202 Accepted with provider message identifiers and an initial delivery status.


Endpoint

POST https://api.talkdeskapp.com/outbound/notifications

  • Method: POST
  • Operation ID: SendOutboundNotificationMessage
  • Authentication Scope: outbound-notifications:write

Request body

Content type: application/json

Top-level request schema:

FieldTypeRequiredDescription
channelstringYesChannel used to send the notification. Allowed values: WHATSAPP, SMS.
senderstringYesSender identifier applied to all messages in the request.
messagesarrayYesMessages to send. Minimum 1, maximum 500.
optionsobjectNoOptional batch-level settings (grouping, conversation binding).

messages[].destinations[] (common)

FieldTypeRequiredDescription
tostringYesRecipient destination identifier (e.g., phone number).
message_idstringNoOptional client-provided identifier for tracking.

WhatsApp message format

When channel is WHATSAPP, each item in messages[] must provide exactly one of content or template.

Text message body example:

{
  "content": {
    "body": {
      "type": "TEXT",
      "text": "Hello, how can I help you?"
    }
  }
}

Supported direct body variants:

FieldTypeRequiredNotes
content.body.typestringYesTEXT.
content.body.textstringDependsRequired for TEXT.

Template messages

The template must be approved by Meta. Provide the WhatsApp template metadata:

FieldTypeRequiredDescription
template.namestringYesTemplate name.
template.languagestringYesTemplate language code (e.g., en).
template.variablesobjectNoOptional variables keyed by numeric string (e.g., "1").

WhatsApp example request:

{
  "channel": "WHATSAPP",
  "sender": "+123456789",
  "messages": [
    {
      "destinations": [
        { "to": "+987654321", "message_id": "client-msg-1" }
      ],
      "template": {
        "name": "welcome_message",
        "language": "en",
        "variables": { "1": "Talkdesk", "2": "Support Team" }
      }
    }
  ],
  "options": {
    "bulk_id": "bulk-123",
    "bind_conversation": { "enabled": true, "ttl_in_minutes": 1440 }
  }
}

SMS message format

When channel is SMS, each item in messages[] must include a body field.

FieldTypeRequiredDescription
destinationsarrayYesRecipient list.
bodystringYesThe text content of the SMS message. Must not be empty.
📘

Note: SMS does not support content or template fields.

SMS example request:

{
  "channel": "SMS",
  "sender": "+123456789",
  "messages": [
    {
      "destinations": [ { "to": "+987654321", "message_id": "sms-msg-1" } ],
      "body": "Your order #12345 has been shipped."
    }
  ],
  "options": {
    "bulk_id": "sms-bulk-456",
    "group_id": "shipping-notifications"
  }
}

Request options

FieldTypeRequiredDescription
bulk_idstringNoOptional bulk identifier. service generates a UUID if omitted.
group_idstringNoOptional logical group identifier.
group_namestringNoOptional logical group name.
group_infoobjectNoOptional metadata map for the group.
bind_conversationobjectNoOptional binding settings (WhatsApp only).

options.bind_conversation

FieldTypeRequiredDescription
enabledbooleanNoSent messages bound to conversations. Default: false (WhatsApp only).
ttl_in_minutesintegerNoValid range: 30–21600 (WhatsApp only).

Success response

Status code: 202 Accepted

FieldTypeRequiredDescription
bulk_idstringYesUnique bulk identifier for the accepted request.
messagesarrayYesPer-destination acceptance results.

messages[] (Response)

FieldTypeDescription
message_idstringUnique provider message identifier.
destinationstringDestination that the message was accepted for.
statusstringInitial message status (PENDING).

Example Response:

{
  "bulk_id": "0f0d3c86-2355-4409-9968-ac871cdf88d0",
  "messages": [
    {
      "message_id": "msg-id-123",
      "destination": "+987654321",
      "status": "PENDING"
    }
  ]
}

Error responses

StatusMeaningExample body
400Bad Request{"code":"2140001","message":"Bad Request"}
401Unauthorized{"code":"2140002","message":"Unauthorized"}
403Forbidden{"code":"2140003","message":"Forbidden"}
500Internal Error{"code":"2140007","message":"Internal Server Error"}

Notes

  • The request is batch-oriented: up to 500 messages per call.
  • The response confirms acceptance, not final delivery.
  • WhatsApp messages are delivered via Infobip; SMS messages via Twilio.
  • bind_conversation only applies to WhatsApp.