For Engineering Teams

WhatsApp, SMS & RCS API Documentation

Production base URLs, authentication, sample requests, webhooks and error handling for integrating Messagify's WhatsApp API, with the current status of the SMS and RCS APIs. You integrate against Messagify's endpoints and authentication.

API Base URLs

Production base URLs for each channel. Call them only from your server, over HTTPS. Email and Voice don't have a public API base URL yet; contact us to integrate them.

ChannelProduction base URLAuthenticationStatus
WhatsApphttps://whatsappapi.messagify.in/v3apikey headerDocumented below
SMShttps://smsapi.messagify.inShared with your credentialsReference not yet published
RCShttps://rcsapi.messagify.inShared with your credentialsReference not yet published

Authentication

WhatsApp API requests are authenticated with your API key in the apikey request header. Send JSON bodies with Content-Type: application/json. Your API key is issued during onboarding; keep it on your server and never in a browser or mobile app. The SMS and RCS APIs' authentication details are shared with your credentials, because their reference isn't published yet.

Request headers (WhatsApp API)
apikey: YOUR_API_KEY
Content-Type: application/json

WhatsApp API Reference

Base URL https://whatsappapi.messagify.in/v3. Request bodies use the same JSON structure as Meta's WhatsApp Cloud API, so Meta's message API reference describes every message type and field. Templates must be approved before you can send them; see why WhatsApp templates get rejected.

Endpoints

MethodPathPurpose
POST/{phone_number_id}/messagesSend a template, text, media or interactive message
POST/{waba_id}/message_templatesCreate a message template for Meta review
GET/{waba_id}/message_templatesList templates, filterable by status and fields
POST/{template_id}Edit an existing template
DELETE/{waba_id}/message_templates?name={template_name}Delete a template by name
POST/{phone_number_id}/mediaUpload media to use in messages
GET/{media_id}?phone_number_id={phone_number_id}Get a media item's details
DELETE/{media_id}?phone_number_id={phone_number_id}Delete uploaded media
POST/{phone_number_id}/setwebhookRegister your webhook URL and custom headers
GET/{phone_number_id}/getwebhookRead the current webhook configuration

Sample request: send a template message

Use an approved template for any message sent outside the 24-hour customer service window. Each parameters entry fills the template's next variable, in order.

POST /{phone_number_id}/messages — template
curl -X POST "https://whatsappapi.messagify.in/v3/PHONE_NUMBER_ID/messages" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messaging_product": "whatsapp",
    "recipient_type": "individual",
    "to": "91XXXXXXXXXX",
    "type": "template",
    "template": {
      "name": "order_update",
      "language": { "code": "en" },
      "components": [
        {
          "type": "body",
          "parameters": [
            { "type": "text", "text": "Asha" },
            { "type": "text", "text": "MSG-1042" }
          ]
        }
      ]
    }
  }'

Sample request: reply with a text message

Free-form text messages can only be sent inside an open 24-hour customer service window.

POST /{phone_number_id}/messages — text
curl -X POST "https://whatsappapi.messagify.in/v3/PHONE_NUMBER_ID/messages" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messaging_product": "whatsapp",
    "to": "91XXXXXXXXXX",
    "type": "text",
    "text": { "body": "Thanks, your appointment is confirmed." }
  }'

Response

A successful send returns the message ID. Store it so you can match the delivery and read events your webhook receives. The response can include other fields as well.

200 OK
{
  "messages": [
    { "id": "MESSAGE_ID" }
  ]
}

Webhooks

Register one webhook URL per WhatsApp number. Inbound messages, delivery and read-status events are then pushed to it. Callbacks aren't signed, so set a custom header with a shared secret when you register, and reject any callback that doesn't carry it. Respond quickly and process events idempotently, because the same event can arrive more than once. A field-by-field webhook payload reference isn't published yet; log payloads during UAT.

POST /{phone_number_id}/setwebhook
curl -X POST "https://whatsappapi.messagify.in/v3/PHONE_NUMBER_ID/setwebhook" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_url": "https://example.com/whatsapp/webhook",
    "headers": {
      "x-webhook-token": "YOUR_SHARED_SECRET"
    }
  }'

Check the current configuration with GET /{phone_number_id}/getwebhook.

Errors and Retries

Retry only when it's safe to. A blind retry after an ambiguous failure is the most common cause of duplicate messages.

HTTP statusMeaningWhat to do
400, 401, 403, 404, 405Request or configuration error: invalid body, wrong API key or an ID that doesn't belong to your accountDon't retry. Fix the request or configuration first.
429Too many requestsRetry with exponential backoff.
5xxTemporary server-side errorRetry with exponential backoff, up to a fixed limit.
No response / timeoutThe outcome is unknown: the message may or may not have been acceptedDon't resend blindly. Wait for a status webhook before retrying, so the customer doesn't get a duplicate.

SMS and RCS APIs

The SMS API (https://smsapi.messagify.in) and RCS API (https://rcsapi.messagify.in) are production hosts, but their endpoint reference, authentication details and sample requests aren't published on this page yet. We share them, with your credentials, during onboarding. Contact our team for access.

Before your first SMS

Register your entity, header and templates on DLT. Every message must match a registered template. See DLT header registration on Jio, Airtel, Vi and BSNL.

Before your first RCS message

Your RCS agent needs brand verification and launch on Jio, Airtel and Vi. Plan an SMS fallback for numbers that can't receive RCS. See what RCS Business Messaging is.

Product Documentation

Integration Guides

Integration Workflow

01

Get API credentials

Talk to our team for an API key and a guided UAT setup. Keep keys on your server — never in a mobile app or browser bundle — and use separate keys for test and production.

02

Complete channel prerequisites

Each channel has its own approvals before the first message: a Meta business and WhatsApp number, DLT entity, header and template registration for SMS, or an approved RCS agent. We guide you through each one.

03

Send messages

Call the channel's base URL with your API key, the recipient, the approved template and its variables.

04

Handle webhooks

Receive delivery, read-status and inbound-message events at your endpoint. Process them idempotently, since the same event can arrive more than once.

05

Test, then go live

Verify template variables, opt-in records, failure handling and webhook processing in UAT, then switch to production credentials and monitor status from the console.

Channel Prerequisites

Each channel has approvals that must be in place before your first production message.

WhatsAppA Meta business portfolio, a phone number you own that can receive SMS or voice calls, and Meta-approved templates for anything sent outside the 24-hour customer service window. A number already active on WhatsApp has to be deleted from it first, unless it's a WhatsApp Business app number connected through Meta's coexistence onboarding.
SMSDLT registration of your business, its sender headers and every content template, with each variable portion identified. Most DLT portals mark these as {#var#}.
RCSAn RCS agent configured with your brand details that passes brand verification and the launch approval run by Google, the carriers or both.
EmailA sending domain you control, with SPF and DKIM records added to its DNS so mail is authenticated.
VoiceCall flows and caller ID configured with our team for IVR, OTP calls or voice broadcasts.

Coming Soon

These are on our roadmap and not yet live — they're listed here so you know what to expect, not as available functionality.

SMS API endpoint referenceComing Soon
RCS API endpoint referenceComing Soon
Webhook payload referenceComing Soon
Postman collections for SMS and RCSComing Soon
Official SDKsComing Soon
Self-service Sandbox / UAT environmentComing Soon
Public ChangelogComing Soon

Developer FAQ

https://whatsappapi.messagify.in/v3. Paths are relative to it, for example POST /{phone_number_id}/messages to send a message. The SMS API is at https://smsapi.messagify.in and the RCS API at https://rcsapi.messagify.in.

Get Your API Key

Talk to our team for API credentials, the WhatsApp Postman collection, SMS and RCS API access and a guided UAT setup.

Talk to Our Team →