# Changelog

> The history of changes to the API and the documentation.

## November 13, 2026 — Per-number pricing and free trial

- Plans are now measured in **WhatsApp numbers**: included numbers (2 on Starter, 3 on Pro, 5 on Business), a per-number surcharge, a number cap per tier, and a message quota **per number**. Connected businesses are no longer limited on paid plans. The "Growth" and "Scale" plans were renamed **Pro** and **Business**.
- **Overage fees** lowered: 1, 0.5 and 0.25 FCFA per message, separate from the Meta cost. Sending is never interrupted by a paid plan's quota.
- **7-day free trial** for every new account, no credit card required, with the Starter limits (capped quota, no fees). `GET /billing/overview` exposes `numbers`, `monthlyAmount` and `trial`.
- `plan_limit_reached` applies to the account's total number of numbers, before the signup code is exchanged.

## November 12, 2026 — Complete templates and statistics

- Template creation validates the **structure of all components** before calling Meta: text or media header, body and examples, footer, buttons (quick reply, link, call, copy code) and the authentication template. See [Templates](/docs/guides/templates).
- A body with variables and **no example** is now rejected (`400`), as Meta does.
- `GET /messages` accepts the `type` filter (including `media`). New route `GET /stats/overview`.

## November 12, 2026 — Console: connections, messages, webhooks

- The console offers the **Connections**, **Messages** and **Webhooks** pages, with an environment selector (sandbox / production).
- API-key routes **also accept the console session**, with the `X-Environment-Id` header (see [Authentication](/docs/authentication)).

## November 12, 2026 — Number limit per business

- Plans now limit the number of **WhatsApp numbers per connected business** (production only): `402 plan_limit_reached` beyond it. The check happens **before** the Meta signup code is exchanged, so a rejection does not consume it.
- `GET /billing/overview` exposes `plan.maxNumbersPerBusiness` (`null` = unlimited).

## November 12, 2026 — API v1

First version of the API.

**Accounts and access**
- Signup, login, revocable sessions; salted password hashing.
- Applications with two strictly separated environments, **sandbox** and **production**.
- `pk_test_…` / `pk_live_…` API keys, with **scopes**, revocation and last-used date; secret shown only once.

**WhatsApp connection**
- Connected businesses, completion of Meta's Embedded Signup, accounts and numbers, **coexistence mode**.
- Encrypted Meta tokens, never returned by the API.
- A WhatsApp account can only be connected once across the whole platform.

**Messages**
- Asynchronous, **idempotent** sending of text, images, videos, audio, documents, location and templates.
- 24-hour rule enforced, automatic retries, per-number rate limiting.
- Statuses that never move backward; paginated history.

**Templates**
- Create, list, delete, sync; immediate rejection of a non-approved template; `template.status_updated` event.

**Webhooks**
- Endpoints per environment, timestamped signature (HMAC-SHA256), 8 attempts, history of every attempt, replay, signing secret rotation, automatic disabling.
- Protection against internal endpoints.

**Usage and billing**
- Usage by day, category, country or number; **estimated** Meta cost and Bref Point Inbox fees on separate lines.
- Plan quotas and limits in production; the sandbox is neither limited nor billed.

**Observability**
- Single error format with `requestId`; call log without content; scheduled maintenance (purge according to retention, recovery of lost sends).
- **Sandbox simulator** to test your webhooks without WhatsApp.

**Coming soon and known limitations**
- Validation against the real Meta platform (Embedded Signup, sending, templates) is in progress.
- No media upload or download through the API yet.
- No official SDKs: generate a client from the [OpenAPI specification](/openapi.json).
- Online payment for subscriptions is not yet available.
