Message Providers
Configure message providers via the dashboard to enable sending across SMS, WhatsApp, Telegram and Signal through MessagePipe with automatic failover support.
Supported Message Providers
SMS Providers
MessagePipe (Built-in)
No credentials required. MessagePipe's own built-in SMS provider. It's great for getting started quickly.
Configuration:
{}
Twilio
Configuration:
{
"accountSid": "ACxxxxxxxxxxxxx",
"authToken": "your-auth-token",
"fromNumber": "+1234567890"
}
Termii
Configuration:
{
"apiKey": "your-termii-api-key",
"senderId": "YourApp"
}
Amazon SNS
Configuration:
{
"accessKeyId": "your-aws-access-key",
"secretAccessKey": "your-aws-secret-key",
"region": "us-east-1"
}
Infobip
Configuration:
{
"apiKey": "your-infobip-api-key",
"baseUrl": "https://api.infobip.com",
"senderId": "your-sender-id"
}
App Providers (Messaging Apps)
WhatsApp (Meta Business API)
Configuration:
{
"accessToken": "your-whatsapp-token",
"phoneNumberId": "your-phone-number-id",
"businessAccountId": "your-business-account-id"
}
WhatsApp via Twilio
Configuration:
{
"accountSid": "ACxxxxxxxxxxxxx",
"authToken": "your-auth-token",
"fromNumber": "your-whatsapp-sandbox-number"
}
Telegram
Configuration:
{
"botToken": "your-bot-token"
}
Recipients must use their Telegram Chat ID (e.g. 123456789) as the to field, not a phone number.
Signal
Requires a self-hosted Signal CLI REST API instance.
Configuration:
{
"phoneNumber": "+1234567890",
"apiEndpoint": "http://localhost:8080"
}
Message Configuration
Before adding providers, create a message configuration for your project:
POST /message-config?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}
{
"senderName": "YourAppName",
"enabled": true
}
Get Message Configuration
GET /message-config?projectId={projectId}
Authorization: Bearer {your-jwt-token}
Update Message Configuration
PUT /message-config?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}
{
"senderName": "UpdatedAppName",
"enabled": true
}
Adding Message Providers
Add a new message provider to your project:
POST /message-config/providers?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}
{
"provider": "twilio",
"name": "Primary Twilio SMS",
"enabled": true,
"priority": 1,
"config": {
"accountSid": "ACxxxxxxxxxxxxx",
"authToken": "your-auth-token",
"fromNumber": "+1234567890"
}
}
Response:
{
"id": "message-provider-uuid",
"provider": "twilio",
"name": "Primary Twilio SMS",
"enabled": true,
"priority": 1,
"createdAt": "2024-01-01T10:00:00Z"
}
Managing Message Providers
Get All Message Providers
GET /message-config/providers?projectId={projectId}
Authorization: Bearer {your-jwt-token}
Update Message Provider
PUT /message-config/providers/{providerConfigId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}
{
"name": "Updated Twilio Config",
"enabled": true,
"priority": 1,
"config": {
"accountSid": "ACxxxxxxxxxxxxx",
"authToken": "updated-auth-token",
"fromNumber": "+1234567890"
}
}
Update Provider Priorities in Bulk
PUT /message-config/providers/priorities?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}
{
"providers": [
{ "id": "provider-uuid-1", "priority": 1 },
{ "id": "provider-uuid-2", "priority": 2 }
]
}
Delete Message Provider
DELETE /message-config/providers/{providerConfigId}
Authorization: Bearer {your-jwt-token}
Provider Notes
Twilio
- Global coverage with local phone numbers
- Supports SMS and WhatsApp (via
whatsapp_twilio) - Advanced features like delivery receipts
Termii
- Optimized for African markets (Nigeria, Ghana, Kenya, etc.)
- Better delivery rates in regions where global carriers underperform
Infobip
- Global coverage with strong presence in Europe and emerging markets
- Requires a
baseUrltied to your Infobip account region
WhatsApp (Meta)
- Requires a verified Meta Business account
- Messages must comply with WhatsApp Business messaging policies
Telegram
- Recipients must initiate a conversation with your bot before they can receive messages
- Use Chat IDs (numeric), not usernames for the
tovalue
Signal
- Requires self-hosting a Signal CLI REST API instance
- Most privacy-preserving option. It's suitable for security-sensitive use cases
Provider Priority Best Practices
- Use your primary SMS provider (e.g. Twilio or Termii) as Priority 1
- Add a fallback SMS provider as Priority 2
- Messaging app providers (WhatsApp, Telegram, Signal) are typically selected via
preferredProviderrather than relied on for automatic failover