---
title: "Get an eSIM product by id"
method: GET
path: "/esim_products/{id}"
tags: ["eSIM"]
---

# Get an eSIM product by id

`GET /esim_products/{id}`

## Request

- Base URL: `https://dashboard.voidmob.com/api/v1`
- URL: `https://dashboard.voidmob.com/api/v1/esim_products/{id}`
- Auth: HTTP bearer

Returns a single eSIM product from the catalog. Hidden products are
treated as non-existent. Cacheable for 60 seconds.

## Path parameters

- `id` string, required

## Response `200`

The eSIM product.

- EsimProductEnvelope
  - `success` true, required
  - `data` object, required
    - `product` EsimProductResource, required
      - `id` string, required: Public product identifier (prefixed `prod_`).
      - `title` string, required: Plan name as the VoidMob dashboard shows it. Data and validity are not repeated in the name; read them from `data_limit_gb` / `data_unlimited` and `validity_days`.
      - `full_title` string, required: Plan name with its data allowance and validity, for listings that show one line per plan. Built from `title`, so the two always agree.
      - `countries` string[], required: ISO-3166-1 alpha-2 country codes (uppercase) covered by this plan.
      - `region` string, nullable, required: Regional grouping label, e.g. "Europe". Null for single-country plans.
      - `country_count` integer, required: Number of countries covered.
      - `routing_location` string, nullable, required: Network routing hint for this eSIM (e.g. country where its data egresses). Null when not applicable.
      - `data_limit_gb` number, nullable, required: Data allowance in GB. Plans sold as 1 TB report 1024. Null when `data_unlimited` is true.
      - `data_unlimited` boolean, required: Whether the plan has an unlimited data allowance.
      - `validity_days` integer, required: Plan validity in days from activation.
      - `network_type` string, required: Network generations the plan uses.
      - `speed` string, required: Speed policy, e.g. "Unrestricted", "Limited" or "Total 30 GB at full speed, 2Mbps speed cap afterwards".
      - `speed_note` string, nullable, required: Plain-language explanation of a capped speed. Null when the speed needs no explanation.
      - `activation_policy` string, required: When the plan's validity starts.
      - `networks` EsimProductNetwork[], required: Carrier networks the plan uses, one entry per country and carrier, sorted by country then name. Names are the network the eSIM attaches to, not a retail brand. A territory with no network of its own (Vatican City, San Marino) lists the carriers of the host country it is covered by. Refreshed about weekly. A covered country has no entry when its carriers are not published, and the list is empty for a plan added since the last refresh and for top-up packages (a top-up runs on its eSIM's networks).
        - `country` string, required: ISO-3166-1 alpha-2 country code (uppercase) where the carrier serves this plan.
        - `name` string, required: Carrier name.
        - `has_4g` boolean, required
        - `has_5g` boolean, required
      - `features` EsimProductFeatures, required
        - `has_5g` boolean, required
        - `has_hotspot` boolean, required
        - `has_calls` boolean, required
        - `has_sms` boolean, required
        - `supports_topup` boolean, required
        - `phone_number_prefix` string, nullable, required: Dial code and country of the phone number included with the plan, e.g. "+44 (United Kingdom)". Null for data-only plans.
        - `call_minutes` integer, nullable, required: Included call minutes. Null when calls are unlimited, when the plan has no calls, or when the allowance is not published.
        - `calls_unlimited` boolean, required: True when the plan includes unlimited calls.
        - `voice_note` string, nullable, required: How the included number and calls work. Null for data-only plans.
      - `price_cents` integer, required: Per-caller listed price in USD cents.
      - `currency` 'USD', required

## Other responses

- `401`: 401 - Authentication required.
- `404`: 404 - Product not found.
- `429`: 429 - Rate limit exceeded. Retry after the indicated interval.
- `500`: 500 - An unexpected error occurred. Please try again.

---

[API](https://skmtc.dev/voidmob/apis/voidmob-public-api.md) · [All operations](https://skmtc.dev/voidmob/apis/voidmob-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/voidmob/apis/voidmob-public-api/revisions/066023313ebe?raw)
