eSimerge

Changelog

Every change shipped to the eSimerge API.

v1.1.26
added
2026-08-01
  • GET /v1/esims/{id} now returns available_networks — every mobile network the plan can attach to — alongside the connected network already reported in locations[].
  • The same endpoint returns coverage and coverage_count, the per-country network breakdown for regional and global plans.
  • New device object derived from the EID in the event feed: eid, euicc_manufacturer and device_hint. device_model is always null — the handset model is not reported upstream.
  • Both additions are also shown in the partner portal on the eSIM details view.
v1.1.25
added
2026-07-31
  • Every plan on GET /v1/catalog and GET /v1/catalog/{id} now includes coverage — the list of countries the plan works in, each with its available mobile networks: [{ "country_code": "FR", "country_name": "France", "networks": ["Orange", "SFR"] }].
  • coverage_count returns the number of covered countries, so regional and global plans can be compared at a glance.
  • Country-scope plans return a single coverage entry; regional and global plans list every included country.
v1.1.24
fixed
2026-06-17
  • networks previously returned an empty array for every plan. It is now populated from live coverage data as the flat set of all networks reachable on the plan.
v1.1.23
added
2026-06-12
  • GET /v1/catalog accepts updated_since (alias since) — an ISO-8601 timestamp or Unix seconds — returning only plans changed at or after that moment, so partners can run incremental imports instead of re-ingesting 18,000 plans.
  • Every plan object now includes updated_at, and paginated responses echo the normalised updated_since alongside meta and links.
  • An invalid updated_since returns 400 invalid_request instead of being silently ignored.
  • Docs gained copy-paste full-ingest loops (curl, Node.js, PHP, Python) that follow links.next and print an import summary.
  • The Postman collection's auto-paginate runner now drives off meta.last_page, shows page progress, and prints a final summary (pages, plans imported vs meta.total, breakdown by scope and type, duration). A new "Incremental sync (updated_since)" request rolls the cursor forward automatically.
v1.1.22
changed
2026-06-08
  • socials on GET /v1/catalog and GET /v1/catalog/{id} is now per device platform: each key returns { "ios": boolean, "android": boolean } instead of a single boolean.
  • Example: "tiktok": { "ios": true, "android": false } means TikTok works on iPhone but not on Android for that destination.
  • Reason: the supplier reports iOS and Android support separately; the old flat boolean hid Android-only or iOS-only restrictions.
  • Action required: update any integration that reads socials.<app> as a boolean to read socials.<app>.ios / socials.<app>.android.
v1.1.21
added
2026-06-03
  • GET /v1/catalog is now paginated: use page + per_page (default 1000, max 1000) or the equivalent limit + offset.
  • Responses include meta (current_page, per_page, last_page, total, from, to) and links (first, prev, next, last) — follow links.next until it is null to ingest the full catalog.
  • The ?type= filter is now applied in the database, so total and last_page reflect the filtered result set.
  • Legacy has_more / next_offset fields are still returned for backwards compatibility.
v1.1.20
added
2026-05-30
  • GET /v1/catalog and GET /v1/catalog/{id} now return socials: destination-wide support for TikTok, Facebook, X, Snapchat, Google, Telegram, ChatGPT, Gemini and Claude.
  • Each key is a boolean — true means the platform works on that destination, false means it is not supported. socials is null when we have no data for the destination yet.
  • Values follow the supplier feed and any manual override set by eSimerge staff, so the API always matches what partners see in the portal.
v1.1.19
changed
2026-05-25
  • GET /v1/esims/{id} now resolves status from the provider lifecycle event feed, so installed and activated profiles are reported correctly instead of staying "ready".
  • GET /v1/esims/{id} returns events[] (new → downloaded → installed → activated → expired) and locations[] with the operator, country and MCC/MNC of each network attachment.
  • GET /v1/esims/{id}/usage returns daily[] with the date, amount and location of each day of usage — including unlimited plans — plus total_used_mb.
  • expires_at is kept after activation even if the profile goes inactive, and a new expired flag turns true once the date has passed.
  • New tracking_supported and tracking_unsupported_reason fields: calling plans and unsupported destinations (currently Thailand and Japan) report no live status, usage or expiry.
v1.1.18
added
2026-05-21
  • Public Postman collection + Sandbox environment.
  • Server-side guard: accounts in Sandbox mode can no longer issue Live API keys or Live webhooks.
  • English-only Developers portal and documentation site.
v1.1.17
added
2026-05-16
  • Idempotency-Key header supported on POST /v1/orders.
  • X-RateLimit-* headers on every response with a default of 60 req/min per API key.
  • Send test event button in the Webhooks panel.
v1.1.16
changed
2026-05-12
  • New event esim.usage.threshold at 50% / 80% / 100%.
v1.1.15
changed
2026-05-07
  • Webhook endpoints are auto-disabled after 5 consecutive failed deliveries.
  • Improved retry schedule (1m, 5m, 30m, 2h, 12h).
v1.1.14
changed
2026-05-03
  • Catalog, Orders and eSIMs endpoints hardened with stricter request validation and clearer error codes.
  • Sandbox mock data refreshed to mirror the live catalog shape more closely.
  • OpenAPI 3.1 reference regenerated and the Scalar viewer at /docs/api updated to match.