API reference
Everything you need to send messages, manage contacts and receive events.
Getting started
MsgDrip has a REST API at https://api.msgdrip.com/api/v1. Requests and responses use JSON. To begin, create an API key under Settings → API keys. Use a sandbox key while building; sandbox sends are simulated and never reach customers.
Authentication
Send your key as a bearer token in the Authorization header. Keys are scoped to a workspace and can be revoked at any time.
curl https://api.msgdrip.com/api/v1/me \
-H "Authorization: Bearer $MSGDRIP_KEY"Send a message
Send one message to a contact across one or more channels. Channels are tried in the order you list them unless smart routing is enabled for the campaign.
{
"contact": "customer_1024",
"message": "Your order is ready!",
"channels": [
"whatsapp",
"sms",
"email"
],
"campaign": "order_ready"
}| Field | Description |
|---|---|
| contact | Your contact ID, or an email or phone number. |
| message | Message text. Use a template ID instead for approved WhatsApp templates. |
| channels | Any of email, whatsapp, sms, gchat. |
| campaign | Optional. Groups the message in reports and analytics. |
Contacts
Create or update a contact. If a contact with the same id exists, its fields are merged.
{
"id": "customer_1024",
"name": "Priya Shah",
"email": "priya@example.com",
"phone": "+447700900123",
"whatsapp_opt_in": true,
"fields": { "plan": "Growth", "city": "Leeds" }
}Campaigns
Trigger a saved campaign for one or many contacts, passing data to fill template fields.
{
"contacts": ["customer_1024", "customer_2048"],
"data": { "order_id": "A-5521", "pickup": "17:00" }
}Webhooks
Add an endpoint under Settings → Webhooks and choose the events to receive. Each request includes an X-MsgDrip-Signature header; verify it with your signing secret before trusting the payload. Failed deliveries are retried for up to 24 hours.
{
"event": "message.delivered",
"message_id": "msg_8f2a91",
"contact": "customer_1024",
"channel": "whatsapp",
"campaign": "order_ready",
"delivered_at": "2026-10-16T09:41:07Z"
}Errors & limits
MsgDrip uses standard HTTP status codes. Bursts of up to 100 requests per second are allowed per workspace.
| Status | Meaning |
|---|---|
| 400 | The request is missing a field or has an invalid value. The response says which. |
| 401 | The API key is missing, revoked or for another workspace. |
| 404 | The contact, campaign or template was not found. |
| 409 | The contact has opted out of every requested channel. |
| 429 | Too many requests. Retry after the time in the Retry-After header. |
