A wholesale data network, by API
Provision eSIMs, meter usage and top up balances programmatically. A clean REST API with webhooks, generous rate limits and SDKs for the languages you already use.
Instant provisioning
Create an eSIM and return an install QR in a single call.
Usage webhooks
Stream real-time consumption and balance events to your backend.
Idempotent + versioned
Safe retries, predictable payloads, and no breaking changes without a version bump.
curl https://api.pilotesim.example/v1/esims \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"country": "JP",
"topup_usd": 25
}'
# → 201 Created
# {
# "id": "esim_9f2a...",
# "status": "ready",
# "balance_usd": 29.00, // 25 + 4 bonus
# "install_qr": "https://cdn.pilotesim.example/qr/9f.png"
# }Core endpoints
A REST surface that maps cleanly to the product.
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/esims | Provision a new eSIM and return an install QR. |
| GET | /v1/esims/{id}/usage | Fetch real-time usage and remaining balance. |
| POST | /v1/esims/{id}/topups | Add balance (with automatic bonus credit). |
| GET | /v1/coverage | List countries, networks and current per-GB rates. |
Scoped keys (coverage:read, esims:read, esims:write), Idempotency-Key on POSTs, cursorless pagination (limit/offset), and 120 req/min rate limiting.
Subscribe to esim.provisioned, topup.succeeded and usage.recorded events with signed outbound webhooks (manage endpoints in account settings). A reference TypeScript SDK ships in sdk/pilotesim.ts.