Idempotency-Key
Send the same key twice on a write and QuickGrow replays the original response — no duplicate message, no guesswork.
Send email, SMS, and WhatsApp from a single REST call — with idempotent writes, per-key rate limits, signed webhooks, and copy-paste samples in cURL, Node, Python & PHP.
curl https://server.quickgrow.ai/api/v1/messages \ -H "X-API-Key: mk_live_..." \ -H "Idempotency-Key: 8f2a" \ -H "Content-Type: application/json" \ -d '{ "channel": "whatsapp", "to": "+8801700000000", "template": "order_shipped" }' # → 202 { "id": "msg_9fA2", "status": "queued" }
POST /api/v1/messages handles email, SMS, and WhatsApp; get a message by id or list your history. Across 23 endpoints, contacts, templates, analytics, and webhooks are all first-class API resources.
{
"id": "msg_9fA2",
"channel": "whatsapp",
"status": "delivered",
"to": "+8801700000000",
"created_at": "2026-08-10T09:14:22Z"
}
# list: GET /api/v1/messages?limit=50An Idempotency-Key on any write replays the original response, so a dropped connection never sends twice. A per-key limit of 1,000 requests per minute returns standard X-RateLimit-* headers, so your client always knows where it stands.
Send the same key twice on a write and QuickGrow replays the original response — no duplicate message, no guesswork.
1,000 requests per minute per key, with limit, remaining, and reset headers on every response so you can back off cleanly before you hit a wall.
Authenticate with a single X-API-Key: mk_live_… header. Scope each key to least privilege across eight scopes — send and read messages, read and write contacts and templates, read analytics, and manage webhooks.
{
"prefix": "mk_live_9fA2...",
"scopes": [
"messages:send", "messages:read",
"contacts:write", "analytics:read"
]
}
# send with: X-API-Key: mk_live_...Each delivery carries an HMAC-SHA256 X-QuickGrow-Signature you verify against your whsec_… secret, with a 300-second replay window. Failed deliveries are logged and retried automatically.
Subscribe to the four message lifecycle events and verify the HMAC signature on every payload before you trust it. Deliveries are logged so you can replay and debug.
⚠ Automatic retries with backoff — not guaranteed delivery.
import { createHmac } from "node:crypto";
const sig = req.headers["x-quickgrow-signature"];
const [t, v1] = sig.split(",").map((p) => p.split("=")[1]);
const expected = createHmac("sha256", process.env.QG_WEBHOOK_SECRET)
.update(`${t}.${req.rawBody}`)
.digest("hex");
// timing-safe compare v1 === expected, then trustEvery endpoint ships with ready-to-run samples in cURL, Node, Python, and PHP, covering messages, contacts, templates, analytics, and webhook verification. It's all described by a public OpenAPI spec you can read or import into your own tooling.
⚠ No SDK to install — call the REST API directly with the language of your choice.
# Browse the interactive docs /api/public-docs # Import the machine-readable spec /api/public-docs/openapi.json # No install — just an X-API-Key header
Run every channel from one platform. Bring your own SMTP, SMS gateway, and WhatsApp number — or use ours.
See pricing →Product screens shown across this site are captured from the live application using a demo workspace. All names, contacts and figures in them are synthetic.