esims

Send install credentials to the traveler

Sends a hosted installation link by email or SMS. The eSIM must be installable. Email includes the link expiry time; SMS includes the link. The recipient opens the page to view the QR code and manual installation details. Links expire after seven days; resending leaves earlier links valid until expiry or explicit revocation.

A 202 response confirms acceptance for sending. Check List credential deliveries for the delivery outcome and any failure code. Reuse the same Idempotency-Key to recover an accepted send while its response is retained.

Returns 409 with E26012 when the selected channel is unavailable; choose another configured channel. New deliveries return 501 while hosted links are unavailable. A retained successful response can still be replayed during that time.

post/v1/esim/sims/{esim_id}/credentials/deliver

Request

  • Base URL: https://us1.platform.bird.com
  • URL: https://us1.platform.bird.com/v1/esim/sims/{esim_id}/credentials/deliver
  • Auth: one of:
    • HTTP bearer
    • API key in cookie bird_session

Path parameters

esim_idstring required
Example:esm_01krdgeqcxet5s7t44vh8rt9mg

eSIM ID.

Headers

Idempotency-Keystring

Client-supplied key. On operations supporting request deduplication, a retained response is replayed for duplicate requests with the same key within the idempotency window (3 hours by default). This protection requires a workspace, organization, or staff-account scope. User-only and unscoped unauthenticated operations, streams, and operations with a separate replay contract do not use this response replay.

On a supported operation, if idempotency protection is unavailable before execution, the API returns 503 IdempotencyUnavailable (E01033) without executing this attempt. Retry with backoff using the same key and request. An operation that takes effect before its response is retained can still execute again on retry.

Two distinct 409 errors signal misuse:

  • request_in_progress (E01004): The same key is currently being processed by a concurrent request. Wait briefly and retry. The lock expires within 30 seconds.
  • idempotency_key_reuse (E01005): The same key has already completed against a different request body or method. Generate a new key.

Recommended key format is <event-type>/<entity-id> (for example welcome-user/usr_abc123).

X-Workspace-Idstring

Workspace context for the request. Required for dashboard authentication and master keys. Workspace keys and access tokens already identify their workspace; send that workspace or omit the header. A different one is rejected.

X-Organization-Idstring

Organization context for the request. Required for dashboard authentication. An API key or access token carries its own organization, so send either that organization or no header at all; a different one is rejected.

Request body

tostring required

Recipient address. An email address for the email channel, an E.164 phone number for the sms channel.

channel'email' | 'sms' required

Channel the install credentials are delivered over.

localestring

A language tag in BCP-47 form, for example en or pt-BR.

Example request

{
  "to": "traveler@example.com",
  "locale": "pt-BR"
}

Response

The delivery was accepted. The returned id reappears on the esim.credentials.delivered or esim.credentials.delivery_failed event that settles this delivery.

idstring required
channel'email' | 'sms' required

Channel the install credentials are delivered over.

tostring required

Recipient address the message goes to.

status'pending' | 'delivered' | 'failed' required

Outcome of a credential delivery.

  • pending: accepted; the outcome has not settled.
  • delivered: the message reached the recipient's provider; terminal.
  • failed: the message could not be delivered; failure_code says why. Terminal.
failure_codestring nullable required

Why the delivery failed. Null unless status is failed. Open enum: treat unrecognized values as future failure kinds.

created_atstring date-time required

When the delivery was accepted.

settled_atstring date-time nullable required

When the outcome became known. Null while pending.

Example response

{
  "id": "edv_01krdgeqcxet5s7t44vh8rt9mg",
  "to": "traveler@example.com",
  "install_link": {
    "id": "eil_01krdgeqcxet5s7t44vh8rt9mg"
  }
}

Changes

No recorded changes to this operation across all 2 revisions of this API.