Base URL https://api.esimtech.io/v1
v1.0

eSIM TECH Platform API

The eSIM TECH Platform API provides programmatic access to subscriber management, prepaid packages, tariffs, statistics, and real-time charging. All requests and responses use JSON over HTTPS.

Endpoint
POST /v1

All calls use a single POST endpoint. The operation name is the top-level JSON key.

Authentication
Bearer token

Include your API token as a URL query parameter: ?token=YOUR_TOKEN

Response format
JSON · UTF-8

All responses include a status.code field. Code 0 = success.

1. Reseller

Manage reseller accounts, balances, eSIM status, sponsors, and steering lists.

listResellerAccount

Retrieve the list of accounts for one or all resellers. Omit resellerId to return all accounts across all resellers.

Parameters
ParameterPresenceDescription
resellerIdOptionalThe ID of the reseller
Request · All resellers
{
  "listResellerAccount": { }
}
Request · Specific reseller
{
  "listResellerAccount": {
    "resellerId": 123
  }
}
Response
{
  "status": { "code": 0, "msg": "OK" },
  "listResellerAccount": {
    "reseller": [{
      "id": 1,
      "name": "Example Reseller",
      "account": [{
        "id": 4,
        "name": "Main Account",
        "balance": 10925.29,
        "packageOnly": false,
        "steeringListId": 1
      }, {
        "id": 151,
        "name": "Package Only Account",
        "balance": 0.0,
        "packageOnly": true
      }]
    }]
  }
}

modifyAccountBalance

Adapt or set the balance of an account. Use a negative amount to decrease. Balance cannot go below zero. Transactions are logged and visible in the Account → Transaction tab.

  • Adapt: amount is added/subtracted from current balance
  • Set: balance is replaced with the provided amount (set setBalance: true)
Parameters
ParameterPresenceDescription
accountIdRequiredThe ID of the account to modify
amountRequiredAmount to add (negative to subtract)
setBalanceOptionaltrue = set to this amount; false (default) = adapt balance
descriptionOptionalReason for this balance adjustment
Request · Adapt balance
{
  "modifyAccountBalance": {
    "accountId": 132,
    "amount": -123.25,
    "description": "Credit adjustment"
  }
}
Request · Set balance
{
  "modifyAccountBalance": {
    "accountId": 132,
    "amount": 500.00,
    "setBalance": true,
    "description": "Monthly top-up"
  }
}
Response
{ "status": { "code": 0, "msg": "OK" } }

modifyResellerBalance

Adapt or set the balance of a reseller. Same logic as modifyAccountBalance but operates at reseller level. Requires a transaction type (e.g. "Wire").

Parameters
ParameterPresenceDescription
resellerIdRequiredThe ID of the reseller
typeRequiredTransaction type (e.g. "Wire")
amountRequiredAmount to add/set
setBalanceOptionalIf true, balance is set to the amount
descriptionOptionalReason for the adjustment
Request
{
  "modifyResellerBalance": {
    "resellerId": 1,
    "type": "Wire",
    "amount": 123.45,
    "description": "Wire transfer received"
  }
}

getResellerInfo

Retrieve detailed information about a reseller. If id is omitted, the reseller linked to the current API token is returned.

Request
{ "getResellerInfo": { "id": 111 } }
Response
{
  "status": { "code": 0, "msg": "OK" },
  "getResellerInfo": {
    "id": 1,
    "name": "Example Reseller",
    "parentId": -1,
    "balance": "8870.59",
    "trafficInfo": {
      "relayGy": true, "relayCallSms": false,
      "relayLU": false, "relayVoIP": false
    },
    "chargingInfo": {
      "mobilePlan": { "id": 1, "name": "Default Mobile Plan" },
      "voipPlan": { "id": 1, "name": "Default VoIP Plan" },
      "voipFree": false
    },
    "contactInfo": {
      "contactName": "Admin",
      "city": "Amsterdam",
      "country": "Netherlands"
    }
  }
}

esimStatusPerAccount

Retrieve eSIM status counts per account. Provide either accountId for a single account or resellerId for all accounts under a reseller.

  • Free — eSIM available, not yet assigned to a user
  • Affected — eSIM has been assigned to a user
Request
{ "esimStatusPerAccount": { "accountId": 222 } }
Response
{
  "status": { "code": 0, "msg": "OK" },
  "esimStatusPerAccount": {
    "account": [{
      "id": 222,
      "name": "My Account",
      "sponsor": [{
        "id": 101,
        "name": "Sponsor A",
        "esim": {
          "status": [
            { "statusNum": 0, "statusStr": "Free",     "count": 100 },
            { "statusNum": 2, "statusStr": "Affected", "count": 10 }
          ]
        }
      }]
    }]
  }
}

listSponsor

List the sponsors configured for a reseller. The request value is the reseller ID (numeric).

Request
{ "listSponsor": 12 }
Response
{
  "status": { "code": 0, "msg": "OK" },
  "listSponsor": {
    "sponsor": [
      { "id": 1, "prefix": 11122, "name": "SP01" },
      { "id": 2, "prefix": 33322, "name": "SP02" }
    ]
  }
}

listSteeringList

List steering lists configured for a reseller. The request value is the reseller ID (numeric).

Request
{ "listSteeringList": 12 }
Response
{
  "status": { "code": 0, "msg": "OK" },
  "listSteeringList": [
    { "id": 1, "resellerId": 12, "name": "Steering list 1" },
    { "id": 2, "resellerId": 12, "name": "Steering list 2" }
  ]
}

2. Subscriber

Look up, update, and manage subscribers. Most write operations accept multiple subscriber identifiers (subscriberId, IMSI, ICCID, MSISDN, multiIMSI, activationCode).

Subscriber identifiers: Unless noted otherwise, all subscriber write endpoints accept any of: subscriberId, imsi, iccid, msisdn, multiImsi, or activationCode. Use subscriberId whenever possible for best performance.

getSingleSubscriber

Look up a specific subscriber by IMSI, ICCID, MSISDN, activation code, or internal subscriber ID. Returns current state only — historical identifiers (old MSISDNs etc.) are not searched.

Parameters
ParameterPresenceDescription
imsiOptionalExact IMSI
iccidOptionalExact ICCID
msisdnOptionalCurrently active MSISDN (exact)
subscriberIdOptionalInternal subscriber ID
activationCodeOptionaleSIM activation code
withSimInfoOptionalInclude eSIM details (default: true)
onlySubsInfoOptionalReturn basic info only, no history (default: false)
withGzCounterOptionalInclude Green Zone counter (default: false)
Request · by IMSI
{
  "getSingleSubscriber": {
    "imsi": "248029018000011",
    "withGzCounter": true
  }
}
Request · by activation code
{
  "getSingleSubscriber": {
    "activationCode": "K2-1JL8YT-14S7I6K",
    "withSimInfo": true,
    "onlySubsInfo": false
  }
}
Response
{
  "status": { "code": 0, "msg": "OK" },
  "getSingleSubscriber": {
    "subscriberId": 21046,
    "accountId": 37,
    "resellerId": 10,
    "account": "Main Account",
    "reseller": "Example Reseller",
    "prepaid": true,
    "balance": 0.0,
    "activationDate": "2024-03-10T20:29:41",
    "lastUsageDate": "2024-06-01T15:35:34",
    "allowedMoc": true, "allowedMtc": true,
    "allowedData": true, "allowedMosms": true,
    "useAccountForCharging": true,
    "imsiList": [{ "imsi": "248029018000011", "iccid": "893720401717000011" }],
    "sim": {
      "esim": true,
      "status": "FREE",
      "smdpServer": "smdp.esimtech.io",
      "activationCode": "K2-1JL8YT-14S7I6K",
      "pin1": "0561", "pin2": "1736", "puk2": "50913387"
    },
    "networkInfo": {
      "lastMcc": 222, "lastMnc": 99,
      "lastRat": "4G - LTE"
    }
  }
}
networkInfo is null if the subscriber has not yet been active on the network.

listSubscriber

Search subscribers by prefix. At least one search parameter must be provided.

Parameters
ParameterPresenceDescription
imsiPrefixOptionalMin 10 digits
iccidPrefixOptionalMin 13 digits
msisdnPrefixOptionalMin 7 digits
accountIdOptionalReturn all subscribers in this account
activationCodeOptionalExact eSIM activation code
Request
{ "listSubscriber": { "imsiPrefix": "9999900000" } }

affectSubscriberRealPhoneNumber

Assign a real phone number (MSISDN) to a subscriber.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
phoneNumberRequiredThe MSISDN to assign
Request
{
  "affectSubscriberRealPhoneNumber": {
    "subscriber": { "subscriberId": 1000 },
    "phoneNumber": "31612345678"
  }
}

affectSubscriberFakePhoneNumber

Assign a virtual (fake) phone number to a subscriber for internal routing purposes.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
phoneNumberRequiredThe fake MSISDN to assign
Request
{
  "affectSubscriberFakePhoneNumber": {
    "subscriber": { "subscriberId": 1000 },
    "phoneNumber": "99901234567"
  }
}

getSimProviderStatus

Retrieve the SIM provider status for a subscriber, including SM-DP+ provisioning state.

Request
{
  "getSimProviderStatus": {
    "subscriber": { "subscriberId": 1000 }
  }
}

modifySubscriberBalance

Adapt or set the balance of an individual subscriber. Works the same as account-level balance management.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
amountRequiredAmount to add (negative to subtract)
setBalanceOptionalIf true, sets balance instead of adapting
descriptionOptionalReason for adjustment
Request
{
  "modifySubscriberBalance": {
    "subscriber": { "subscriberId": 1000 },
    "amount": 50.00,
    "description": "Manual top-up"
  }
}

hlrSetBitrate

Set the bitrate (throttling) limit for a subscriber at the HLR level. Value in kbit/s.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
bitrateRequiredThrottle limit in kbit/s (0 = no limit)
Request
{
  "hlrSetBitrate": {
    "subscriber": { "subscriberId": 1000 },
    "bitrate": 256
  }
}

hlrGetBitrate

Retrieve the current HLR bitrate setting for a subscriber.

Request
{
  "hlrGetBitrate": {
    "subscriber": { "subscriberId": 1000 }
  }
}

moveSubscriberRangeToAccount

Bulk-move a range of subscribers to a different account. Useful for account restructuring.

Parameters
ParameterPresenceDescription
fromAccountIdRequiredSource account
toAccountIdRequiredDestination account
imsiStartRequiredFirst IMSI of the range
imsiEndRequiredLast IMSI of the range
Request
{
  "moveSubscriberRangeToAccount": {
    "fromAccountId": 10,
    "toAccountId": 20,
    "imsiStart": "248029018000001",
    "imsiEnd":   "248029018000100"
  }
}

modifySubscriberContactInfo

Update the contact information (email, phone, company) for a subscriber.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
emailOptionalNew email address
phoneOptionalNew phone number
companyOptionalCompany name
Request
{
  "modifySubscriberContactInfo": {
    "subscriber": { "subscriberId": 1000 },
    "email": "user@example.com",
    "company": "ACME Corp"
  }
}

modifySubscriberStatus

Change the operational status of a subscriber. Only ACTIVE subscribers can use data, calls, and SMS.

Valid status values: ACTIVE · INACTIVE · DISCONNECTED · SUSPENDED · END_OF_LIFE

Note: END_OF_LIFE is final and cannot be reversed via API. The following operations are blocked in this state: status change, package assignment, phone number assignment, throttling, traffic restrictions, steering push, and SMS.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
newStatusRequiredTarget status
Request
{
  "modifySubscriberStatus": {
    "subscriber": { "subscriberId": 1000 },
    "newStatus": "ACTIVE"
  }
}

setSubscriberTrafficRestrictions

Configure allowed traffic types for a subscriber. SMS-MT (inbound SMS) is always allowed and cannot be restricted.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
dataAllowedRequiredAllow data traffic
mocAllowedRequiredAllow mobile-originated calls
mtcAllowedRequiredAllow mobile-terminated calls
smsMoAllowedRequiredAllow mobile-originated SMS
Request
{
  "setSubscriberTrafficRestrictions": {
    "subscriber": { "subscriberId": 1000 },
    "dataAllowed": true,
    "mocAllowed": false,
    "mtcAllowed": false,
    "smsMoAllowed": true
  }
}

modifySubscriberSteeringList

Update the network steering list assigned to a subscriber.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
steeringListIdRequiredID of the steering list to assign
Request
{
  "modifySubscriberSteeringList": {
    "subscriber": { "subscriberId": 1000 },
    "steeringListId": 3
  }
}

pushSteeringToSubs

Push the current steering configuration to the subscriber's device immediately.

Request
{
  "pushSteeringToSubs": {
    "subscriber": { "subscriberId": 1000 }
  }
}

cleanSubscriberAllPackages

Remove all active prepaid packages from a subscriber. Use with caution — this action is immediate and cannot be undone.

Request
{
  "cleanSubscriberAllPackages": {
    "subscriberId": 1000
  }
}

resetSubsGzCounter

Reset the Green Zone (GZ) data counter for a subscriber. The counter tracks usage within the designated green zone.

Request
{
  "resetSubsGzCounter": { "subscriberId": 1000 }
}

getSubscriberLocation

Get the last known location of a subscriber based on the last serving cell tower. Returns latitude, longitude, accuracy in meters (50% confidence radius), and timestamp (UTC).

Returns no location if the subscriber has never been active, or if location data was not received during last usage.

Request
{
  "getSubscriberLocation": { "subscriberId": 1000 }
}
Response
{
  "status": { "code": 0, "msg": "OK" },
  "subscriberLocation": {
    "latitude":  52.3702,
    "longitude": 4.8952,
    "accuracy":  250,
    "dateTime":  "2024-10-15T12:00:00"
  }
}

getSubscriberLocationByCellId

Look up location from a raw cell tower ID. Useful when you have network-level data but no subscriber context. cellId is optional but significantly improves accuracy.

Parameters
ParameterPresenceDescription
radioTypeRequired2G, 3G, 4G, 5G, or NB-IoT
mccRequiredMobile Country Code
mncRequiredMobile Network Code
lacRequiredLocation Area Code
cellIdOptionalCell tower ID (improves precision)
Request
{
  "getSubscriberLocationByCellId": {
    "radioType": "4G",
    "mcc": 204, "mnc": 4,
    "lac": 9830, "cellId": 79131751
  }
}

changeSimStatus

Change the physical/eSIM card status (distinct from subscriber status). Used to lock, unlock, or deactivate the SIM itself.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
newStatusRequiredNew SIM status
Request
{
  "changeSimStatus": {
    "subscriber": { "subscriberId": 1000 },
    "newStatus": "LOCKED"
  }
}

3. Subscriber Prepaid Packages

Assign, modify, pause, and delete data/voice/SMS packages on subscribers.

affectPackageToSubscriber

Assign a one-time prepaid package to a subscriber. The package is consumed until exhausted or expired.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
packageTemplateIdRequiredID of the package template to assign
startDateOptionalActivation date (ISO 8601). Defaults to now.
Request
{
  "affectPackageToSubscriber": {
    "subscriber": { "subscriberId": 1000 },
    "packageTemplateId": 42,
    "startDate": "2024-06-01T00:00:00"
  }
}

affectRecurringPackageToSubscriber

Assign a recurring (auto-renewing) prepaid package. The package automatically renews at the end of each billing period.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
packageTemplateIdRequiredID of the recurring package template
startDateOptionalFirst activation date (ISO 8601)
Request
{
  "affectRecurringPackageToSubscriber": {
    "subscriber": { "subscriberId": 1000 },
    "packageTemplateId": 77
  }
}

listSubscriberPrepaidPackages

List all active and pending prepaid packages for a subscriber.

Request
{
  "listSubscriberPrepaidPackages": {
    "subscriber": { "subscriberId": 1000 }
  }
}

modifySubscriberPrepaidPackageLimits

Update the volume or time limits on an existing subscriber package.

Parameters
ParameterPresenceDescription
subscriberPackageIdRequiredID of the subscriber's package instance
newVolumeMbOptionalNew data volume limit in MB
newDurationDaysOptionalNew duration in days
Request
{
  "modifySubscriberPrepaidPackageLimits": {
    "subscriberPackageId": 5500,
    "newVolumeMb": 10240
  }
}

modifySubscriberPrepaidPackageExpDate

Change the expiry date of a subscriber's prepaid package.

Parameters
ParameterPresenceDescription
subscriberPackageIdRequiredPackage instance ID
newExpDateRequiredNew expiry date (ISO 8601)
Request
{
  "modifySubscriberPrepaidPackageExpDate": {
    "subscriberPackageId": 5500,
    "newExpDate": "2025-12-31T23:59:59"
  }
}

modifySubscriberPrepaidPackageStatus

Activate or deactivate a specific subscriber package instance.

Parameters
ParameterPresenceDescription
subscriberPackageIdRequiredPackage instance ID
newStatusRequiredACTIVE or INACTIVE
Request
{
  "modifySubscriberPrepaidPackageStatus": {
    "subscriberPackageId": 5500,
    "newStatus": "ACTIVE"
  }
}

stopResumeSubsRecurringPackage

Pause or resume automatic renewal of a recurring package. Stopping prevents the next renewal cycle; resuming re-enables it.

Parameters
ParameterPresenceDescription
subscriberPackageIdRequiredPackage instance ID
stopRequiredtrue to stop renewal; false to resume
Request
{
  "stopResumeSubsRecurringPackage": {
    "subscriberPackageId": 5500,
    "stop": true
  }
}

deleteSubscriberPackage

Permanently remove a package from a subscriber. This cannot be undone.

Request
{
  "deleteSubscriberPackage": {
    "subscriberPackageId": 5500
  }
}

modifySubscriberPrepaidPackageActivePeriod

Adjust the active period window of a prepaid package (when consumption counting starts/stops).

Parameters
ParameterPresenceDescription
subscriberPackageIdRequiredPackage instance ID
newStartDateOptionalNew start date (ISO 8601)
newEndDateOptionalNew end date (ISO 8601)
Request
{
  "modifySubscriberPrepaidPackageActivePeriod": {
    "subscriberPackageId": 5500,
    "newStartDate": "2024-07-01T00:00:00",
    "newEndDate":   "2024-07-31T23:59:59"
  }
}

modifySubscriberMobilePlan

Change the mobile charging plan assigned to a subscriber.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
mobilePlanIdRequiredNew mobile plan ID
Request
{
  "modifySubscriberMobilePlan": {
    "subscriber": { "subscriberId": 1000 },
    "mobilePlanId": 5
  }
}

modifySubscriberVoipPlan

Change the VoIP charging plan assigned to a subscriber.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
voipPlanIdRequiredNew VoIP plan ID
Request
{
  "modifySubscriberVoipPlan": {
    "subscriber": { "subscriberId": 1000 },
    "voipPlanId": 3
  }
}

4. Prepaid Package Templates

Create and manage the package templates that define data, voice, and SMS packages available for assignment.

listPrepaidPackageTemplate

Retrieve available prepaid package templates for a reseller.

Parameters
ParameterPresenceDescription
resellerIdOptionalFilter by reseller. Defaults to token owner.
Request
{ "listPrepaidPackageTemplate": { "resellerId": 1 } }

listLocationZoneElement

List all operators (TADIG codes) available within a specific location zone.

Parameters
ParameterPresenceDescription
locationZoneIdRequiredID of the location zone
Request
{ "listLocationZoneElement": { "locationZoneId": 46 } }

listDestinationListPrefix

List dial prefixes in a destination list (used for voice/SMS tariff routing).

Parameters
ParameterPresenceDescription
destinationListIdRequiredID of the destination list
Request
{ "listDestinationListPrefix": { "destinationListId": 12 } }

listDetailedLocationZone

List all location zones with full TADIG operator details for a network profile.

Parameters
ParameterPresenceDescription
networkProfileIdRequiredNetwork profile ID
Request
{ "listDetailedLocationZone": { "networkProfileId": 79 } }

listDetailedDestinationList

List destination lists with full prefix details for a network profile.

Parameters
ParameterPresenceDescription
networkProfileIdRequiredNetwork profile ID
Request
{ "listDetailedDestinationList": { "networkProfileId": 79 } }

createPrepaidPackageTemplate

Create a new prepaid package template. Defines the data volume, validity, throttling, and location zones for the package.

Parameters (core)
ParameterPresenceDescription
networkProfileIdRequiredNetwork profile that owns this template
nameRequiredDisplay name of the package
volumeMbOptionalData allowance in MB (0 = unlimited)
validityDaysOptionalPackage validity in days
locationZoneIdOptionalRestrict usage to this location zone
throttlingKbsOptionalSpeed cap in kbit/s after exhaustion
Request
{
  "createPrepaidPackageTemplate": {
    "networkProfileId": 79,
    "name": "Europe 10GB / 30 days",
    "volumeMb": 10240,
    "validityDays": 30,
    "locationZoneId": 46,
    "throttlingKbs": 128
  }
}

modifyPPTCore

Modify the core properties of an existing package template (name, volume, validity).

Parameters
ParameterPresenceDescription
packageTemplateIdRequiredTemplate ID to modify
nameOptionalNew template name
volumeMbOptionalNew data allowance in MB
validityDaysOptionalNew validity period in days
Request
{
  "modifyPPTCore": {
    "packageTemplateId": 42,
    "name": "Europe 15GB / 30 days",
    "volumeMb": 15360
  }
}

modifyPPTRecurring

Modify the recurring billing settings of a package template.

Parameters
ParameterPresenceDescription
packageTemplateIdRequiredTemplate ID
isRecurringRequiredEnable or disable auto-renewal
recurringDaysOptionalRenewal interval in days
Request
{
  "modifyPPTRecurring": {
    "packageTemplateId": 42,
    "isRecurring": true,
    "recurringDays": 30
  }
}

modifyPPTThrottling

Update the post-exhaustion throttling configuration for a package template.

Parameters
ParameterPresenceDescription
packageTemplateIdRequiredTemplate ID
throttlingKbsRequiredPost-exhaustion speed cap in kbit/s (0 = block)
Request
{
  "modifyPPTThrottling": {
    "packageTemplateId": 42,
    "throttlingKbs": 64
  }
}

5. Tariff

Retrieve tariff information at reseller, subscriber, and VoIP level.

listResellerTariff

List all tariff plans available to a reseller.

Request
{ "listResellerTariff": { "resellerId": 1 } }

listSubscriberTariff

List tariff plans applicable to a specific subscriber.

Request
{ "listSubscriberTariff": { "subscriberId": 1000 } }

listTariffRule

Retrieve the individual charging rules within a tariff plan.

Parameters
ParameterPresenceDescription
tariffIdRequiredTariff plan ID
Request
{ "listTariffRule": { "tariffId": 5 } }

getCustomerTariff

Get the effective tariff for a subscriber, accounting for account and reseller-level overrides.

Request
{ "getCustomerTariff": { "subscriberId": 1000 } }

listSubscriberVoipTariff

List VoIP tariff plans available to a subscriber.

Request
{ "listSubscriberVoipTariff": { "subscriberId": 1000 } }

listVoipTariffRule

Retrieve the charging rules within a VoIP tariff plan.

Parameters
ParameterPresenceDescription
voipTariffIdRequiredVoIP tariff plan ID
Request
{ "listVoipTariffRule": { "voipTariffId": 3 } }

6. Statistics

Query subscriber usage, network events, and activity periods.

getSubscriberActivePeriod

Retrieve the periods during which a subscriber was active (had network sessions).

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
fromDateOptionalStart of query window (ISO 8601)
toDateOptionalEnd of query window (ISO 8601)
Request
{
  "getSubscriberActivePeriod": {
    "subscriber": { "subscriberId": 1000 },
    "fromDate": "2024-01-01T00:00:00",
    "toDate":   "2024-03-31T23:59:59"
  }
}

subscriberUsageOverPeriod

Get data, voice, and SMS usage totals for a subscriber over a specified period.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
fromDateRequiredPeriod start (ISO 8601)
toDateRequiredPeriod end (ISO 8601)
Request
{
  "subscriberUsageOverPeriod": {
    "subscriber": { "subscriberId": 1000 },
    "fromDate": "2024-06-01T00:00:00",
    "toDate":   "2024-06-30T23:59:59"
  }
}

subscriberNetworkEventsOverPeriod

Retrieve detailed network events (attach, detach, handover, location updates) for a subscriber in a time window.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
fromDateRequiredPeriod start (ISO 8601)
toDateRequiredPeriod end (ISO 8601)
eventTypesOptionalFilter by event type array
Request
{
  "subscriberNetworkEventsOverPeriod": {
    "subscriber": { "subscriberId": 1000 },
    "fromDate": "2024-06-01T00:00:00",
    "toDate":   "2024-06-01T23:59:59"
  }
}

7. SMS

Send mobile-terminated SMS to subscribers.

sendMtSms

Send an SMS to a subscriber (mobile-terminated). The sender address and message text are configurable.

Parameters
ParameterPresenceDescription
subscriberRequiredSubscriber identifier
senderRequiredSender address (number or alphanumeric)
messageRequiredSMS text content
Request
{
  "sendMtSms": {
    "subscriber": { "subscriberId": 1000 },
    "sender":     "eSIMTECH",
    "message":    "Your data package has been activated."
  }
}

8. Network Profile

Manage network profiles and create location zones for operator-level routing.

listNetworkProfile

List network profiles. Filter by resellerId, sponsorId, both, or neither (returns all).

Parameters
ParameterPresenceDescription
resellerIdOptionalFilter by reseller
sponsorIdOptionalFilter by sponsor
Request
{
  "listNetworkProfile": {
    "resellerId": 10,
    "sponsorId": 108
  }
}
Response
{
  "status": { "code": 0, "msg": "OK" },
  "listNetworkProfile": [{
    "id": 105,
    "name": "Europe Standard Profile",
    "sponsorId": 108,
    "sponsorName": "SP05",
    "resellerId": 10,
    "resellerName": "Example Reseller",
    "allowedListId": 162
  }]
}

createLocationZone

Create a new location zone within a network profile. A location zone is a named group of mobile network operators (identified by TADIG code) used to define geographic coverage for package templates.

Before creating, the platform validates:

  • The zone name does not already exist for this reseller
  • All provided TADIG codes exist in the system
  • No existing zone has the identical operator set (to prevent duplicates)
  • All operators are present in the reseller tariff, provided by the sponsor, and within cost limits
Parameters
ParameterPresenceDescription
networkProfileIdRequiredOwning network profile
locationZoneNameRequiredDisplay name for the new zone
tadigListRequiredArray of TADIG operator codes
Request
{
  "createLocationZone": {
    "networkProfileId": 79,
    "locationZoneName": "Benelux",
    "tadigList": [ "NLMTN", "BELVOO", "LUXMT" ]
  }
}
Response · Success
{
  "status": { "code": 0, "msg": "OK" },
  "createLocationZone": {
    "newLZ": { "Id": 1924, "name": "Benelux" }
  }
}
Error 10001 · Unknown TADIG
{
  "status": { "code": 10001, "msg": "Unknown TADIG, see list in this answer" },
  "createLocationZone": { "invalidTadigs": [ "AZER1" ] }
}
Error 10002 · Duplicate operator set
{
  "status": { "code": 10002, "msg": "LZ with same operator already exist" },
  "createLocationZone": {
    "existingLZ": { "Id": 1923, "name": "Existing Benelux Zone" }
  }
}
Error 10003 · Operator not in tariff
{
  "status": { "code": 10003, "msg": "Some operator(s) not allowed in reseller tariff" },
  "createLocationZone": { "invalidTadigs": [ "JPNKD" ] }
}

Error Codes

All responses include a status.code field. Code 0 indicates success.

CodeIdentifierDescription
0OKRequest successful
1UNKNOWN_REQUESTThe operation name in the request body is not recognised
2INVALID_REQUESTRequest body is malformed or missing required fields
3UNEXPECTED_ERRORInternal server error — contact support if this persists
4DB_DUPLICATE_ENTRYA record with the same unique key already exists
5DB_DATA_INCONSISTENCYData integrity issue detected in the database
6DB_NOT_FOUNDThe referenced record does not exist
7DB_ERRORGeneric database error
8NO_API_ACCOUNT_FOR_RESELLERNo API account is configured for this reseller
9SRC_IP_NOT_AUTHORISEDThe client IP address is not on the allowlist
10INVALID_RESELLERThe provided reseller ID is invalid or inaccessible
11RESOURCE_NOT_VISIBLEThe resource exists but is not visible to the current API token
12RESOURCE_READ_ONLYThe resource cannot be modified
13SMS_API_ERRORError communicating with the SMS delivery service
14OPERATION_IMPOSSIBLEThe requested operation is not allowed in the current state
15HLR_API_ERRORError communicating with the HLR
16STEERING_API_ERRORError communicating with the steering service
17SUBS_END_OF_LIFESubscriber is in END_OF_LIFE state — operation not permitted
18TIMEOUTUpstream service did not respond in time
100TRAFFIC_CONTROL_LIMIT_EXCEEDEDAPI rate limit exceeded — slow down request frequency
10001UNKNOWN_TADIGOne or more TADIG codes in createLocationZone are not recognised
10002LZ_DUPLICATE_OPERATORSA location zone with the identical operator set already exists
10003OPERATOR_NOT_IN_TARIFFOperator(s) not present in the reseller tariff
10004OPERATOR_NOT_AVAILABLEOperator(s) not provided by sponsor or exceed cost limits