Skip to main content

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 baseUrl tied 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 to value

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 preferredProvider rather than relied on for automatic failover