messages:send · messages:read
Messages
Send template, text and media messages, check delivery status and cancel queued sends — one endpoint for every message type.
Developers
Send WhatsApp messages, manage templates and contacts, and stream every delivery event back into your systems — with sandbox keys that work before your number goes live.
REST + JSON · Signed webhooks · Sandbox included
$ curl --location --request POST 'https://api.infiq.in/v1/messages' \
--header 'X-INFIQ-API-KEY: key' \
--header 'Content-Type: application/json' \
--data '{
"messaging_product": "whatsapp",
"to": "919876543210",
"type": "template",
"template": {
"name": "reminder_1",
"language": { "code": "en" },
"components": [
{
"type": "header",
"parameters": [
{ "type": "image", "image": { "link": "https://www.infiq.in/brand/logo-primary.png" } }
]
},
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Rajesh" },
{ "type": "text", "text": "sk marketing" },
{ "type": "text", "text": "activated" }
]
}
]
}
}'HTTP/1.1 201 Created— 0.4s
{
"messaging_product": "whatsapp",
"contacts": [{ "input": "919876543210", "wa_id": "919876543210" }],
"messages": [{ "id": "wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgS…", "message_status": "accepted" }]
}⇢ webhook message.delivered +0.8s · X-InfiQ-Signature ✓
⇢ webhook message.read +2.1s · X-InfiQ-Signature ✓
Quickstart
Sandbox keys work before your WhatsApp number is live — build the whole send-and-receive loop today, flip one prefix to ship.
Open Settings → Developers in the dashboard and generate a scoped isk_test_ key — instant, no live WhatsApp number needed.
export INFIQ_API_KEY=isk_test_…
POST your template payload to /v1/messages. The sandbox accepts it and simulates the delivery lifecycle end to end.
curl -X POST …/v1/messages
Point an HTTPS endpoint at the events you care about — payloads arrive signed and retry for 24 hours until you return 2xx.
curl -X POST …/v1/webhooks
Swap the key prefix once your number is live. Endpoints, payloads and webhook signatures stay exactly the same.
s/isk_test_/isk_live_/
Platform access
Everything in the dashboard is available over the API — and everything that happens streams back to you as an event.
Generate scoped API keys from the dashboard and start in a sandbox that simulates delivery events — no live number needed to build.
Predictable JSON endpoints for messages, templates, contacts, media and analytics. Idempotency keys on writes, cursor pagination on reads.
Subscribe to delivery, read, reply and quality-rating events. Signed payloads, automatic retries with exponential backoff, and a replay tool.
Failed sends queue and retry with jitter. Webhook deliveries retry for 24 hours until your endpoint returns 2xx.
HMAC-SHA256 webhook signatures, TLS everywhere, IP allowlisting and key rotation without downtime.
Burst-friendly limits with limit, remaining and reset headers on every response. WhatsApp messaging-tier pacing is handled by the platform, so your quality rating stays protected.
API surface
Every resource is documented in the OpenAPI 3.1 reference — endpoints, schemas and copy-paste examples for cURL, Node.js and Python.
Webhooks
Delivery receipts, reads, replies, template approvals and quality-rating changes land on your endpoint within seconds — signed, ordered and retried until acknowledged.
X-InfiQ-Signature: sha256=…
{
"event": "message.read",
"id": "evt_2c91",
"created": "2026-07-08T10:42:07Z",
"data": {
"message_id": "msg_8f2a",
"to": "+91982XXXXX01",
"template": "order_shipped",
"read_at": "2026-07-08T10:42:05Z"
}
}Key management
Every key carries its own scopes, IP allowlist, rate limit and expiry — rotate or revoke without touching the others.
Settings
Danger zone
Scopes
admin:* scopes are owner-only. Keys never gain scopes silently — every change lands in the audit log.
Observability
Per-key traffic, latency percentiles and raw request logs with a tamper-evident hash chain — built in, no third-party APM required.
89,476 requests in this window
Requests & errors
2xx errorsLatency
Top endpoint
Raw logs
| Time | Method & path | Status | Duration | IP |
|---|---|---|---|---|
| 06/07, 16:48:30 | POST/v1/messages | 202 | 268ms | 203.0.113.45 |
| 06/07, 16:48:30 | POST/v1/messages | 202 | 69ms | 203.0.113.45 |
| 06/07, 16:48:29 | POST/v1/messages | 202 | 44ms | 203.0.113.45 |
| 06/07, 16:48:29 | POST/v1/messages | 202 | 29ms | 203.0.113.45 |
| 06/07, 16:48:28 | POST/v1/messages | 202 | 31ms | 203.0.113.45 |
rowHash: 5e5619…e2962c · prevHash: 21004a…d1fd62 — every log entry is hash-chained, so history can't be silently rewritten.
FAQ
API and webhook access are included on the Growth plan and above (Lite covers the dashboard, CRM, broadcasts and inbox without API access). On Growth, open Settings → Developers in the dashboard and generate an API key. Sandbox keys are available immediately; production keys activate once your WhatsApp number is live.
Register an HTTPS endpoint in the dashboard and choose the events you want — message.delivered, message.read, message.replied, template.status, quality.updated and more. Each payload is signed with HMAC-SHA256 so you can verify it came from InfiQ, and failed deliveries retry for 24 hours.
Yes. Sandbox keys let you send test messages and receive simulated webhook events end to end without a live WhatsApp number or per-message charges.
Each key carries its own rate limit, set when you create it, and every response returns limit, remaining and reset headers so clients can self-throttle. WhatsApp's own messaging tiers are handled by the platform — sends are paced automatically to protect your quality rating.
The API is plain REST with JSON, so any HTTP client works. Copy-paste examples for cURL, Node.js and Python live in the docs, and an OpenAPI spec is available for generating typed clients.
Sandbox keys are instant — build and test the full send-and-receive loop today, then flip to production once your number is live.