eSIMWholesale

Public API Docs

Public API is available via versioned HTTP routes (not tRPC). Use your API key in the header and call:

https://esim.agents.co.th/api/v1
Download OpenAPI Spec

API Key for Examples

Paste any valid API key to personalize examples. Get keys after KYC approval in your console.

Authentication

x-api-key: <your_api_key>

GET https://esim.agents.co.th/api/v1/getBalance (scope: balance:read)

Returns account balance summary including total topups, total purchases, and current available balance.

Example Request

curl -X GET 'https://esim.agents.co.th/api/v1/getBalance' \ -H 'x-api-key: <your_api_key>'

Example Response

{ "success": true, "data": { "accountId": "a1b2c3d4-...", "totalTopupsThb": 12000, "totalPurchasesThb": 4500, "balanceThb": 7500 } }

GET https://esim.agents.co.th/api/v1/getProducts (scope: products:read)

Returns active products with account-specific tier pricing. Use the product id as the productId when creating orders.

Query Parameters

limitintegeroptionaldefault: 50

Number of products to return (1–200)

Example Request

curl -X GET 'https://esim.agents.co.th/api/v1/getProducts?limit=50' \ -H 'x-api-key: <your_api_key>'

Example Response

{ "success": true, "data": [ { "id": "b2f7e8a1-...", "name": "Thailand 15-Day eSIM", "description": "15GB data, 15 days validity", "provider": "TDAC", "sku": "TH-15D-15GB", "retailPriceThb": 450, "currentUnitPriceThb": 225, "activeTierMinTrailingYearQty": 0, "promotionLabel": null, "promotionFeatures": [] } ] }

GET https://esim.agents.co.th/api/v1/getPaymentHistory (scope: payments:read)

Returns wallet topup and payment history including amount breakdown, method, status, and timestamps.

Query Parameters

limitintegeroptionaldefault: 50

Number of records to return (1–200)

Example Request

curl -X GET 'https://esim.agents.co.th/api/v1/getPaymentHistory?limit=50' \ -H 'x-api-key: <your_api_key>'

Example Response

{ "success": true, "data": [ { "id": "c3d4e5f6-...", "merchantOrderId": "PAY-20260307-001", "amountThb": 5000, "baseAmountThb": 4673, "processingFeeThb": 140, "vatThb": 187, "walletCreditThb": 5000, "status": "success", "paymentMethod": "promptpay", "paidAt": "2026-03-07T10:30:00Z", "createdAt": "2026-03-07T10:29:00Z" } ] }

POST https://esim.agents.co.th/api/v1/createOrder (scope: orders:write)

Creates a wholesale eSIM purchase order. eSIMs are provisioned immediately and returned in the response. Supports idempotency. Resubmitting the same idempotencyKey returns the original order without charging twice.

Body Parameters

productIduuidrequired

Product ID from /getProducts

quantityintegerrequired

Number of eSIMs to purchase (1–2000)

idempotencyKeystringoptional

Unique key to prevent duplicate orders on retry (8–120 chars)

includeQrImagesbooleanoptionaldefault: false

Include base64-encoded QR images per eSIM in the response

Example Request

curl -X POST 'https://esim.agents.co.th/api/v1/createOrder' \ -H 'x-api-key: <your_api_key>' \ -H 'content-type: application/json' \ -d '{ "productId": "b2f7e8a1-...", "quantity": 2 }'

Example Response

{ "success": true, "data": { "purchaseOrderId": "d4e5f6a7-...", "reused": false, "unitPriceThb": 225, "totalPriceThb": 450, "quantity": 2, "items": [ { "sequenceNo": 1, "status": "provisioned", "provider": "TDAC", "iccid": "8966012345678901234", "phone": "+66809048375", "activationCode": "LPA:1$smdp.example.com$ABCDEF", "smdpAddress": "smdp.example.com", "qrCode": "LPA:1$smdp.example.com$ABCDEF" }, { "sequenceNo": 2, "status": "provisioned", "provider": "TDAC", "iccid": "8966012345678905678", "phone": "+66809048376", "activationCode": "LPA:1$smdp.example.com$GHIJKL", "smdpAddress": "smdp.example.com", "qrCode": "LPA:1$smdp.example.com$GHIJKL" } ] } }

GET https://esim.agents.co.th/api/v1/getOrderStatus (scope: orders:read)

Returns a single purchase order with full eSIM details for each item.

Query Parameters

purchaseOrderIduuidrequired

The order ID to look up

includeQrImagesbooleanoptionaldefault: false

Include base64-encoded QR images per eSIM

Example Request

curl -X GET 'https://esim.agents.co.th/api/v1/getOrderStatus?purchaseOrderId=d4e5f6a7-...' \ -H 'x-api-key: <your_api_key>'

Example Response

{ "success": true, "data": { "id": "d4e5f6a7-...", "status": "confirmed", "orderSource": "api", "quantity": 2, "unitPriceThb": 225, "totalPriceThb": 450, "createdAt": "2026-03-07T12:00:00Z", "product": { "name": "Thailand 15-Day eSIM", "sku": "TH-15D-15GB" }, "items": [ { "id": "e5f6a7b8-...", "sequenceNo": 1, "status": "provisioned", "provider": "TDAC", "iccid": "8966012345678901234", "phone": "+66809048375", "activationCode": "LPA:1$smdp.example.com$ABCDEF", "smdpAddress": "smdp.example.com", "qrCode": "LPA:1$smdp.example.com$ABCDEF" } ] } }

GET https://esim.agents.co.th/api/v1/getOrders (scope: orders:read)

Returns a list of all purchase orders with their eSIM items. Each order includes product info, pricing, and provisioned eSIM details.

Query Parameters

limitintegeroptionaldefault: 50

Number of orders to return (1–200)

includeQrImagesbooleanoptionaldefault: false

Include base64-encoded QR images per eSIM

Example Request

curl -X GET 'https://esim.agents.co.th/api/v1/getOrders?limit=10' \ -H 'x-api-key: <your_api_key>'

Example Response

{ "success": true, "data": [ { "id": "d4e5f6a7-...", "status": "confirmed", "orderSource": "api", "quantity": 2, "unitPriceThb": 225, "totalPriceThb": 450, "createdAt": "2026-03-07T12:00:00Z", "product": { "name": "Thailand 15-Day eSIM", "sku": "TH-15D-15GB" }, "items": [ { "id": "e5f6a7b8-...", "sequenceNo": 1, "status": "provisioned", "provider": "TDAC", "iccid": "8966012345678901234", "phone": "+66809048375", "activationCode": "LPA:1$...", "smdpAddress": "smdp.example.com", "qrCode": "LPA:1$..." } ] } ] }

Error format

{ "success": false, "error": { "code": "FORBIDDEN_SCOPE", "message": "Missing required scope: orders:write" } }