# Versions

| Version | Base URL | Status |
| --- | --- | --- |
| v1 | `https://api.gmjroaming.com/api/v1` | **Production.** Stable. Use this. |
| v2 | `https://api.gmjroaming.com/api/v2` | **Alpha.** Can change at any time. |

:::danger{title="v2 is not for production"}
v2 is under active development. Endpoints, field names and response shapes can change or be
removed **without notice**. Don't build production integrations on v2. Use it only to try the
new design and send us feedback.
:::

## What v2 changes

- Prices are whole IDR amounts: `{ "amount": 69500, "currency": "IDR" }`.
- eSIMs are referenced by `esimId` instead of an `iccid` + `transaction_id` pair.
- There's a `POST /checkout/preview` that prices a basket without charging it.
- Purchases are idempotent: a retry with the same `transaction_id` and body replays the result.
- Responses are `{ "data": … }`. Errors are `{ "message": …, "errors"?: … }`.
- v2 package codes are different from v1 codes and can't be mixed.

See the [v2 reference](/api/v2).
