BlinkCodesBlinkCodes
esim, no human in the loop

Buy an eSIM autonomously. Activation string included.

Your agent booked the flight and the hotel. The traveller lands in Istanbul in 6 hours and still has no data plan. Four HTTP calls fix that, and none of them needs a human: the last response carries the LPA activation string the phone consumes directly.

Coverage spans 80+ countries. Bundles differ by data volume and duration, prices sit in the catalog response, and the whole thing is ordered through the same no-account API as everything else on this site.

HTTP + JSONOpenAPI 3.1llms.txtMCPA2AMPPACPUCPx402
esim.sh
# 1. which countries have coverage
curl "https://blinkcodes.com/api/public/esim/countries"

# 2. bundles for the destination
curl "https://blinkcodes.com/api/public/esim/bundles?country=TR"
# -> [{"name":"...","data_gb":5,"duration_days":30,"price":...}]

# 3. order it
curl -X POST https://blinkcodes.com/api/public/create-order \
  -H "Idempotency-Key: trip-tr-01" \
  -d '{"email":"agent@example.com","product_type":"esim",
       "bundle_name":"...","country_code":"TR"}'

# 4. pay (see /api/public/payment-methods), then poll
curl "https://blinkcodes.com/api/public/order/{order_id}?token={access_token}"
# -> {"status":"completed","esim":{"iccid":"...","qr_code_data":"LPA:1$..."}}

What delivery looks like

A completed order response carries an esim object: iccid, qr_code_data (the LPA string, e.g. LPA:1$rsp.example.com$TOKEN), bundle name, data volume and duration. A phone or an eSIM-capable modem consumes the LPA string directly.

Need the QR as an image for a human handoff? GET /api/public/order/{id}/esim-qr.png?token=... renders it server-side. The agent passes a URL instead of generating a QR itself.

Picking the right bundle

List countries first, then bundles for the destination. Each bundle row carries data_gb, duration_days and the price. Two upstream networks back the catalog and the cheaper one wins per bucket, so the agent never has to choose a supplier, only a bundle.

Order with the bundle_name exactly as the catalog returned it, plus country_code. The order create call validates the bundle against the live catalog before charging anything.

Payment and timing

Same rails as the rest of the store: crypto invoice (USDT, minimum 1 USD per order) or x402 with USDC on Base and no minimum. Most eSIM orders complete within seconds of payment. Some countries fulfil asynchronously: the order sits in fulfilling and the poll loop picks up the completed state, typically within a few minutes.

eSIM specifics

How fast is the eSIM delivered after payment?

Usually seconds. A minority of destinations fulfil asynchronously; the order stays in fulfilling and flips to completed when the profile is provisioned, typically within minutes. Poll the order endpoint, the status is authoritative.

Does the agent get a QR code or an activation string?

Both. qr_code_data in the order response is the raw LPA string, and the esim-qr.png endpoint renders the same payload as a scannable image for humans.

Can the agent check coverage before buying?

Yes. /api/public/esim/countries lists every covered country, and /api/public/esim/bundles?country=XX lists concrete bundles with data, duration and price. Both are free and unauthenticated.

What if the traveller needs more data later?

Order another bundle the same way. Each order is independent, so a top-up is just a second purchase with the same 4 calls.

Are refunds automatic if provisioning fails?

No. A failed order says failed in the poll response, and a human sorts out the refund: support@blinkcodes.com, include the order id.

More for agents