# Changelog

> Docs index: https://wahasend.com/llms.txt · Everything in one file: https://wahasend.com/docs.md · API base URL: https://app.wahasend.com/api/v1

<a id="changelog-2026-10-15"></a>

### 15 October 2026

- **WhatsApp numbers with Developer and Connect.** An account with Developer or Connect active (paid or on its free trial) has 3 WhatsApp numbers included; each extra number is $10 a month (a year costs 10 months), by card or by transfer from the Subscription page. Notify, Assistant and Shop alone still add as many numbers as they need. Numbers you already have are never removed: above the allowance you keep sending from all of them and can't add a new one. `GET /session/list` answers `allowance`, and a number past it 403 `NUMBER_LIMIT_REACHED` with `details`; see [WhatsApp numbers](https://wahasend.com/docs/api/numbers.md).

<a id="changelog-2026-10-06"></a>

### 6 October 2026

- **New prices.** Developer is now sold self-serve at $39 a month ($390 a year), with a free trial, by card or transfer. Shop is $119 and Connect $35 a month; Notify ($29) and Assistant ($79) are unchanged. A year costs 10 months.
- **Local prices.** In Mauritania, West Africa and the Maghreb, lower prices in the local currency (MRU, FCFA, MAD, DZD, TND), paid by transfer or mobile money. Card payments stay in US dollars at the international price. The API is the same everywhere.

<a id="changelog-2026-10-01"></a>

### 1 October 2026

- **Several numbers.** Sends that name no number can go through a group of your numbers (backup or share, same contact same number): see [Several numbers](https://wahasend.com/docs/phone-numbers.md#several-numbers). `/alert/send`, `/alert/batch` and media sends answer `containerId`. Every product can add as many WhatsApp numbers as it needs.
- **Signed webhooks.** Every event carries `X-WahaSend-Signature`, `X-WahaSend-Event` and `X-WahaSend-Delivery`; see [how to check it](https://wahasend.com/docs/webhooks.md#webhook-security). New `GET /me/webhook` and `POST /me/webhook/regenerate-secret`. Status, inbound, session and poll events now carry `containerId` and `numberPhone`. Assistant and Shop owners can set a webhook for their own events.
- **API keys for every product.** Notify, Assistant and Shop can create an account key and call their own routes (e.g. campaigns and reminders for Notify). See [which products can use the API](https://wahasend.com/docs/authentication.md#auth-products).
- **OTP limits.** Per phone and per organization, 429 `OTP_RATE_LIMITED` when over ([details](https://wahasend.com/docs/errors.md#otp-limits)). A template without `{{code}}` is refused (`OTP_TEMPLATE_MISSING_CODE`); every `{{code}}` is replaced.
- **Edit and delete by `messageId`.** `/alert/edit`, `/alert/delete` and `/alert/forward` take WahaSend's own id (WhatsApp ids still work). Media sends are recorded in `GET /messages` with status events; their answer's `messageId` is now WahaSend's id and WhatsApp's is in `wahaMessageId`. `GET /messages` rows show `wahaMessageId` and `containerId`.
- **Campaigns.** `stats.delivered` and `stats.read` count WhatsApp receipts; new [cancel](https://wahasend.com/docs/api/campaigns.md#campaign-cancel); edit a `scheduled` campaign (including `scheduledAt`); delete anything not `sending`; `scheduledAt` takes any ISO offset; `creditsRequired` is gone.
- **Smaller fixes.** `/alert/batch` honours `skipInvalidNumbers: false`; `/alert/forward` no longer needs `fromPhone`; a per-number key marks only its own number's chats read; `GET /api` points here.
- **Organizations and teams.** An account is an organization with members (owner, admins, agents). API keys act as an organization admin; the role is checked on every request.
- **Claude sign-in.** claude.ai, the Claude apps, ChatGPT and Codex connect to Connect with an OAuth sign-in: no key to copy.
- **Files in Connect.** `open_attachment` reads photos, PDFs, Word files and voice notes; `send_attachment` sends files.
- **Errors and limits.** One error envelope with stable codes and `requestId`; `Retry-After` on 429/503; a per-organization limit of 300 changes a minute.
- These docs were rewritten from the code, with a test that fails when they drift.
