API v2 is in alpha and may change at any time. Use v1 for production.
GMJ Roaming API v2 (Alpha)

Spends your balance. Idempotent on transaction_id.


Preview a purchase

POST
https://api.gmjroaming.com/api/v2
/checkout/preview

Prices a basket without charging anything. It takes the same body as /checkout.

Preview a purchase › Request Body

​object[] · minItems: 1 · maxItems: 50
packageCode
​string · required

v2 package code from /list-esim. Unique per basket.

count
​integer · min: 1 · max: 100 · required
transaction_id
​TransactionId · maxLength: 50 · pattern: ^[A-Za-z0-9_-]+$ · required

Your idempotency key. It's the same for every item in a basket.

periodNum
​integer · min: 1 · max: 365

Required when duration.type is selectable. Omit it otherwise.

Preview a purchase › Responses

Quote

​Quote

Buy eSIMs

POST
https://api.gmjroaming.com/api/v2
/checkout

Reserves balance and queues provisioning. Returns 202 with status: PROCESSING. Get the result from the ORDER_STATUS webhook, or check /check-status-payment (PAID, or FAILED refunded).

Retrying the same body with the same transaction_id replays the original response. Reusing a transaction_id with a different body returns 409.

Buy eSIMs › Request Body

​object[] · minItems: 1 · maxItems: 50
packageCode
​string · required

v2 package code from /list-esim. Unique per basket.

count
​integer · min: 1 · max: 100 · required
transaction_id
​TransactionId · maxLength: 50 · pattern: ^[A-Za-z0-9_-]+$ · required

Your idempotency key. It's the same for every item in a basket.

periodNum
​integer · min: 1 · max: 365

Required when duration.type is selectable. Omit it otherwise.

Buy eSIMs › Responses

Accepted, or a replay of an earlier identical request.

​object

Buy eSIMs (reseller account)

POST
https://api.gmjroaming.com/api/v2
/reseller/checkout

Buy eSIMs (reseller account) › Request Body

​object[] · minItems: 1 · maxItems: 50
packageCode
​string · required

v2 package code from /list-esim. Unique per basket.

count
​integer · min: 1 · max: 100 · required
transaction_id
​TransactionId · maxLength: 50 · pattern: ^[A-Za-z0-9_-]+$ · required

Your idempotency key. It's the same for every item in a basket.

periodNum
​integer · min: 1 · max: 365

Required when duration.type is selectable. Omit it otherwise.

Buy eSIMs (reseller account) › Responses

Accepted, or a replay of an earlier identical request.

​object

Save a basket to the cart

POST
https://api.gmjroaming.com/api/v2
/cart

Save a basket to the cart › Request Body

​object[] · minItems: 1 · maxItems: 50
packageCode
​string · required

v2 package code from /list-esim. Unique per basket.

count
​integer · min: 1 · max: 100 · required
transaction_id
​TransactionId · maxLength: 50 · pattern: ^[A-Za-z0-9_-]+$ · required

Your idempotency key. It's the same for every item in a basket.

periodNum
​integer · min: 1 · max: 365

Required when duration.type is selectable. Omit it otherwise.

Save a basket to the cart › Responses

200

Cart

​Quote

List top-up plans for an eSIM

GET
https://api.gmjroaming.com/api/v2
/list-topupdataplan

List top-up plans for an eSIM › query Parameters

esimId
​integer · min: 1 · required

List top-up plans for an eSIM › Responses

Plans

​Package[]

Top up an eSIM

POST
https://api.gmjroaming.com/api/v2
/topup-esim

Top up an eSIM › Request Body

esimId
​integer · min: 1 · required
packageCode
​string · required
transaction_id
​TransactionId · maxLength: 50 · pattern: ^[A-Za-z0-9_-]+$ · required

Your idempotency key. It's the same for every item in a basket.

periodNum
​integer · min: 1 · max: 365

Only for selectable-duration plans.

Top up an eSIM › Responses

Accepted, or a replay of an earlier identical request.

​object