Get started
Sending
Every send carries your own key against duplicates. For volume, queue.
idempotencyKey
Every send requires idempotencyKey, 8 to 200 characters, chosen by you and unique per message — an order number and a step, for example. Sending twice with the same key sends once: the second call returns the first message with duplicate: true, even if the window closed in between. Retry freely after a timeout.
queue: true
By default a send waits for WhatsApp to accept the message and returns its status. With queue: true it returns at once with HTTP 202 and status: "queued"; the message leaves within a minute. Follow it with the message.sent, message.delivered, message.read and message.failed webhooks.
curl https://nodium.io/api/v1/inbox/conversations/<id>/template \ -H "Authorization: Bearer $NODIUM_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "<id>", "variables": { "1": "Karim" }, "idempotencyKey": "campaign-42-contact-981", "queue": true }'# → 202 Accepted, "status": "queued". It leaves within a minute;# message.sent or message.failed tells you how it went.Statuses
queued— waiting to leave (queue: true).sending— being handed to WhatsApp.sent— WhatsApp accepted it.delivered,read— reported back by WhatsApp. A later status never goes backwards.failed— refused, now or later;errorsays why.
Buttons and lists
On WhatsApp, POST /inbox/conversations/{id}/messages takes a form: up to 3 buttons, a list of up to 10 rows, or a location request. The customer's choice comes back in message.received with reply: { id, title } — the id you set.