Download OpenAPI specification:
Dig into our API reference documentation and quickstarts. esimba.ai API documentation provides instructions on where to find API keys to access esimba.ai API. You’re covered with everything from the query structure and API requests with detailed explanations on receiving lists of lines and bundles that belong to your Partner Account.
esimba.ai API is a primary way to get data in and out of the esimba.ai Console. You can use esimba.ai API to control your account, view balance reports, receive a list of lines that belong to your Partner Account, change line status, receive usage data, refill lines, etc.
We have designed the esimba.ai API in a RESTful way to ensure smooth communication between the client (frontend) and the server (backend). Anytime you request a server using a REST API, you receive responses via HTTP functions described in this documentation.
API stands for “Application Programming Interface.” It’s a set of rules enabling programs to talk to each other, exposing data and functionality across the Internet in a consistent format.
REST stands for “Representational State Transfer.” This architectural pattern describes how distributed systems can expose a consistent interface. When people use the term ‘REST API,’ they generally refer to an API accessed using the HTTPS protocol at a predefined set of URLs.
These URLs represent various resources — any information or content accessed at that location. Often resources have one or more methods that can be performed over HTTPS. At esimba.ai, we use GET, POST, and PUT methods.
esimba.ai REST API is a server over HTTPS. To ensure data privacy, unencrypted HTTP is not supported.
HTTPS uses TLS (SSL) to encrypt normal HTTP requests and responses and digitally sign those requests and responses.
HTTPS is far more secure than HTTP.
The server time zone is UTC.
There must be consistency across all date-related data. All requests to a server must be aligned to UTC hour boundaries.
All country entries are in ISO 3166-1 alpha-2 format.
The purpose of ISO 3166 is to define internationally recognized codes of letters and/or numbers that we can use when we refer to countries and their subdivisions.
USD is the default and the only allowed currency.
All data is sent upon a user submitting GET/POST/PUT requests with parameters through the requested URL.
esimba.ai authenticates your API requests using your account’s API keys representing the required credentials.
Each request has to include API Credentials
Example:
You can find the API Keys under “API Credentials” in your account (see the image below).
If you cannot find your API Keys, please contact your Personal Manager.
Implement the following security measures to ensure the privacy and security of your users’ eSIM data when using esimba.ai API.
Each API request has to include API credentials, such as apiKey and accessToken, that you can find in your account. Don’t share this information with anyone. We don’t save any payment information from users. All API requests should use HTTPS URLs only.
Use standard security measures: Keep passwords/keys safe and only request API via HTTPS.
Consider the following example demonstrating API Commands usage for eSIM purchase.
*The visuals presented in the document are just one example of the development of API commands. The actual implementation may vary depending on the partner’s specific requirements.
You can offer users the option of checking that their device supports eSIM technology before purchasing an eSIM line to avoid installation issues. This is not mandatory but rather advised. /esim_enabled_devices API command offers an up-to-date list of eSIM-enabled devices that partners can display on their platform.
For a streamlined integration of the esimba.ai API, it is recommended to develop an integration module incorporating key API commands:
This list encompasses essential commands to begin implementation. Additional API commands, though optional, can provide users with supplementary information.
Detailed descriptions of each command and comprehensive information can be found in the API documentation below.
It is advised to have an independent backend to handle requests to the esimba.ai API. Direct client application requests are discouraged to prevent exposure of the partner key.
The recommended scheme involves routing requests: mobile application >> partner API >> esimba.ai API.
If you use our Payment Gateway, you must integrate Stripe into your application and use the /get_pay_intend request for each API call.
Organizations employing payment chains must confirm payment completion before submitting /line/create and /line/{iccid}/refill requests to us.
Activation following purchase or refill is automatic; no further activation steps are required.
Please use HTTPS requests because it’s more secure than HTTP.
Permitted HTTP methods are:
HTTP Method | Description |
---|---|
GET | The GET method requests a representation of the specified resource. Requests using GET should only retrieve data. |
POST | The POST method submits an entity to the specified resource, often causing a change in state or side effects on the server. |
PUT | The PUT method replaces all current representations of the target resource with the request payload. |
All calls within the esimba.ai API are allotted a specific number of requests per refresh period. Each API request returns the following header information regarding rate limits and the number of requests left.
Depending on the endpoint you are trying to reach, it will have a specific number of allowed requests per refresh period.
Currently, we have a default API limit of 60 requests per minute. The number of remaining requests can be found in the response header named X-RateLimit-Remaining (see image above).
Sometimes, your API call may generate an error. Here you will find additional information about what to expect if you don’t format your request correctly or if we fail to process your request properly.
The API provides JSON responses and requires the accept header. The API uses application/json.
When submitting data to a resource via POST or PUT, you must submit your payload in JSON.
Examples:
GET
POST
PUT
You can get paginated results (e.g., you can get the first 25 elements, the second 25 elements, etc.). All details can be found in the request section.
Below is a basic example of sending a request to get paginated results.
Below is a general overview of what resource objects return with successful API requests.
HTTP Verb | Resource object returned |
---|---|
GET | Returns a single resource object or array of resource objects |
PUT | Returns the updated resource object |
POST | Returns the newly created resource object |
Webhooks are a convenient way to keep track of line usage and changes in the status of your esimba.ai lines.
You can subscribe to events for your products and payments by activating webhooks that will push notifications to a given URL.
We use HTTPS to send notifications about selected events.
Here is how esimba.ai webhooks work:
To ensure the authenticity of incoming webhook requests, each payload includes a cryptographic signature in the X-Keepgo-Signature header. You can validate this signature to confirm the request originates from Keepgo.
Set Secret Key
At myaccount, in the User Profile menu, choose Webhooks > Create a Secret Key.
Signature Header
The server sends the signature in the X-Keepgo-Signature header.
Example (Http):
X-Keepgo-Signature: "abc123...xyz456"
Signature Generation
The signature is computed as (PHP):
$signature = base64_encode(hash_hmac("sha256", $rawPayload, $secretKey, true));
Where:
$rawPayload = Raw request body (JSON string).
$secretKey = Your webhook`s secret key (provided during setup).
Verification Steps
Example (PHP):
$receivedSignature = $_SERVER["HTTP_X_KEEPGO_SIGNATURE"];
$rawPayload = file_get_contents("php://input"); // Raw JSON body
$secretKey = "xxxxxxxxxxx"; // Your secret key here, should be kept secure
$signature = base64_encode(hash_hmac("sha256", $rawPayload, $secretKey, true));
if (hash_equals($receivedSignature, $signature)) {
// Valid request
}
You can start receiving event notifications using the steps described below.
1. Specify the URL to which webhooks will be sent.
You can enable/disable and change URL for webhooks in your Partner Account.
Please contact your Personal Manager if you need help with the webhooks setup.2. Select the events you want to be notified about.
The webhook events we currently support are listed in the table below.
Name | Description |
---|---|
simcard.usage.changed | Occurs when the Line’s usage changes. |
stripe.paymentIntent.succeeded | Partners who’ve integrated esimba.ai Payment Gateway can use this webhook event to receive notifications when the status of PaymentIntent changes. |
simcard.usage.low_data | Occurs when the Line’s usage equals or falls below 100 MB. |
bundle.added | Occurs when a bundle is added to the platform. |
bundle.removed | Occurs when a bundle is removed from the platform. |
simcard.usage.changed webhook example:
{
"event": "simcard.usage.changed",
"timestamp": "2025-06-09T07:36:09.618973Z",
"data":
{
"iccid": "12345678902116678",
"deactivation_date": "",
"allowed_usage_kb": 1048576,
"remaining_usage_kb": 1048576,
"remaining_days": null,
"status": "Registered",
"data_bundles": [
{
"id": 14,
"status": "Non-active",
"allowed_usage_kb": 1048576,
"active_kb": 0,
"remaining_usage_kb": 1048576,
"validity": 7,
"assigned_at": "2022-09-22 23:17:27",
"activated_at": null,
"terminated_at": null,
"expire_at": null
}
]
}
}
simcard.usage.low_data webhook example:
{
"event": "simcard.usage.low_data",
"timestamp": "2025-06-09T07:36:09.618973Z",
"data":
{
"iccid": "12345678902116678",
"user_email": "some-email@example.com",
"remaining_data_mb": 90.23,
"remaining_mb_threshold": 100
}
}
Notes:
bundle.added webhook example:
{
"event": "bundle.added",
"timestamp": "2025-06-09T06:55:15.069936Z",
"data": {
"bundle": {
"id": 352,
"name": "Octans",
"description": "LATAM eSIM: 17 countries, Claro coverage in most places",
"bundle_type": "regional",
"coverage": [
"Argentina",
...,
"Uruguay"
],
"refills": [
{
"title": "1 GB",
"amount_mb": 1024,
"price_usd": 28
},
...,
{
"title": "50 GB",
"amount_mb": 51200,
"price_usd": 725
},
],
"privacy_ip": "Netherlands",
"networks": [
{
"title": "Argentina",
"local_networks": [
"Claro"
],
"flag": "https://{your_link}/img/flags/3x2/ar.svg"
},
...,
{
"title": "Uruguay",
"local_networks": [
"Claro"
],
"flag": "https://{your_link}/img/flags/3x2/uy.svg"
}
]
}
}
}
bundle.removed webhook example:
{
"event": "bundle.removed",
"timestamp": "2025-06-09T06:55:15.069936Z",
"data": {
"bundle": {
"id": 352,
"name": "Octans",
"description": "LATAM eSIM: 17 countries, Claro coverage in most places",
"bundle_type": "regional",
"coverage": [
"Argentina",
...,
"Uruguay"
],
"refills": [
{
"title": "1 GB",
"amount_mb": 1024,
"price_usd": 28
},
...,
{
"title": "50 GB",
"amount_mb": 51200,
"price_usd": 725
},
],
"privacy_ip": "Netherlands",
"networks": [
{
"title": "Argentina",
"local_networks": [
"Claro"
],
"flag": "https://{your_link}/img/flags/3x2/ar.svg"
},
...,
{
"title": "Uruguay",
"local_networks": [
"Claro"
],
"flag": "https://{your_link}/img/flags/3x2/uy.svg"
}
]
}
}
}
3. Receive a response object.
Your Webhook URL should return a response with HTTP status code 200. Any other HTTP response code will be treated as a failure.
A line is an eSIM profile with an activation code. Each line has a bundle. Every Partner’s account may have lines of any bundle type.
A line can belong only to one account at a given time. Each line has a unique ICCID of 19 to 20 characters, Privacy IP location, Countries & Networks coverage, APN settings, line status, and special notes.
Please note that the line status isn’t the same as the bundle status, but it can be a function of the bundle statuses.
Mind that the line status isn’t the same thing as the bundle status. But the line status can be a function of the bundle statuses.
Use: This request returns a list of lines belonging to the account, their configuration, and running parameters, including data usage, rate plan, billing cycle, count of data, and any notes they may have.
Note:
The API command /lines with pagination or /lines/filter_data with specific filters can list all lines with details.
The command /line/{iccid}/get_details can be used for information regarding a specific line.
Usage statistics are not directly provided through the API; only the current value of remaining usage is available. Additional usage information and billing details can be obtained through the /line/{iccid}/transactions command upon request.
page | integer Default: 1 |
per_page | integer Default: 25 |
{- "ack": "success",
- "sim_cards": {
- "from": 1,
- "to": 2,
- "last_page": 1,
- "per_page": 25,
- "total": 2,
- "current_page": 1,
- "items": [
- {
- "iccid": "8934521179000123456",
- "deactivation_date": "",
- "expired_at": "2022-08-21 11:57:27",
- "allowed_usage_kb": 102400,
- "remaining_usage_kb": 51200,
- "remaining_days": 5,
- "status": "Activated",
- "bundle": "Aquila",
- "notes": "",
- "data_bundles": [
- {
- "id": 42,
- "status": "Active",
- "allowed_usage_kb": 102400,
- "active_kb": 51200,
- "remaining_usage_kb": 51200,
- "validity": 10,
- "assigned_at": "2022-08-11 11:57:27",
- "activated_at": "2022-08-11 11:57:27",
- "terminated_at": null,
- "expire_at": "2022-08-21 11:57:27"
}
]
}
]
}
}
Use: This request receives a list of possible Line statuses (Registered, Activated, Deactivated) and auto refill status IDs for filtering purposes in other API requests.
{- "ack": "success",
- "filters": {
- "status_id": {
- "1": "Registered",
- "2": "Activated",
- "3": "Deactivated"
}, - "auto_refills_status_id": {
- "0": "Off",
- "1": "On"
}
}
}
Use: This request receives details for the specific Line, including Line’s usage, remaining data/days, auto refill info, currency, etc.
FAQ
1. What is a "deactivation_date"?
The "deactivation_date" is a date when the line will be automatically deactivated in the future. There is also an option to set the past date. In this case, the line will be immediately deactivated.
iccid required | string iccid |
{- "ack": "success",
- "sim_card": {
- "iccid": "8965972579000123456",
- "msisdn": "34590100123456",
- "lpa_code": "LPA:1$consumer.ppp.local$TN20210805541629D9E05F37",
- "deactivation_date": "",
- "allowed_usage_kb": 102400,
- "remaining_usage_kb": 51200,
- "remaining_days": 5,
- "status": "Activated",
- "bundle_id": 96,
- "bundle": "Aquila",
- "auto_refill_turned_on": false,
- "auto_refill_amount_mb": 0,
- "auto_refill_price": 0,
- "auto_refill_currency": "usd",
- "auto_refill_list": [
- {
- "title": "100MB/10DAYS",
- "amount_mb": 100,
- "amount_days": 10,
- "price_usd": 3
}, - {
- "title": "1GB/20DAYS",
- "amount_mb": 1024,
- "amount_days": 20,
- "price_usd": 7
}
], - "notes": "",
- "data_bundles": [
- {
- "id": 42,
- "status": "Active",
- "allowed_usage_kb": 102400,
- "active_kb": 51200,
- "remaining_usage_kb": 51200,
- "validity": 10,
- "assigned_at": "2022-08-11 11:57:27",
- "activated_at": "2022-08-11 12:07:00",
- "terminated_at": null,
- "expire_at": "2022-08-21 11:57:27"
}, - {
- "id": 43,
- "status": "Non-active",
- "allowed_usage_kb": 102400,
- "active_kb": 0,
- "remaining_usage_kb": 102400,
- "validity": 10,
- "assigned_at": "2022-08-11 11:57:37",
- "activated_at": null,
- "terminated_at": null,
- "expire_at": null
}, - {
- "id": 44,
- "status": "Finished",
- "allowed_usage_kb": 102400,
- "active_kb": 102400,
- "remaining_usage_kb": 0,
- "validity": 10,
- "assigned_at": "2021-01-01 10:00:00",
- "activated_at": "2021-01-01 10:05:00",
- "terminated_at": "2021-01-03 17:00:00",
- "expire_at": "2021-11-01 10:05:00"
}
]
}
}
Use: This request receives a list of available refills for a Line. It displays such values as the amount of data, price (in USD and EUR), and the number of days for all available refills for the chosen iccid.
FAQ
1. Is it better to display available refills based on /line/{iccid}/available_refills or /bundles/{id} refills[*]?
It's better to display refills to the user based on available refills for a specific line. The request is faster completed using the /line/{iccid}/available_refills command.
Both /line/{iccid}/available_refills and /bundles/{id} have the same refills. It is better and faster to find the available top-ups for a specific line using /line/{iccid}/available_refills.
iccid required | string iccid |
{- "ack": "success",
- "available_refills": [
- {
- "title": "1GB",
- "amount_mb": 1024,
- "amount_days": 10,
- "price_usd": 7
}
]
}
Use: This request receives a list of cash transactions by iccid, including the date of the transaction, refill amount, payment method (balance or card), transaction ID, status, and the reason for the transaction.
iccid required | string iccid |
{- "ack": "success",
- "transactions": {
- "data": [
- {
- "created_at": "2021-09-24 09:15:49",
- "status": "Completed",
- "amount": "277.00",
- "currency": "EUR",
- "type": "ideal",
- "invoice_hash": "f391a7537acf5775989d20772cc01736",
- "refill_amount_mb": 51200,
- "reason": "Account Mr. Smith (Refill)",
- "transaction_id": "AB_49406_58"
}
]
}
}
Use: This request receives an audit log and system actions for the specific Line, including action performed, prior value, current value, and username of a person or entity acting.
iccid required | integer <int64> iccid |
{- "ack": "success",
- "audit_logs": {
- "data": [
- {
- "date": "2024-09-24 09:15:59",
- "field": "Status",
- "prior_value": "Deactivated",
- "value": "Activated",
- "user_name": "System",
- "description": ""
}
]
}
}
Use this endpoint to create a new line. The request requires parameters such as refill_mb
, bundle_id
or filters
, and optionally refill_days
and count
.
Parameters
refill_mb (required):
Specifies the size of the refill in megabytes. Must match one of the available refills for a bundle, as defined in the /bundles
or /bundles/{id}
endpoints.
refill_days:
Required only for Travel bundles. If provided with a Lifetime bundle, it will be ignored.
bundle_id:
Directly identifies the bundle. If provided, filters
will be ignored.
filters:
Used when bundle_id
is not provided. Filters include:
country_code
(e.g., "US", "FR")type
("travel" or "lifetime")preference
(optional: "fastest", "cheapest", "default")If no preference is specified:
count:
Optional. Number of lines to create. Default is 1. Max is 1000.
Use: This request is used to create a Line. The request body must include: - refill_mb – required - Either bundle_id or filters – at least one is required - refill_days – required only for Travel bundles - count – optional (default: 1, max: 1000)
FAQ
1. Is the "refill_mb" a required parameter?
Yes, refill_mb is required. It defines the data amount of the selected refill and must match one of the available refill options in the selected bundle.
1.1. Where can the "refill_mb" parameter be found?
You can find valid refill_mb values by using the GET /bundles or GET /bundles/{id} endpoints. Each bundle includes a list of available refills.
1.2. Is the "count" a required parameter?
No, count is optional. It specifies how many lines to create. If omitted, the default value is 1. The maximum allowed value is 1000.
2. What is "refill_mb" needed for?
The refill_mb parameter is required to determine which lpa_code (eSIM profile) to issue.
When creating a line, you must include:
refill_mb required | integer <int64> Specifies the size of the refill in megabytes. Required. Must match one of the available refills for a bundle, as defined in the /bundles or /bundles/{id} endpoints. |
refill_days | integer <int64> Only required for Travel bundles. If provided with a Lifetime bundle, this value will be ignored. |
bundle_id required | integer <int64> If provided, this ID will be used to locate the bundle directly. In this case, any provided filters will be ignored. |
object Alternative to bundle_id. Used to identify the appropriate bundle based on:
| |
count | integer [ 1 .. 1000 ] Default: 1 Specifies how many lines to create. Default is 1, maximum is 1000. |
{- "refill_mb": 1024,
- "refill_days": 7,
- "bundle_id": 2,
- "count": 3
}
{- "ack": "success",
- "sim_card": {
- "iccid": "89103000010077777736346",
- "lpa_code": "LPA:1$consumer.ppp.local$TN20213634636363463"
}, - "data_bundle_id": 356
}
Use: This request is used to refill the Line with a certain amount of data for a specific period (number of days).
FAQ
1. Do the ’amount_mb’ and ’amount_days’ parameters in the >/line/{iccid}/refill command need to match values retrieved from the /bundles command?
Yes, the ’amount_mb’ and ’amount_days’ parameters in the >/line/{iccid}/refill command must match the corresponding values obtained from the /bundles command. Ensuring consistency between these parameters is crucial for accurate and effective eSIM refills.
iccid required | string iccid |
Amount in MB
amount_mb | integer |
amount_days | integer or null |
{- "amount_mb": 0,
- "amount_days": 0
}
{- "ack": "success",
- "data_bundle_id": 367,
- "transaction_id": "AB_32321_42"
}
Use: This request is used to update the notes of the Line. The request body is the required parameter. Using notes, you can bring more order to how lines are displayed on your platform and easily find the required line based on the notes attached.
iccid required | string iccid |
Notes
notes | string |
{- "notes": "My ESIM #1"
}
{- "ack": "success"
}
Use: This request is used to update the deactivation date of the Line. The deactivation_date is the date when the line will be automatically deactivated in the future. If deactivation_date is set as a past date, the line will be deactivated.
iccid required | string iccid |
format Y-m-d
deactivation_date | string |
{- "deactivation_date": "2022-12-25"
}
{- "ack": "success"
}
Use: This request is used to turn on Auto-Refill for the Line.
For Travel lines, the 'amount_mb' and 'amount_days' parameters must correspond to the number of megabytes and days from the available refills for your line (use /line/{iccid}/available_refills to select the appropriate refill option for Auto-Refill). There is no need to transfer the number of days for Lifetime lines.
The 'bill_protect_amount' parameter - contains the maximum amount that will be spent using the Auto-Refill. The maximum spending limit will not be set if this parameter is not passed or the value is 0.
To set a new billing protection amount - send a request to enable the Auto-Refill with 'amount_mb', 'amount_days' and a new billing protection amount.
To reset the amount spent as part of the billing protection - send a command to turn off the Auto-Refill, and then a command to turn it on.
iccid required | string iccid |
Amount in MB. Bill protection in USD
amount_mb | integer |
amount_days | integer or null |
bill_protect_amount | number or null |
{- "amount_mb": 0,
- "amount_days": 0,
- "bill_protect_amount": 0
}
{- "ack": "success",
- "message": "Auto-refill was turned ON"
}
Use: Configures an unconfigured physical SIM line (already assigned to a partner) with a selected plan (bundle_id).
If amount_mb is provided, the line is immediately topped up using the partner’s balance.
This command is applicable only to physical SIM lines (pSIM).
Important:
iccid required | string iccid |
bundle_id required | integer The ID of the plan to be assigned. Retrieved via GET /bundles using product_type: pSIM. |
amount_mb | integer Optional data top-up amount (in MB) from refill list. If present, the SIM is refilled immediately after configuration. |
{- "ack": "success",
- "message": "Action has been successfully completed. Changes will appear in a few seconds"
}
Product type is a property of a bundle. We currently provides two product types - Lifetime and Travel - with different operation logics. You can add lines on both Lifetime and Travel product types to one account. Each product type comes with a set of bundles. One Line can belong to one product type.
Use: This request receives a list of all product types from the Console. Currently, it includes Lifetime and Travel product types.
{- "ack": "success",
- "product_types": [
- "Lifetime",
- "Pay per megabyte",
- "Data expires in X days",
- "Unlimited with slow down",
- "Flex Unlimited"
]
}
Use: This request returns the financial sum available within a partner’s account in the platform. It represents the current amount of funds that a partner has at their disposal for conducting transactions.
{- "ack": "success",
- "account_balance": "8.63"
}
Use: This request reveals a list of Global/Regional/Country data bundles from the Console that you can use in your account. It reveals the bundle’s names, descriptions, coverage, and available refills.
Each bundle is defined by the locations where the line can be used, the data allowance, the period this data is valid, APN settings, data breakout, etc. You can have different bundles in one account
The bundles list is provided in response to the /line/{iccid}/get_details request. Only those bundles that belong to a specific line may have the following statuses:
{- "ack": "success",
- "bundles": [
- {
- "id": 1,
- "type_id": 1,
- "bundle_type": "regional",
- "name": "Orion",
- "description": "Affordable data bundle for Europe and the USA",
- "coverage": [
- "Austria",
- "Belgium",
- "Bulgaria"
], - "refills": [
- {
- "title": "100MB",
- "amount_mb": 100,
- "amount_days": null,
- "price_usd": 3
}
]
}
]
}
Use: This request reveals a specific bundle from Console that you can use in your Partner Account. It reveals the bundle’s name, type (Global/Regional/Country), description, coverage, and available refills.
FAQ
1. Can a bundle change after it’s already created?
Once a bundle is created, coverage may change (countries and operators may be added or removed, the notification will be sent in advance) or refill prices. In this case, the existing bundle will be changed.
id required | integer <int64> Bundle ID |
{- "ack": "success",
- "bundle": [
- {
- "id": 1,
- "name": "Orion",
- "description": "Affordable data bundle for Europe and the USA",
- "bundle_type": "regional",
- "coverage": [
- "Austria",
- "Belgium",
- "Bulgaria"
], - "refills": [
- {
- "title": "100MB",
- "amount_mb": 100,
- "amount_days": null,
- "price_usd": 3
}
], - "privacy_ip": "Netherlands",
- "networks": [
- {
- "title": "Austria",
- "local_networks": [
- "3",
- "A1",
- "T-Mobile"
],
}
]
}
]
}
Every line that belongs to the Partner Account comes with a list of cash transactions, offering the entire history of refills, including the refill amount, date and time, payment method, transaction ID, and status.
Use: This request reveals a list of transactions referred to a specific Line belonging to your account and integrates them into your platform.
The required parameters include:
sort_field | string Example: sort_field=/transactions?sort_field=refill_amount_mb Choose field from transaction structure |
sort_order | string Example: sort_order=desc asc or desc (default: desc) |
common_filter | string Example: common_filter=/transactions?common_filter=00614433 Filter transactions by common filter |
{- "ack": "success",
- "transactions": {
- "data": [
- {
- "created_at": "2022-03-30 07:42:35",
- "status": "Completed",
- "amount": "6.50",
- "currency": "EUR",
- "type": "bancontact",
- "invoice_hash": "8a7a8bf8c1e55ffdb872a54afb197640",
- "refill_amount_mb": 1024,
- "reason": "Customer (Refill)",
- "transaction_id": "AB_49406_58"
}
]
}
}
Every bundle works on one or several network providers in the countries/regions where it provides coverage. The list of network providers is an attribute of a bundle.
/network_providers is generally all the operators that we have in some bundles
Contact your Personal Manager if you require a specific network that is not provided by default.
Use: The /network_providers request reveals a list of all operators we have in bundles.
{- "ack": "success",
- "network_providers": {
- "1970": "3 (Austria)",
- "2018": "3 (Indonesia)"
}
}
The list of countries is an attribute of a bundle. Every bundle provides coverage services that are only available in certain countries.
Using the /countries command, you get all countries issued in general, without reference to bundles.
Use: The request returns a list of country names exactly as they appear on the Console.
{- "ack": "success",
- "countries": {
- "1": "Afghanistan",
- "2": "Albania",
- "3": "Algeria",
- "4": "American Samoa",
- "5": "...",
- "6": "..."
}
}
The list of regions is an attribute of a bundle. Every bundle provides coverage services that are only available in certain regions.
Use: The request reveals a list of all regions where products have coverage.
{- "ack": "success",
- "regions": {
- "1": "Africa",
- "2": "Asia",
- "3": "Europe",
- "4": "North America",
- "5": "Pacific",
- "6": "EMEA",
- "7": "Middle East"
}
}
eSIMs don’t work on devices that do not support the technology. To make it easier for your customers to determine if the eSIM is compatible with their devices, we provide a regularly updated list of eSIM devices where eSIM bundles can be installed.
Use: This request receives a list of eSIM-enabled devices compatible with eSIM bundles.
{- "ack": "success",
- "data": [
- {
- "type": "Tablets & laptops",
- "brands": [
- {
- "title": "ASUS",
- "models": [
- "ASUS VivoBook Flip 14 TP401NA",
- "ASUS NovaGo TP370QL"
]
}, - {
- "title": "Acer",
- "models": [
- "Acer Spin 7",
- "Acer TravelMate P6",
- "Acer TravelMate Spin P4"
]
}
]
}, - {
- "type": "Smartphones",
- "brands": [
- {
- "title": "Apple",
- "models": [
- "iPhone 13 Pro",
- "iPhone 13 Pro Max",
- "iPhone 13 mini",
- "iPhone 13"
]
}, - {
- "title": "Google",
- "models": [
- "Google Pixel 3a",
- "Google Pixel 4"
]
}
]
}
]
}