eSIM Exchange Business Integration API Specification v1.2
Basic Explanation
To ensure the security of server transmission information, the following security mechanisms are adopted:
- All interfaces use
HTTPS securelinks. - Officially assigned customer authentication AuthKey, used for authorization and encryption, with a maximum length of 32.
- Officially assigned encryption key AuthSecret, used for encryption, with a maximum length of 50.
- Ensures the security of requests through SHA-256.
Interface Standards
https://api.iroamly.shop/HTTPSGET / POSTapplication/jsonRequest Header Parameters:
AuthKey: Customer authentication key, type String
Certification: Encrypted string, type String (Result of SHA-256 encryption of accumulated AuthKey+AuthSecret)
Get Regional Plan List
https://api.iroamly.shop/common/getPlanItemGETRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| region | Accepts ISO2 codes, country names (case-insensitive), or standardized formats (e.g., united-states). | String |
Response Format:
Success: HTTP 200 with a JSON array of plans.Failure: HTTP 404 (if region is invalid) or an empty array
[].Response Field Descriptions:
| Field | Description | Type |
|---|---|---|
| plan | Plan name (includes region, type, data allowance, and duration). | String |
| productCode | Unique plan ID for purchasing or queries. | String |
| data | Data allowance (e.g., 10GB、Unlimited、500MB). | String |
| type | Plan type (e.g., Total、Daily、Unlimited). | String |
| package_type | Package type (e.g., Data Only). | String |
| duration | Validity period in days (e.g., 10). | String |
| speed | Network speed (e.g., 4G / 5G). | String |
| operator | Supported operators (e.g., T-Mobile/AT&T). | String |
| region | Official region name (e.g., United States). | String |
| region_index | Standardized region identifier (lowercase with hyphens, e.g., united-states). | String |
| credit | Plan price (currency unit not specified; default likely USD). | Float |
| remark | Additional notes (e.g., speed throttling rules). | String |
| created_at | Plan creation timestamp (ISO 8601 format). | String |
"https://api.iroamly.shop/common/getPlanItem?region=US"{
"code": 0,
"data": {
list:[
{
"plan": "United States-eSIM-10GB-10 Days-Total",
"productCode": "iRoamly-unite-584535",
"data": "10GB",
"type": "Total",
"package_type": "Data Only",
"duration": "10",
"speed": "4G / 5G",
"operator": "T-Mobile/AT&T",
"region": "United States",
"region_index": "united-states",
"credit": 6.43,
"remark": "After accumulating 10GB, the speed will be reduced to 128 Kbps",
"created_at": "2025-05-16T04:02:31Z"
}
]
}
}Direct purchase QR code
https://api.iroamly.shop/openapi/purchaseqrcodePOSTRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| The mailbox for receiving QR codes. If it is empty, no email will be sent. | String | |
| productList | Product collection | Object[] |
productList Fields:
| Field | Description | Type |
|---|---|---|
| plan | Plan Name | String |
| quantity | Quantity | Int |
Test Plan:iRoamly-Test-10GB
Next step: Use Query QR Code (https://api.iroamly.shop/openapi/qrcodeQuery) to get the QR code
{
"email": "2m827n32d@gmail.com",
"productList": [
{
"plan": "United States-eSIM-10GB-10 Days-Total",
"quantity": 2
},
{
"plan": "Albania-10GB-15 Days-Total",
"quantity": 1
}
]
}{
"code": 1,
"data": {
"orderId": "Open-Global-DXDWFBKG578913",
"redeem_list": [
{
"productCode": "",
"plan": "United States-eSIM-10GB-10 Days-Total",
"redeemCode": "tjMxpYfvk5dFMQg",
"status": 0,
"expire_at": "2026-03-01"
},
{
"productCode": "",
"plan": "Albania-10GB-15 Days-Total",
"redeemCode": "sLSHNkAv2ojbNBG",
"status": 0,
"expire_at": "2026-03-01"
}
]
},
"msg": "success"
}Purchase Redeem Code
https://api.iroamly.shop/openapi/purchaseCodePOSTRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| String | ||
| productList | Product collection | Object[] |
productList Fields:
| Field | Description | Type |
|---|---|---|
| plan | Plan Name | String |
| quantity | Quantity | Int |
Test Plan:iRoamly-Test-10GB
{
"email": "2m827n32d@gmail.com",
"productList": [
{
"plan": "United States-eSIM-10GB-10 Days-Total",
"quantity": 2
},
{
"plan": "Albania-10GB-15 Days-Total",
"quantity": 1
}
]
}{
"code": 1,
"msg": "success",
"orderId": "xxx-xxxx-sd9hn8df333" // Order number, can be used to query redeem code
}Query Redeem Code
https://api.iroamly.shop/openapi/codeQueryRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| orderId | Order number | String |
{
"orderId": "xxx-xxx-dh239jdu28",
}{
"code": 1,
"msg": "success",
"data": [
{
"productCode": "m8hed7h2fed",
"redeemCode": "3cd2m3f23f3f3",
"expire_at": "2024-06-30", // Expiry date
"plan": "United States-eSIM-10GB-10 Days-Total",
"status": 0
},
{
"productCode": "v2jf28dj2w",
"redeemCode": "d923j29ef2323",
"expire_at": "2024-06-30",
"plan": "Albania-10GB-15 Days-Total",
"status": 2
}
]
}Redeem QR Code
(Note: Will be sent to the specified email, the more you redeem, the longer the waiting time)
https://api.iroamly.shop/openapi/redeemQRcodeRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| String | ||
| codeList | Collection of redeem codes | Object[] |
productList Fields:
| Field | Description | Type |
|---|---|---|
| redeemCode | Redeem code | String |
{
"email": "2m827n32d@gmail.com",
"codeList": [
{
"redeemCode": "m8hed7h2fed",
},
{
"redeemCode": "cn88beg9edj",
}
]
}{
"code": 1,
"msg": "success",
}Query QR Code
https://api.iroamly.shop/openapi/qrcodeQueryRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| code | Redeem code | String |
{
"redeemCode": "m8hed7h2fed",
}{
"code": 1,
"msg": "success",
"redeemCode": "m8hed7h2fed",
"qrcode": "https://dsfjigewafe/qrcode.jpg"
}Get Renewal Plan Status
https://api.iroamly.shop/openapi/getRenewPlanStatusPOSTRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| code | Redeem code | String |
Response Field Descriptions:
| Field | Description | Type |
|---|---|---|
| code | 0 - renewal possible -1 - renewal not possible | Int |
| renewtype | You can choose the type of renewal: 0 - Automatically active after expiration 1 - Active immediately (clears remaining data) 2 - Active at a specified time | Int |
| starttime | When setting the time, you can choose the start time. | String |
| endtime | When setting the time, you can choose the end time. | String |
{
"code": "3cd2m3f23f3f3",
}{
"code": 0,
"data": {
"renewList": [
{
"renewtype": 1,
"starttime": "",
"endtime": ""
},
{
"renewtype": 2,
"starttime": "2025-08-04 06:13:08",
"endtime": "2025-09-20 14:23:51"
}
],
"lasttime": "0001-01-01T00:00:00Z"
},
"msg": "Success"
}Renewal Code
(Note: When renewing, the selected "renewal group" must match the original plan's renewal group [renewtype].)
https://api.iroamly.shop/openapi/renewcodePOSTRequest Parameters:
| Parameter | Description | Type |
|---|---|---|
| redeemCode | Code that requires renewal | String |
| plan | Renewal Plan | String |
| renewtype | Renewal Type: 0 - Automatically effective once it expires 1 - Effective immediately (any remaining data is cleared) 2 - Effective at a specified time | Int |
| renewtime | Effective Date and Time | String |
{
redeemCode: "DEF456UVW",
plan: "basic_yearly",
renewtype: 0,
renewtime: "2024-12-31T23:59:59Z"
}{
code: 1,
data: {
orderId: "Open-Global-DXDWFBKG578913",
plan: "United States-eSIM-10GB-10 Days-Total",
redeemCode: "tjMxpYfvk5dFMQg",
status: 0,
expire_at: "2026-03-01"
},
msg: "success"
}Response Status Code Definitions
| Code | Description |
|---|---|
| 1 | Success |
| 2 | Request parameter authentication failed |
| 3 | Parameters not filled as required |
| 4 | Product code does not exist |
| 5 | Insufficient balance |
| 6 | Insufficient balance |
| 7 | Redeem code has been redeemed or does not exist |
| -1 | Request failed |
Redeem Code Status Definitions
| Status | Description |
|---|---|
| 0 | Not redeemed |
| 1 | Redeeming |
| 2 | Redeemed |
| 3 | Redemption failed |