---
title: Changelog
description: Every change to the API, newest first.
group: start
order: 9
---

## Preview

The API is in preview. Endpoints and fields on these pages may still change before launch, and every change will be listed here with its date.

## 6 October 2026

The docs and code samples now follow the backend's API:

- The base URL is `https://api.simconnectng.com/api/v1`. Plans are at `/api/v1/pricing/plans`, the wallet at `/api/v1/wallet/balance` and networks at `/api/v1/catalog/networks`, each keyed by `code`.
- Sales name what to sell with `product_code` (such as `MTN-VTU` or `MTN-SHARE-1GB-30D`) and the number with `phone_number` (`phone` still works). `?wait=0` answers `202` at once.
- A finished sale is `successful` or `failed`, with `completed_at` and a masked `destination`.
- Every response is `{ success, data, message, code }`. Lists put their rows in `data.items` and the next page in `data.page.next_cursor`, read with `cursor`; the default page is 25.
- You pay a flat fee per delivered sale, shown as `charges` on each plan and `price` on each sale.
- Error codes now match the backend, among them `AUTH_REQUIRED`, `PERMISSION_DENIED` (IP allowlist), `IDEMPOTENCY_IN_PROGRESS` and `IDEMPOTENCY_FINGERPRINT_MISMATCH`. A plan that cannot be sold is `400 VALIDATION_FAILED` on `product_code`, and a sale with no line to take it fails with `ROUTING_NO_CANDIDATES`.
- Webhooks: the body is `{ id, type, mode, occurred_at, data }` with a `SimConnect-Event-Id` header. Events are `transaction.successful`, `transaction.failed`, `transaction.pending`, `transaction.refunded`, `wallet.funded`, `wallet.low_balance` and `webhook.ping`.
- Test numbers ending `1111`, `2222` and `4444` join `0000` and `3333`.
- Keys can require signed requests, with `SimConnect-Timestamp` and `SimConnect-Signature`.
