Skip to main content

Changelog

Changes to the API and to this documentation, newest first.

2026-09-27​

API

  • WhatsApp has the whole content of a message. A template can carry an image, a video, a document, a location or a text with a value in its header, a link button with a value, a coupon to copy, and an authentication template sends a one-time code. Within 24 hours after the subscriber's last message a free-form message can carry a file with a caption, a location, a card with a button and a link preview. See Send WhatsApp message.
  • New method template/whatsapp/list: approved templates of your senders and what each of them needs at send time — see List WhatsApp templates.
  • The webhook carries replies for WhatsApp as well — text, pressed button, file and location. The whatsapp/inbound notification carries the file and the location too.

Documentation

  • Send OTP Code (WhatsApp) — rewritten: the code goes with an authentication template. The statement that type: whatsapp is rejected is no longer true — the type is accepted, together with whatsapp+sms.
  • The OpenAPI contract describes whatsapp, whatsapp+sms and template/whatsapp/list.

2026-09-09​

Documentation

  • The JSON API now ships a machine-readable contract: openapi.yaml and openapi.json, linked from Request structure. Import it into Postman, Insomnia or a client generator. It describes the request envelope, all twenty documented operations selected by data[].type, the response shape and the delivery-status webhook. The server address in the file is the one for this site.

2026-09-02​

API

  • Status webhooks are retried: up to three attempts, with pauses of 10 and 60 seconds. A repeat happens only on a broken connection, a timeout, 5xx or 429; success is strictly 200. Handlers have to be idempotent. See Webhook, Verify (OTP) and Callbacks.

Documentation

  • Callbacks — new section Delivery report by URL. The report was documented only in its email form, although the gateway posts it to the notification address for every message of the account, whatever API sent it. The claim that the JSON webhook is sent instead of these callbacks was wrong: both are sent.
  • Send OTP Code (WhatsApp) — rewritten. type: whatsapp is not a message type and is rejected with Invalid message type; WhatsApp is a stage of a pipeline request.
  • The delivery report to a URL and by email carries the time zone offset without a colon (+0300), the format was documented incorrectly.

2026-08-25​

API

  • Webhook payload now includes success: true only when the message was delivered (DELIVERED, READ, REPLIED, PARTIALLY DELIVERED), otherwise false. See Webhook.
  • If an async packet has no id on any message, one webhook with request_id is sent instead of skipping the notification.

2026-08-24​

API

  • The notification about a rejected message now has the same shape as a delivery status: a flat object with status: REJECTED and the reason in error. The success field and the nested data array are gone — one payload, one parser. See Webhook.
  • A rejected request now produces one notification per message that carried a hook, each with its own id. Previously one notification was sent per hook address, and the rest of the batch was reported to nobody.
  • The Verify (OTP) notification follows the same shape and now also carries status and updated.

2026-08-21​

Documentation

  • New page Callbacks — incoming SMS to a dedicated number, Viber 2 Way replies, and the delivery report sent by email. None of these notifications were documented before.
  • Webhook — added the request_id, reply and duration fields; id and msg_id are strings, not numbers; added the delivery rules (one attempt, no retries, 5-second timeouts) and an example of a rejected message.
  • Verify (OTP) — documented the webhook that reports a rejected request.
  • Request examples on the JSON API pages now come with ready-to-run cURL, PHP, Python and Node.js snippets.
  • The receive, delete and price commands of the HTTP API were described as send by mistake.
  • Wap-Push is no longer documented.