eSIMWholesale

Documentation API publique

L’API publique est disponible via des routes HTTP versionnées (et non tRPC). Utilisez votre clé API dans l’en-tête et appelez :

https://esim.agents.co.th/api/v1
Télécharger la spécification OpenAPI

Clé API pour les exemples

Collez n’importe quelle clé API valide pour personnaliser les exemples. Obtenez vos clés après la validation KYC dans votre console.

Authentification

x-api-key: <your_api_key>

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

Renvoie un récapitulatif du solde du compte, incluant le total des recharges, le total des achats et le solde disponible actuel.

Exemple de requête

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

Exemple de réponse

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

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

Renvoie les produits actifs avec la tarification par paliers spécifique au compte. Utilisez l’ID du produit comme productId lors de la création de commandes.

Paramètres de requête

limitintegerfacultatifdefault: 50

Number of products to return (1–200)

Exemple de requête

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

Exemple de réponse

{ "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 (portée: payments:read)

Renvoie l’historique des recharges de portefeuille et des paiements, y compris le détail des montants, la méthode, le statut et les horodatages.

Paramètres de requête

limitintegerfacultatifdefault: 50

Number of records to return (1–200)

Exemple de requête

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

Exemple de réponse

{ "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 (portée: orders:write)

Crée un bon de commande de cartes eSIM en gros. Les eSIM sont immédiatement provisionnées et renvoyées dans la réponse. Prend en charge l’idempotence. Le renvoi de la même idempotencyKey retourne la commande d’origine sans facturation en double.

Paramètres de corps de requête

productIduuidobligatoire

Product ID from /getProducts

quantityintegerobligatoire

Number of eSIMs to purchase (1–2000)

idempotencyKeystringfacultatif

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

includeQrImagesbooleanfacultatifdefault: false

Include base64-encoded QR images per eSIM in the response

Exemple de requête

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 }'

Exemple de réponse

{ "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 (portée: orders:read)

Renvoie un bon de commande unique avec les détails eSIM complets pour chaque élément.

Paramètres de requête

purchaseOrderIduuidobligatoire

The order ID to look up

includeQrImagesbooleanfacultatifdefault: false

Include base64-encoded QR images per eSIM

Exemple de requête

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

Exemple de réponse

{ "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 (portée: orders:read)

Renvoie une liste de tous les bons de commande avec leurs éléments eSIM. Chaque commande inclut les informations produit, les tarifs et les détails des eSIM provisionnées.

Paramètres de requête

limitintegerfacultatifdefault: 50

Number of orders to return (1–200)

includeQrImagesbooleanfacultatifdefault: false

Include base64-encoded QR images per eSIM

Exemple de requête

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

Exemple de réponse

{ "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$..." } ] } ] }

Format d’erreur

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