---
title: "Get eSIM install credentials"
canonical: "https://bird.com/docs/api/reference/get-esim-credentials"
---

# Get eSIM install credentials

`GET /v1/esim/sims/{esim_id}/credentials`

Returns installation details for an eSIM, including an iOS installation link, an activation code, and manual setup components. Android installation links and hosted QR image URLs are currently unavailable and return null. Read `instructions` for device-specific steps in the returned language.

Keep installation details private: they can grant access to the profile. A null `apn`, `confirmation_code`, or `data_roaming_required` means the requirement is unknown; it does not mean the setting is unnecessary. Returns `409` when the profile cannot be installed and `503` when credentials are temporarily unavailable.

## Code samples

**CLI**

```sh
bird esim credentials get <esim-id>
```

Examples: [CLI](/docs/api/reference/get-esim-credentials.cli.md) · [MCP](/docs/api/reference/get-esim-credentials.mcp.md) · [cURL](/docs/api/reference/get-esim-credentials.curl.md)

## Example response `200`

```json
{
  "esim_id": "esm_01krdgeqcxet5s7t44vh8rt9mg",
  "activation_code": "LPA:1$smdp.example.com$K2-1AbCdE-2FgHiJ",
  "smdp_address": "smdp.example.com",
  "apn": "internet",
  "instructions": {
    "language": "en"
  }
}
```

## Path parameters

- `esim_id` (string): eSIM ID.

## Response body

- `esim_id` (string, required)
- `ios_install_url` (nullable string, required): One-tap install link for iOS 17.4 and later, derived from the activation code. Null when a valid link cannot be derived for this eSIM.
- `android_install_url` (nullable string, required): Android installation link. Currently unavailable; returns null. Use the returned Android instructions for manual setup.
- `qr_code_url` (nullable string, required): Hosted QR image URL. Currently unavailable; returns null. Use the activation code in your own installation flow or provide a hosted installation page.
- `activation_code` (string, required): Raw activation string for manual entry in device settings.
- `smdp_address` (string, required): SM-DP+ server address, for building a custom install flow.
- `matching_id` (string, required): Matching ID component of the activation code, for building a custom install flow.
- `confirmation_code` (nullable string): Confirmation code requested during installation, when available. Null means the requirement is unknown; it does not confirm that a code is unnecessary.
- `apn` (nullable string, required): Access point name for mobile data, when available. Null means no APN information is available; it does not confirm automatic configuration.
- `data_roaming_required` (nullable boolean, required): Whether data roaming must be enabled. Null means the requirement is unknown. When true, `instructions` includes a step to enable roaming.
- `instructions` (object, required): Step-by-step install instructions, covering whichever of the fields in this response carry a value, in the closest language available for the Accept-Language request header. Its `language` field names the one served.
- `instructions.language` (string, required): BCP-47 tag of the language `ios` and `android` are written in. This is the language served, which is the closest match to Accept-Language, or English when nothing closer is available. One list never mixes two languages.
- `instructions.ios` (array of string, required): Ordered steps for iOS devices.
- `instructions.android` (array of string, required): Ordered steps for Android devices.

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
