Products
List products
Every product you can order, at your own wholesale price
GET
List products
The full catalogue: every
Prices are strings so they never arrive as
option_id you can send to
Create order, with what it covers and what you are
invoiced for it. It is the same data as the catalogue CSV, kept current.
Prices move when we reprice. A decrease applies straight away; an increase is
announced in writing 7 days before it applies, as your agreement sets out. So
fetch this once a day and cache it, rather than per order or on every page
view.
Query parameters
All optional. Without them you get the whole catalogue.string
An ISO 3166-1 alpha-2 code, such as
JP. Returns every plan that works there:
the country’s own plans and every regional plan that covers it.string
country or region.string
A country or region name exactly as the response spells it, such as
Japan
or Europe (42 Countries). Case does not matter. An unknown name returns an
empty list, not the whole catalogue.Signing a GET
Same five lines as any other request, with the body hash taken over the empty string — see Authentication. The path you sign is the path alone, without the query string:Compression
SendAccept-Encoding: gzip and the whole catalogue arrives as about 130 KB
rather than about 4 MB. Most HTTP clients send the header and decompress for
you.
Response
200 with a products array, one object per orderable product, sorted by
country or region, then data allowance, then duration.
string
The only value that goes in an order, as
option_id.string
country or region.string
The plan’s name for where it works, such as
Japan or
Europe (42 Countries).object[]
Every country the plan covers: one entry on a country plan, each listed
country on a regional one. Match against your own data by
iso_code.integer
How long the plan runs once activated.
string
Daily allowance as a label:
500MB, 1GB, 2GB, 3GB or Unlimited.
Unlimited plans run at full speed for the first 5GB each day, then at
1Mbps — advertise them with that condition.integer
The same, in megabytes. On
Unlimited plans this is 5120, the full-speed
part of the day — not a cap. Show data to travellers, not this.string
Networks the profile roams on.
string
Speed once the day’s allowance is used up.
string
Supported generations, such as
4G(LTE) / 5G.integer
Days from purchase within which the eSIM must be activated.
string
Access point name the device uses.
string
What you are invoiced per unit, in USD, two decimals. Specific to your
account. Orders already placed keep the price they were placed at.
4.5 or with a floating-point tail.
The catalogue CSV
We may also send you the same catalogue as two CSV files — one for single-country plans, one for regional plans — for example with your price list. Use them to review prices or seed a database; the API stays the current source. Each column maps to a field above:
The header names are the ones shown above, spaces and parentheses included.
Locate columns by header rather than by position. A CSV is a snapshot: when it
and the API disagree, the API is right.
In sandbox
Sandbox returns its own catalogue at your sandbox price. Option IDs are the same as in production, so an integration built against sandbox works unchanged.Errors
401 Unauthorized
Missing, expired or invalid signature headers. See Authentication.429 Too Many Requests
10 requests per minute, counted against your access key. The response is the whole catalogue — about 11,000 products — so cache it.Last modified on October 28, 2026
List products