/v1/auth/loginPanel login (JWT)
Used by Console / Admin UI. For server integrations prefer API keys.
Body
{
"email": "user@novalink.local",
"password": "User@123456"
}WhatsApp QR
Use API key + secret from your server only. Base URL: https://cloud.messagerocket.in/v1
Required headers
x-api-key: YOUR_API_KEY x-api-secret: YOUR_API_SECRET Content-Type: application/json
Create keys in Developer Console → API Keys. Keep x-api-secret only on your backend.
How routing works
An API user can add up to their plan limit of WhatsApp numbers (each scanned once in Devices). When you add a number, that value is the WhatsApp number identity — not a free-text nickname. Each of your websites passes the same API key, plus the WhatsApp number that website should send from. We map API key + WhatsApp number → that exact linked line.
1. Add numbers
Console → Devices → enter WhatsApp no (e.g. 9198…) → scan QR until Connected.
2. Same API key
Create one API key for the user. Every website uses that key + secret on the server.
3. Per-website number
Site A sends whatsappNo for line 1, Site B for line 2, … — message leaves that WhatsApp only.
# Website A → send from WhatsApp 919111111111
x-api-key: USER_KEY
x-api-secret: USER_SECRET
{ "whatsappNo": "919111111111", "to": "919999999999", "text": "From site A" }
# Website B → send from WhatsApp 919222222222 (same key, different number)
{ "whatsappNo": "919222222222", "to": "919999999999", "text": "From site B" }Login once in the panel, or call send APIs with API key headers.
/v1/auth/loginUsed by Console / Admin UI. For server integrations prefer API keys.
Body
{
"email": "user@novalink.local",
"password": "User@123456"
}/v1/apikeysReturns key + secret once. Store secret securely — it is not shown again.
Body
{
"name": "Production server"
}Note: Requires JWT (logged-in Console user).
When you have multiple WhatsApp numbers, every send needs API key headers + whatsappNo (sender).
Multi-number identity
x-api-key picks the API user. whatsappNo picks which of that user’s linked numbers sends the message. Both are required for reliable routing.
/v1/messages/textSend a normal WhatsApp text message.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"text": "Hello from WhatsApp QR"
}Note: whatsappNo = your linked sender number. to = recipient.
/v1/messages/imageSend an image from a public HTTPS URL.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"mediaUrl": "https://example.com/photo.jpg"
}/v1/messages/image-captionImage with caption text below / on the media.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"mediaUrl": "https://example.com/photo.jpg",
"caption": "Today’s offer — limited stock"
}/v1/messages/pdfSend a PDF file.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"mediaUrl": "https://example.com/invoice.pdf"
}/v1/messages/pdf-captionPDF with accompanying caption text.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"mediaUrl": "https://example.com/invoice.pdf",
"caption": "Your invoice for March"
}/v1/messages/videoSend a video from a public HTTPS URL.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"mediaUrl": "https://example.com/clip.mp4"
}/v1/messages/video-captionVideo with caption text.
Body
{
"whatsappNo": "919876543210",
"to": "919123456789",
"mediaUrl": "https://example.com/clip.mp4",
"caption": "Watch this quick demo"
}/v1/messages/status?messageId=MESSAGE_UUIDCheck if a message is queued, sent, failed, etc.
/v1/messages/check-numberVerify whether a number exists on WhatsApp (uses a connected device).
Body
{
"to": "919876543210"
}Add each WhatsApp number, connect with QR, then send with API key + whatsappNo.
/v1/devicesRegisters a sender line. Use the same whatsappNo later when sending messages.
Body
{
"whatsappNo": "919876543210"
}/v1/devicesSee all your numbers and high-level status (includes whatsappNo).
/v1/devices/:id/statusConnected, Disconnected, QR Waiting, Logged Out — use this before sending.
Note: Also: GET /v1/devices/status?deviceId=UUID
/v1/devices/:id/connectStarts Baileys session and returns a QR (data URL). Scan with WhatsApp → Linked devices.
/v1/devices/:id/reconnectRestart session when link is flaky.
/v1/devices/:id/disconnectStop the live session without deleting the device record.
/v1/qr/generate?deviceId=DEVICE_UUIDSame as connect — get a fresh QR for scanning.
/v1/qr/status?deviceId=DEVICE_UUIDPoll whether QR is pending or already scanned / connected.
/v1/qr/refreshIf the device is disconnected or QR expired, call this, show the new QR, and scan again.
Body
{
"deviceId": "DEVICE_UUID"
}Note: UI: Console / Admin → Devices → open device → Reload QR / Connect.
GET …/devices/:id/status → see Disconnected / Logged OutPOST …/qr/refresh (or …/connect)Receive message status updates on your HTTPS endpoint.
/v1/webhooksWe POST JSON events (e.g. message.status) to your URL.
Body
{
"name": "My server",
"url": "https://your-server.com/hooks/whatsapp",
"events": ["message.status"]
}Note: Requires JWT from Console. Use HTTPS in production.
/v1/webhooksSee registered callback URLs.
/v1/webhooks/:idRemove a callback registration.
Quick liveness check for your integration monitors.
/v1/healthNo auth required. Returns server / database readiness.