Introduction
Welcome to the Mobilexy - eSIM API documentation.
This API allows you to integrate eSIM purchasing and management capabilities directly into your application. You can retrieve coverage information, view plans, check your balance, and purchase eSIMs programmatically.
All responses are returned in JSON format. The API accepts both GET and POST requests depending on the endpoint.
Authentication
Authenticating your API requests.
Most endpoints require authentication using your API Key. You can find your API Key in your dashboard explicitly. Include the api_key parameter in your request body or query string for authenticated endpoints.
List Countries
Retrieve a list of all supported countries.
Endpoint: https://mobilexy.com/api/coverage/countries
Method: GET
Response Parameters
| Name | Type | Description |
|---|---|---|
| countries | array | List of country objects |
| countries[].name | string | Country name |
| countries[].slug | string | Country identifier slug |
| countries[].image | string | Country flag image URL |
| countries[].converted_price | string | Starting price for plans |
{
"remark": "countries",
"status": "success",
"message": ["Countries List"],
"data": {
"countries": [
{
"name": "Afghanistan",
"slug": "afghanistan",
"image": null,
"converted_price": "8.12000000"
},
{
"name": "Aland Islands",
"slug": "aland-islands",
"image": null,
"converted_price": "6.14000000"
}
]
}
}
List Regions
Retrieve a list of all supported regions.
Endpoint: https://mobilexy.com/api/coverage/regions
Method: GET
Response Parameters
| Name | Type | Description |
|---|---|---|
| regions | array | List of region objects |
| regions[].name | string | Region name |
| regions[].slug | string | Region identifier slug |
| regions[].plan_count | integer | Number of available plans |
{
"remark": "regions",
"status": "success",
"message": ["Regions List"],
"data": {
"regions": [
{
"name": "Africa (AF-29)",
"slug": "africa-af-29",
"image": null,
"plan_count": 3
},
{
"name": "Asia (AS-12)",
"slug": "asia-as-12",
"image": null,
"plan_count": 10
}
]
}
}
Country Plans
Get plans for a specific country.
Endpoint: https://mobilexy.com/api/country-plans/{slug}
Method: GET
Replace {slug} with the country slug (e.g., afghanistan).
Response Parameters
| Name | Type | Description |
|---|---|---|
| plans | array | List of plan objects |
| plans[].id | integer | Plan ID |
| plans[].name | string | Plan name |
| plans[].period | integer | Validity period in days |
| plans[].data_volume | integer | Data amount in bytes (-1 for unlimited) |
| plans[].converted_price | string | Price of the plan |
{
"remark": "country_plan",
"status": "success",
"message": ["Afghanistan eSIM Plans"],
"data": {
"plans": [
{
"id": 855,
"slug": "AF_0.5_Daily",
"name": "Afghanistan 500MB/Day",
"period": 1,
"package_type": "DATA",
"data_volume": -1,
"voice_quantity": "0.00",
"sms_quantity": 0,
"fup_policy_text": "500MB high-speed/day, 512 Kbps after limit, resets daily",
"phone_number": 0,
"operator_name": "Etisalat",
"operator_slug": null,
"network_speed": "3G",
"area_coverage": "local",
"status": 1,
"converted_price": "8.12000000",
"currency": null
"packageCode": "CKH226"
},
],
"flag": "url_to_flag_image",
"flagCode": "US"
}
}
Region Plans
Get plans for a specific region.
Endpoint: https://mobilexy.com/api/region-plans/{slug}
Method: GET
Replace {slug} with the region slug (e.g., europe).
Response Parameters
| Name | Type | Description |
|---|---|---|
| plans | array | List of plan objects |
| plans[].countries | array | List of countries included in the region |
| plans[].countries[].name | string | Country name |
{
"remark": "region_plan",
"status": "success",
"message": ["Asia (AS-12) eSIM Plans"],
"data": {
"plans": [
{
"id": 855,
"slug": "AS-12_0.5_Daily",
"name": "Asia (12 areas) 500MB/Day",
"period": 1,
"package_type": "DATA",
"data_volume": -1,
"voice_quantity": "0.00",
"sms_quantity": 0,
"fup_policy_text": "500MB high-speed/day, 128 Kbps after limit, resets daily",
"operator_name": "Metfone, China Unicom, csl, Telkomsel, KDDI/au, CTM, CelcomDigi, Maxis, SingTel, SKTelecom, LG U+, Chunghwa, DTAC, TrueMove H, MobiFone, Viettel Mobile, Vietnamobile",
"operator_slug": null,
"network_speed": "3G/4G",
"area_coverage": "continental",
"status": 1,
"converted_price": "7.28000000",
"currency": null,
"packageCode": "CKH226"
"countries": [
{
"name": "Hong Kong (China)",
"slug": "hong-kong-china",
"image": null
},
{
"name": "Macao (China)",
"slug": "macao-china",
"image": null
},
]
}
],
"flag": "url_to_image"
}
}
Global Plans
Get global eSIM plans.
Endpoint: https://mobilexy.com/api/global-plans
Method: GET
Response Parameters
| Name | Type | Description |
|---|---|---|
| plans | array | List of global plan objects |
| plans[].countries | array | List of supported countries |
{
"remark": "global_plan",
"status": "success",
"message": ["Global eSIM Plans"],
"data": {
"plans": [
{
"id": 855,
"slug": "AS-12_0.5_Daily",
"name": "Asia (12 areas) 500MB/Day",
"period": 1,
"package_type": "DATA",
"data_volume": -1,
"voice_quantity": "0.00",
"sms_quantity": 0,
"fup_policy_text": "500MB high-speed/day, 128 Kbps after limit, resets daily",
"operator_name": "Metfone, China Unicom, csl, Telkomsel, KDDI/au, CTM, CelcomDigi, Maxis, SingTel, SKTelecom, LG U+, Chunghwa, DTAC, TrueMove H, MobiFone, Viettel Mobile, Vietnamobile",
"operator_slug": null,
"network_speed": "3G/4G",
"area_coverage": "continental",
"status": 1,
"converted_price": "7.28000000",
"currency": null,
"packageCode": "CKH226"
"countries": [
{
"name": "Hong Kong (China)",
"slug": "hong-kong-china",
"image": null
},
{
"name": "Macao (China)",
"slug": "macao-china",
"image": null
},
]
}
],
"flag": "url_to_globe_image"
}
}
Check Balance
Check your account balance.
Endpoint: https://mobilexy.com/api/balance
Method: POST
Parameters
| Name | Type | Description |
|---|---|---|
| api_key | string | Required Your API Key |
Response Parameters
| Name | Type | Description |
|---|---|---|
| balance | float | Current account balance |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mobilexy.com/api/balance',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'api_key' => 'YOUR_API_KEY'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
{
"remark": "balance",
"status": "success",
"message": ["Account balance"],
"data": {
"balance": 100.00
}
}
Plan Details
Get details of a specific plan.
Endpoint: https://mobilexy.com/api/plan/{id}
Method: GET
Replace {id} with the plan ID.
Response Parameters
| Name | Type | Description |
|---|---|---|
| plan | object | Plan details object |
| plan.name | string | Plan name |
| plan.voice_quantity | integer | Voice quantity in minutes |
| plan.sms_quantity | integer | SMS quantity. -1 for unlimited |
{
"remark": "plan_details",
"status": "success",
"message": ["Plan Details"],
"data": {
"plan": {
"id": 811,
"slug": "AS-12_3_30",
"name": "Asia (12 areas) 3GB 30Days",
"period": 30,
"package_type": "DATA",
"data_volume": 3221225472,
"voice_quantity": "0.00",
"sms_quantity": 0,
"fup_policy_text": "",
"operator_name": "Metfone, China Unicom, csl, Telkomsel, KDDI/au, CTM, CelcomDigi, Maxis, SingTel, SKTelecom, LG U+, Chunghwa, DTAC, TrueMove H, MobiFone, Viettel Mobile, Vietnamobile",
"operator_slug": null,
"network_speed": "3G/4G",
"area_coverage": "continental"
"packageCode": "CKH226"
}
}
}
Purchase Plan
Purchase an eSIM plan.
Endpoint: https://mobilexy.com/api/plan/purchase
Method: POST
Request Parameters
| Name | Type | Description |
|---|---|---|
| api_key | string | Required Your API Key |
| plan_id | integer | Required ID of the plan to purchase |
Response Parameters
| Name | Type | Description |
|---|---|---|
| order | object | Order details |
| order.order_number | string | Unique order number |
| esim | object | eSIM details |
| esim.qr_code | string | LPA string for eSIM activation |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mobilexy.com/api/plan/purchase',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'api_key' => 'YOUR_API_KEY',
'plan_id' => '10'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
{
"remark": "order_completed",
"status": "success",
"message": ["Order completed successfully"],
"data": {
"order": {
"order_number": "GW7DUVMKGO",
"total_amount": "6.20000000",
"status": 0
},
"esim": {
"serial_number": 2147483647,
"iccid": null,
"phone_number": "0840358292",
"qr_code": "LPA:1$ais.prod.ondemandconnectivity.com$SEW7JEBMFGPRVSPD",
"qr_code_image": null,
"expiry_date": "2025-08-05",
"info": null
}
}
}
Manage Profile - Top Up
Top up the data service of an existing installed eSIM with a new plan.
Endpoint: https://mobilexy.com/api/profile/topup
Method: POST
Request Parameters
| Name | Type | Description |
|---|---|---|
| api_key | string | Required Your API Key |
| esimTranNo | string | Required Single eSIM transaction number |
| packageCode | string | Required Top up package code (provider package code) |
Response Parameters
| Name | Type | Description |
|---|---|---|
| transactionId | string | Transaction ID |
| iccid | string | ICCID of the topped-up eSIM |
| expiredTime | long | New package expiry (ISO timestamp) |
| totalVolume | long | New total data balance in bytes |
| totalDuration | integer | New validity period in days |
| orderUsage | long | Total package usage in bytes |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mobilexy.com/api/profile/topup',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'api_key' => 'YOUR_API_KEY',
'esimTranNo' => '26021613280014',
'packageCode' => 'PFRQ8FIBC'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
{
"remark": "topup_completed",
"status": "success",
"message": {
"success": [
"Top up completed successfully"
]
},
"data": {
"success": true,
"errorCode": null,
"errorMsg": null,
"obj": {
"transactionId": "MBL-RGNRTU9DAK_1771248518",
"iccid": "8910300000056693431",
"expiredTime": "2026-03-30T07:37:12+0000",
"totalVolume": 6442450944,
"totalDuration": 42,
"orderUsage": 0,
"topUpEsimTranNo": "26021613280014"
}
}
}
Usage Check
Retrieve the latest data usage snapshot (in bytes) for up to 10 eSIMs by their esimTranNo. Usage data is refreshed every 2–3 hours by the carrier and is not real-time.
Endpoint: https://mobilexy.com/api/profile/usage-check
Method: POST
Request Parameters
| Name | Type | Description |
|---|---|---|
| api_key | string | Required Your API Key |
| iccid | string | ICCID that resolves to an eSIM owned by the account |
| esimTranNo | string | Single eSIM transaction number. Use when checking one profile |
| esimTranNos | array | Up to 10 esimTranNo values to query together. |
Response Parameters
| Name | Type | Description |
|---|---|---|
| success | string | true: succeeded, false: failed |
| obj.usageList | object | One entry per requested eSIM with usage data |
| dataUsage | long | Current data usage in bytes |
| totalData | long | Plan allowance in bytes |
| lastUpdateTime | string | Timestamp of the latest usage update |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mobilexy.com/api/profile/usage-check',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'api_key' => 'YOUR_API_KEY',
'iccid' => '8948010010002120847'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
{
"success": true,
"errorCode": "0",
"errorMsg": null,
"obj": {
"usageList": [
{
"esimTranNo": "26021607100025",
"dataUsage": 0,
"totalData": 1073741824,
"lastUpdateTime": "2026-02-16T07:10:58+0000"
}
]
}
}
}