POST
/
api
/
v1
/
messages
/
send
{
  "notificationId": "<string>"
}
Authorization
string
required
Bearer token for API authentication. Format: Bearer {{apiToken}}

Request Body

{
  "channel": "EMAIL | SMS | WHATSAPP | SLACK | TEAMS | DISCORD | LINE | IN_APP | PUSH",
  "recipient": {
    "email": "user@example.com",
    "sms": "+911234567890",
    "whatsapp": "+911234567890",
    "pushToken": "push-token-123",
    "inApp": "internal-user-id",
    "slack": "U01XXXXXXX",
    "discord": "discord-user-id",
    "teams": "teams-user-id",
    "line": "line-user-id",
    "userId": "unified-user-id"
  },
  "template": {
    "name": "welcome_template"
  },
  "templateVariables": {
    "firstName": "John",
    "offerCode": "ABCD123"
  },
  "providerIntegration": {
    "id": "provider-uuid-1234",
    "name": "Provider Name",
    "code": "SLACK | TWILIO | WATI | ..."
  },
  "subject": "Welcome to our app!",
  "body": "Hello John, welcome onboard!",
  "buttons": [
    {
      "text": "Visit Website",
      "value": "https://example.com"
    }
  ]
}

Request Fields

Required Fields

channel
string
required
The communication channel. One of: EMAIL, SMS, WHATSAPP, SLACK, TEAMS, DISCORD, LINE, IN_APP, PUSH
recipient
object
required
The destination for the message. Must include the field matching the selected channel.

Optional Fields

template
object
Template configuration for the message
templateVariables
object
Key-value pairs to populate template placeholders
providerIntegration
object
Provider configuration
subject
string
Message subject (for EMAIL only)
body
string
Message body (for SLACK, EMAIL, TEAMS)
buttons
array
Interactive buttons (for SLACK only)

Response

Success Response (200 OK)

{
  "notificationId": "c1234567-89ab-4def-9012-3456789abcdef"
}

Response Fields

notificationId
UUID
Unique identifier for the sent message

Error Responses

  • 400 - Bad Request (Invalid request format or missing required fields)
  • 401 - Unauthorized (Missing or invalid API key)
  • 403 - Forbidden (Insufficient permissions to send message)
  • 404 - Not Found (Template or provider not found)
  • 429 - Too Many Requests
  • 500 - Internal Server Error

Examples

{
  "channel": "SLACK",
  "recipient": {
    "slack": "U01ABCDEF"
  },
  "body": "Hello from Slack!",
  "buttons": [
    {
      "text": "Open App",
      "value": "open_app"
    }
  ],
  "providerIntegration": {
    "code": "SLACK",
    "name": "Slack Default"
  }
}