Skip to content
Get an API key

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.

Shell

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; error says 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.