# List eSIM compatible devices

> List the devices known to support eSIM, to check a traveler's phone before the sale.

Endpoint: `GET /esims/compatible-devices`

Source: https://fx-port.com/docs/api/list-esim-compatible-devices

`GET /api/v1/esims/compatible-devices`

Requires an API key with **Read** permission; a **Read+Write** key works too.

The list has about 630 entries and is not paginated. It is cached and refreshed about once a week; `meta.cached_at` tells when. Match on `model` (the manufacturer's identifier) or `name`; the case of `brand` differs between entries.

A `202` means the list is still loading after a restart and a `503` that the device fetcher is not running yet: wait a few seconds and retry.

## Request

### Example request

```bash
curl https://api.fx-port.com/api/v1/esims/compatible-devices \
  -H "Authorization: Bearer fxp_test_YOUR_KEY"
```

## Response

### 200: The devices.

- `success` (boolean): `true` when the list was returned.
- `data` (array of object): The devices. About 630 entries, not paginated.
  - `model` (string): The manufacturer's model identifier.
  - `os` (string): Operating system family. One of `android`, `ios`.
  - `brand` (string): Manufacturer, as the supplier spells it (the case differs between entries).
  - `name` (string): Marketing name of the device.
- `meta` (object): Facts about the list.
  - `total_devices` (integer): Number of devices in `data`.
  - `cached_at` (string): When the list was fetched from the supplier: the server's clock without a zone, for example `2026-11-01T15:07:43.957236`. The list is refreshed about once a week.
  - `cache_age_days` (number): Age of the list in days.

```json
{
  "environment": "sandbox",
  "success": true,
  "data": [
    {
      "model": "T803D",
      "os": "android",
      "brand": "Alcatel",
      "name": "V3 Ultra"
    },
    {
      "model": "iPhone15,2",
      "os": "ios",
      "brand": "Apple",
      "name": "iPhone 14 Pro"
    }
  ],
  "meta": {
    "total_devices": 631,
    "cached_at": "2026-11-01T15:07:43.957236",
    "cache_age_days": 0.01
  }
}
```

### 202: The list is still loading. `success` is `false` and `data` is empty: retry in a few seconds.

- `success` (boolean): Always `false`: the data is not available yet.
- `message` (string): What is missing and that it is still loading.
- `data` (array of object): Always empty.
- `meta` (object): Empty for a catalog that is loading.

```json
{
  "environment": "sandbox",
  "success": false,
  "message": "No cached devices available. Device fetcher may still be loading initial data.",
  "data": []
}
```

## Errors

| Status | Code | Example message |
| --- | --- | --- |


See [Errors](https://fx-port.com/docs/errors.md) for every code and how to react.

## Related guides

- [Package catalog](https://fx-port.com/docs/esims/packages.md)
