# Get the setup data of a booking

> Get the original order of an eSIM booking: the eSIM with its activation data and the installation steps as HTML, to build your own confirmation or setup page.

Endpoint: `GET /esims/bookings/{booking_id}/setup-instructions`

Source: https://fx-port.com/docs/api/get-esim-setup-instructions

`GET /api/v1/esims/bookings/{booking_id}/setup-instructions`

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

Use the `booking_id` of the order (`FX-` followed by a number). It works for orders only: a topup booking has no setup data. The activation data is sensitive: show it only to the traveler who owns the eSIM.

This endpoint replaces the older `GET /esims/bookings/{booking_id}/setup-url`, which is deprecated: it answers with the install links only and a `deprecated_endpoint` warning.

## Request

### Path parameters

- `booking_id` (string, required): The booking reference returned when the eSIM was ordered. At most 100 characters.

### Example request

```bash
curl https://api.fx-port.com/api/v1/esims/bookings/FX-1793546602916/setup-instructions \
  -H "Authorization: Bearer fxp_test_YOUR_KEY"
```

## Response

### 200: The setup data of the booking.

- `success` (boolean): `true` when the data was returned.
- `data` (object): The original order of a booking: the eSIM with its activation data and the installation steps.
  - `code` (string, deprecated): Legacy name: use `order_id`. The supplier's order code. The older name of `order_id`: same value, use `order_id`.
  - `order_id` (string): The supplier's order code. The snake_case twin of `code`, with the same value: use this name.
  - `currency` (string): Currency of `price`: your agency currency.
  - `package_id` (string): The package that was ordered.
  - `quantity` (integer): Always `1`.
  - `type` (string): Always `sim`.
  - `description` (string, nullable): The `description` of the order.
  - `esim_type` (string): Kind of eSIM plan, for example `local`.
  - `validity` (integer): Validity in days.
  - `package` (string): Name of the package: operator, data allowance and validity.
  - `data` (string): Data allowance as text.
  - `price` (number): The price charged to the traveler, in your agency currency. Same as `total_price`.
  - `created_at` (string): When the supplier created the order: `YYYY-MM-DD HH:MM:SS`, UTC, without a zone.
  - `manual_installation` (string): HTML with the steps to install the eSIM by entering the activation data by hand. Show it as HTML or strip the tags.
  - `qrcode_installation` (string): HTML with the steps to install the eSIM by scanning the QR code.
  - `installation_guides` (object): Links to the supplier's general installation guide, by language code.
  - `text` (integer, nullable): SMS included, or null.
  - `voice` (integer, nullable): Voice minutes included, or null.
  - `sims` (array of object): The eSIMs of the order. One for an eSIM order.
    - `created_at` (string, nullable): When the supplier created the eSIM: `YYYY-MM-DD HH:MM:SS`, UTC, without a zone.
    - `iccid` (string): The ICCID of the eSIM.
    - `lpa` (string, nullable): Host of the SM-DP+ server (the LPA address).
    - `imsis` (string, nullable): IMSI of the profile, when the supplier returns it.
    - `qrcode` (string, nullable): The activation string the QR code encodes. Sensitive: show it only to the traveler.
    - `qrcode_url` (string, nullable): Link to the QR code image.
    - `apn_type` (string, nullable): `automatic` or `manual`.
    - `apn_value` (string, nullable): The APN to enter on a manual setup, or `N/A`.
    - `is_roaming` (boolean, nullable): Whether the eSIM works through roaming.
    - `confirmation_code` (string, nullable): Confirmation code to enter at installation, when required.
    - `apn` (object, nullable): APN settings per operating system.
      - `ios` (object): Access point name (APN) settings for one operating system.
        - `apn_type` (string): `automatic` when the device configures the access point name by itself, `manual` when the traveler has to enter it.
        - `apn_value` (string, nullable): The access point name to enter on a manual setup; null or `N/A` when none is needed.
      - `android` (object): Access point name (APN) settings for one operating system.
        - `apn_type` (string): `automatic` when the device configures the access point name by itself, `manual` when the traveler has to enter it.
        - `apn_value` (string, nullable): The access point name to enter on a manual setup; null or `N/A` when none is needed.
    - `msisdn` (string, nullable): Phone number of the eSIM, for the rare plans that include one.
    - `direct_apple_installation_url` (string, nullable): Link that starts the installation on an iPhone.
    - `direct_android_installation_url` (string, nullable): Link that starts the installation on an Android phone that supports it.
    - `sharing` (object, nullable): A shareable installation page for the eSIM.
      - `access_code` (number): Code the traveler enters on the sharing page.
      - `link` (string): Page where the traveler can open the eSIM details and QR code.
  - `total_price` (number): The price to charge the traveler, in your agency currency.
  - `retail_price` (number): The price to charge the traveler, in your agency currency. Another name of `total_price`, with the same value.
  - `agency_currency` (string): Same as `currency`.

```json
{
  "environment": "sandbox",
  "success": true,
  "data": {
    "code": "20261101-106852",
    "order_id": "20261101-106852",
    "currency": "DZD",
    "package_id": "france-in-7days-1gb",
    "quantity": 1,
    "type": "sim",
    "description": "Order for John Smith",
    "esim_type": "local",
    "validity": 7,
    "package": "KPN France Data only-1 GB - 7 days",
    "data": "1 GB",
    "price": 468.84,
    "created_at": "2026-11-01 15:23:22",
    "manual_installation": "<p><b>eSIM name:</b> Élan</p><p><b>Coverage: </b>France</p><p><b>To manually activate the eSIM on your eSIM capable device:</b></p><ol><li>Settings > Cellular/Mobile > Add Cellular/Mobile Plan.</li>...</ol>",
    "qrcode_installation": "<p><b>eSIM name:</b> Élan</p><p><b>Coverage: </b>France</p><p><b>To activate the eSIM by scanning the QR code on your eSIM capable device you need to print or display this QR code on another device:</b></p>...",
    "installation_guides": {
      "en": "https://www.airalo.com/help/getting-started-with-airalo"
    },
    "text": null,
    "voice": null,
    "sims": [
      {
        "created_at": "2026-11-01 15:23:22",
        "iccid": "8900000540463077957",
        "lpa": "lpa.airalo.com",
        "imsis": null,
        "qrcode": "LPA:1$lpa.airalo.com$DUMMY-2610301358-iKFxr-44741",
        "qrcode_url": "https://sandbox.airalo.com/qr?expires=1879860202&id=473564&signature=...",
        "apn_type": "automatic",
        "apn_value": "N/A",
        "is_roaming": true,
        "confirmation_code": null,
        "apn": {
          "ios": {
            "apn_type": "automatic",
            "apn_value": "N/A"
          },
          "android": {
            "apn_type": "automatic",
            "apn_value": "N/A"
          }
        },
        "msisdn": null,
        "direct_apple_installation_url": "https://esimsetup.apple.com/esim_qrcode_provisioning?carddata=LPA:1$lpa.airalo.com$DUMMY-2610301358-iKFxr-44741",
        "direct_android_installation_url": "https://esimsetup.android.com/esim_qrcode_provisioning?carddata=LPA:1$lpa.airalo.com$DUMMY-2610301358-iKFxr-44741",
        "sharing": {
          "access_code": 8803,
          "link": "https://esims.cloud/v8hy7-usgkq6wg"
        }
      }
    ],
    "total_price": 468.84,
    "retail_price": 468.84,
    "agency_currency": "DZD"
  }
}
```

## Errors

| Status | Code | Example message |
| --- | --- | --- |
| 400 | `invalid_booking_id` | booking_id is not a valid booking reference (received '!'). |
| 404 | `booking_not_found` | No eSIM booking was found for this booking_id. |
| 404 | `not_found` | Setup data not available for this booking |

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

## Related guides

- [Setup and installation instructions](https://fx-port.com/docs/esims/instructions.md)
