eSIM Go Inventory API
Reports the unassigned bundle inventory held by your organisation and supports refunding an unused bundle back from inventory.
Reports the unassigned bundle inventory held by your organisation and supports refunding an unused bundle back from inventory.
openapi: 3.0.1
info:
title: eSIM Go API
description: >-
REST API for the eSIM Go connectivity and travel-data platform. Resellers and
brands use it to browse the data-bundle catalogue, place and track orders, assign
bundles to eSIMs, retrieve install/QR provisioning details, manage inventory,
look up network coverage, and receive usage callbacks. Authentication is via the
X-API-Key header.
termsOfService: https://www.esim-go.com
contact:
name: eSIM Go Support
url: https://docs.esim-go.com
version: '2.4'
servers:
- url: https://api.esim-go.com/v2.4
security:
- ApiKeyAuth: []
tags:
- name: Catalogue
description: Browse data bundles available to your organisation.
- name: Orders
description: Validate, place, and retrieve bundle orders.
- name: eSIMs
description: Manage eSIMs, bundle assignments, and install details.
- name: Inventory
description: View and refund unassigned bundle inventory.
- name: Networks
description: Per-country network coverage data.
- name: Organisation
description: Organisation account details and balance.
paths:
/catalogue:
get:
operationId: getCatalogue
tags:
- Catalogue
summary: Get Bundle catalogue
description: >-
Lists all data bundles available to your organisation for ordering. Bundle
names returned here can be used with the /orders endpoint to place an order.
parameters:
- name: page
in: query
schema:
type: integer
description: Page number to return.
- name: perPage
in: query
schema:
type: integer
description: Number of bundles per page.
- name: direction
in: query
schema:
type: string
enum: [asc, desc]
description: Sort direction.
- name: orderBy
in: query
schema:
type: string
description: Column to sort by.
- name: description
in: query
schema:
type: string
description: Wildcard search filter on bundle description.
- name: group
in: query
schema:
type: string
description: Filter by Bundle Group.
- name: countries
in: query
schema:
type: string
description: Comma-separated ISO country codes.
- name: region
in: query
schema:
type: string
description: Filter by region.
responses:
'200':
description: A page of bundles available to the organisation.
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogueResponse'
/catalogue/{bundleName}:
get:
operationId: getCatalogueBundle
tags:
- Catalogue
summary: Get Bundle details from catalogue
description: Retrieves the full detail of a single bundle by its name.
parameters:
- name: bundleName
in: path
required: true
schema:
type: string
description: The unique bundle name/identifier.
responses:
'200':
description: Bundle detail.
content:
application/json:
schema:
$ref: '#/components/schemas/Bundle'
/orders:
get:
operationId: listOrders
tags:
- Orders
summary: List orders
description: Lists orders placed by your organisation.
parameters:
- name: page
in: query
schema:
type: integer
- name: perPage
in: query
schema:
type: integer
responses:
'200':
description: A list of orders.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderList'
post:
operationId: createOrder
tags:
- Orders
summary: Create orders
description: >-
Validates or processes an order. Set type to "validate" to price-check an
order without charging, or "transaction" to place it. When assign is true
and ICCIDs are supplied, ordered bundles are assigned to those eSIMs.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderRequest'
responses:
'200':
description: Order validation or transaction result.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderResponse'
/orders/{orderReference}:
get:
operationId: getOrder
tags:
- Orders
summary: Get order detail
description: Retrieves the detail of a single order by its reference.
parameters:
- name: orderReference
in: path
required: true
schema:
type: string
responses:
'200':
description: Order detail.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderResponse'
/esims:
get:
operationId: listEsims
tags:
- eSIMs
summary: List eSIMs
description: >-
Retrieves all eSIMs currently assigned to your organisation, with options
for filtering and pagination.
parameters:
- name: page
in: query
schema:
type: integer
- name: perPage
in: query
schema:
type: integer
responses:
'200':
description: A list of eSIMs.
content:
application/json:
schema:
$ref: '#/components/schemas/EsimList'
put:
operationId: updateEsim
tags:
- eSIMs
summary: Update eSIM Details
description: Updates editable details (such as a customer reference) on an eSIM.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEsimRequest'
responses:
'200':
description: The updated eSIM.
content:
application/json:
schema:
$ref: '#/components/schemas/Esim'
/esims/{iccid}:
get:
operationId: getEsim
tags:
- eSIMs
summary: Get eSIM details
description: Retrieves the details and status of a single eSIM by ICCID.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
responses:
'200':
description: eSIM detail.
content:
application/json:
schema:
$ref: '#/components/schemas/Esim'
/esims/apply:
post:
operationId: applyBundleToEsim
tags:
- eSIMs
summary: Apply Bundle to an eSIM
description: >-
Applies an existing bundle from inventory to an eSIM. Optionally allows
reassignment to a new compatible eSIM if the supplied one is incompatible.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplyBundleRequest'
responses:
'200':
description: The result of applying the bundle, including install details.
content:
application/json:
schema:
$ref: '#/components/schemas/AssignmentResult'
/esims/assignments:
get:
operationId: getEsimInstallDetails
tags:
- eSIMs
summary: Get eSIM Install Details
description: >-
Returns install/activation details for eSIMs from one or more orders or
bundle assignments, including matchingId, SM-DP+ address, and Apple install
URL used to build the LPA QR code (LPA:1$smdpAddress$matchingId).
parameters:
- name: reference
in: query
schema:
type: string
description: Order reference to retrieve assignments for.
- name: iccid
in: query
schema:
type: string
description: Filter assignments by a specific eSIM ICCID.
responses:
'200':
description: Install details for the matching eSIM assignments.
content:
application/json:
schema:
$ref: '#/components/schemas/InstallDetailsResponse'
/esims/{iccid}/history:
get:
operationId: getEsimHistory
tags:
- eSIMs
summary: Get eSIM history
description: Returns the lifecycle and status-change history of an eSIM.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
responses:
'200':
description: eSIM history records.
content:
application/json:
schema:
type: object
/esims/{iccid}/location:
get:
operationId: getEsimLocation
tags:
- eSIMs
summary: Get eSIM Location
description: Returns the last known network/country location of an eSIM.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
responses:
'200':
description: eSIM location.
content:
application/json:
schema:
type: object
/esims/{iccid}/sms:
post:
operationId: sendEsimSms
tags:
- eSIMs
summary: Send SMS to eSIM
description: Sends an SMS message to the eSIM.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
message:
type: string
from:
type: string
responses:
'200':
description: SMS accepted.
/esims/{iccid}/bundles:
get:
operationId: listEsimBundles
tags:
- eSIMs
summary: List Bundles applied to eSIM
description: Lists all bundles that have been applied to the eSIM.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
responses:
'200':
description: Applied bundles.
content:
application/json:
schema:
type: object
/esims/{iccid}/bundles/{name}:
get:
operationId: getEsimBundleStatus
tags:
- eSIMs
summary: Get applied Bundle status
description: Retrieves the status and remaining allowance of an applied bundle.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
- name: name
in: path
required: true
schema:
type: string
responses:
'200':
description: Applied bundle status.
content:
application/json:
schema:
type: object
delete:
operationId: revokeEsimBundle
tags:
- eSIMs
summary: Revoke applied Bundle
description: Revokes an applied bundle from the eSIM.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
- name: name
in: path
required: true
schema:
type: string
responses:
'200':
description: Bundle revoked.
/esims/{iccid}/compatible-bundle:
get:
operationId: checkBundleCompatibility
tags:
- eSIMs
summary: Check eSIM and Bundle Compatibility
description: Checks whether a bundle is compatible with the given eSIM.
parameters:
- name: iccid
in: path
required: true
schema:
type: string
- name: name
in: query
schema:
type: string
description: Bundle name to test for compatibility.
responses:
'200':
description: Compatibility result.
content:
application/json:
schema:
type: object
properties:
compatible:
type: boolean
/inventory:
get:
operationId: getInventory
tags:
- Inventory
summary: Get bundle inventory
description: >-
Returns the unassigned bundle inventory held by your organisation, grouped
by bundle name with available quantities.
responses:
'200':
description: Bundle inventory.
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryResponse'
/inventory/refund:
post:
operationId: refundInventoryBundle
tags:
- Inventory
summary: Refund bundle from inventory
description: Refunds an unused bundle held in inventory back to the organisation balance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Bundle name to refund.
quantity:
type: integer
responses:
'200':
description: Refund result.
content:
application/json:
schema:
type: object
/networks:
get:
operationId: getNetworks
tags:
- Networks
summary: Get Country Network Data
description: >-
Returns per-country network coverage data, listing the mobile networks and
supported speeds available for eSIM connectivity.
parameters:
- name: countries
in: query
schema:
type: string
description: Comma-separated ISO country codes to filter coverage.
responses:
'200':
description: Country network data.
content:
application/json:
schema:
$ref: '#/components/schemas/NetworksResponse'
/organisation:
get:
operationId: getOrganisation
tags:
- Organisation
summary: Get Current Organisation Details
description: Returns the current organisation account details, including balance and currency.
responses:
'200':
description: Organisation detail.
content:
application/json:
schema:
$ref: '#/components/schemas/Organisation'
/organisation/groups:
get:
operationId: getBundleGroups
tags:
- Organisation
summary: Get Bundle Groups
description: Returns the bundle groups available to the organisation.
responses:
'200':
description: Bundle groups.
content:
application/json:
schema:
type: object
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: >-
Organisation API key. Find it under Account Settings -> API Details in your
eSIM Go account and send it in the X-API-Key request header.
schemas:
CatalogueResponse:
type: object
properties:
bundles:
type: array
items:
$ref: '#/components/schemas/Bundle'
pageCount:
type: integer
rows:
type: integer
Bundle:
type: object
properties:
name:
type: string
description: Unique bundle identifier.
description:
type: string
groups:
type: array
items:
type: string
countries:
type: array
items:
$ref: '#/components/schemas/Country'
dataAmount:
type: integer
description: Data allowance in MB.
duration:
type: integer
description: Validity period of the bundle in days.
speed:
type: array
items:
type: string
autostart:
type: boolean
unlimited:
type: boolean
roamingEnabled:
type: array
items:
type: string
price:
type: number
description: Cost in the organisation's currency.
billingType:
type: string
example: FixedCost
Country:
type: object
properties:
name:
type: string
region:
type: string
iso:
type: string
CreateOrderRequest:
type: object
required:
- type
- order
properties:
type:
type: string
enum: [validate, transaction]
description: '"validate" to price-check, "transaction" to place the order.'
assign:
type: boolean
description: Whether to assign ordered bundles to the supplied eSIMs.
order:
type: array
items:
$ref: '#/components/schemas/OrderItem'
OrderItem:
type: object
properties:
type:
type: string
example: bundle
quantity:
type: integer
item:
type: string
description: Bundle name/identifier.
iccids:
type: array
items:
type: string
allowReassign:
type: boolean
profileID:
type: string
OrderResponse:
type: object
properties:
order:
type: array
items:
$ref: '#/components/schemas/OrderLine'
total:
type: number
currency:
type: string
valid:
type: boolean
createdDate:
type: string
format: date-time
assigned:
type: boolean
status:
type: string
statusMessage:
type: string
orderReference:
type: string
runningBalance:
type: number
OrderLine:
type: object
properties:
type:
type: string
item:
type: string
quantity:
type: integer
subTotal:
type: number
pricePerUnit:
type: number
esims:
type: array
items:
$ref: '#/components/schemas/InstallDetails'
OrderList:
type: object
properties:
orders:
type: array
items:
$ref: '#/components/schemas/OrderResponse'
pageCount:
type: integer
rows:
type: integer
ApplyBundleRequest:
type: object
properties:
name:
type: string
description: Bundle name to apply.
iccid:
type: string
allowReassign:
type: boolean
startTime:
type: string
format: date-time
AssignmentResult:
type: object
properties:
esims:
type: array
items:
$ref: '#/components/schemas/InstallDetails'
assigned:
type: boolean
InstallDetailsResponse:
type: object
properties:
esims:
type: array
items:
$ref: '#/components/schemas/InstallDetails'
InstallDetails:
type: object
properties:
iccid:
type: string
matchingId:
type: string
description: Activation code used with the SM-DP+ address to build the LPA QR.
smdpAddress:
type: string
description: SM-DP+ server address used for eSIM activation.
rspUrl:
type: string
description: Full LPA activation string (LPA:1$smdpAddress$matchingId).
appleInstallUrl:
type: string
description: Universal link install URL for iOS 17.4+ devices.
profileStatus:
type: string
pin:
type: string
puk:
type: string
firstInstalledDateTime:
type: string
format: date-time
Esim:
type: object
properties:
iccid:
type: string
matchingId:
type: string
smdpAddress:
type: string
profileStatus:
type: string
appleInstallUrl:
type: string
firstInstalledDateTime:
type: string
format: date-time
customerRef:
type: string
assignedDate:
type: string
format: date-time
EsimList:
type: object
properties:
esims:
type: array
items:
$ref: '#/components/schemas/Esim'
pageCount:
type: integer
rows:
type: integer
UpdateEsimRequest:
type: object
properties:
iccid:
type: string
customerRef:
type: string
InventoryResponse:
type: object
properties:
bundles:
type: array
items:
type: object
properties:
name:
type: string
desc:
type: string
available:
type: integer
description: Quantity of this bundle available in inventory.
NetworksResponse:
type: object
properties:
countryNetworks:
type: array
items:
type: object
properties:
name:
type: string
iso:
type: string
networks:
type: array
items:
type: object
properties:
name:
type: string
brandName:
type: string
mcc:
type: string
mnc:
type: string
speed:
type: array
items:
type: string
Organisation:
type: object
properties:
name:
type: string
balance:
type: number
currency:
type: string
organisationGroups:
type: array
items:
type: string
UsageCallback:
type: object
description: Payload POSTed to the partner-configured eSIM usage callback URL.
properties:
iccid:
type: string
bundle:
type: string
alertType:
type: string
description: Usage threshold or state change that triggered the callback.
remaining:
type: integer
description: Remaining data allowance in bytes.
timestamp:
type: string
format: date-time