Bygg reise-eSIM-er inn i produktet ditt
Selg eSIM-er fra din egen app eller nettside med ett REST-API. Søk i katalogen, legg inn bestillinger og lever eSIM-er som er klare til installasjon, til kundene dine under ditt merke.
Hele eSIM-livssyklusen i ditt eget produkt
Fra valg av abonnement til påfyll midt på reisen er hvert steg kunden tar, et API-kall du styrer.
Selg hvilket som helst abonnement i katalogen din
Filtrer abonnementer etter land, region, data og varighet, og legg deretter inn en bestilling for en kunde med ett kall. Hvert abonnement returneres med prisen du betaler for det.
- Filtrer etter land, region, data og dager
- Bestillinger betales fra den forhåndsbetalte saldoen din
- Idempotensnøkler gjør nye forsøk trygge
Lever eSIM-et i din egen flyt
Når en bestilling er fullført, får du ICCID, LPA-aktiveringsstrengen og en QR-kode, via webhook eller ved å lese bestillingen.
- order.fulfilled-webhook, signert
- QR-kode som PNG, klar til å vises eller sendes på e-post
- LPA-streng for installasjon med ett trykk i appen din
Hold de reisende tilkoblet etter salget
Tilby datapåfyll, flytt et eSIM til en ny telefon, refunder kvalifiserte bestillinger og last ned fakturaer, alt fra det samme API-et.
- Påfyll priset for kontoen din
- Installer et eSIM på nytt på en ny enhet
- Refusjoner og PDF-fakturaer per bestilling
Alt du trenger for å lansere med trygghet
Gratis sandbox
Testnøkler kjører hele flyten, fra bestilling til eSIM til webhook, uten å kontakte et mobilnett eller bruke av saldoen.
Signerte forespørsler
Hver forespørsel signeres med HMAC-SHA256 og et tidsstempel, og forespørsler som spilles av på nytt, avvises. Nøkler kan begrenses til IP-adressene til serverne dine.
Webhooks som prøver på nytt
Signerte hendelser for bestillinger, eSIM-er, påfyll og saldo, som sendes på nytt med økende intervaller i mer enn et døgn, med en leveringslogg du kan spille av på nytt.
Trygt å prøve på nytt
Send en Idempotency-Key med bestillinger og påfyll. En gjentakelse innen 24 timer returnerer det første svaret i stedet for å belaste to ganger.
OpenAPI 3.1-spesifikasjon
Importer spesifikasjonen i Postman eller generer en typet klient, eller start med eksemplene i curl, Node og Python i dokumentasjonen.
Avgrensede nøkler, tydelige grenser
Gi hver nøkkel lese-, bestillings- eller full tilgang. Grensene for antall forespørsler gjelder per nøkkel, og hvert autentiserte svar viser hvor mye som gjenstår.
Utforsk dokumentasjonen
Hvert endepunkt har en forespørsel og et svar du kan kopiere. Signer med nøkkelen din, pek mot sandboxen og sett i gang.
curl --request GET \
--url 'https://api.roamgo.net/api/partner/v1/plans?country=JP&minDays=7' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>'{
"plans": [{
"id": "cm...",
"name": "Japan · 10 GB · 30 days",
"region": "Japan",
"countries": ["JP"],
"dataAmountMB": 10240,
"validityDays": 30,
"yourPriceCents": 1840,
"currency": "USD"
}],
"page": 1,
"pageSize": 24,
"total": 18
}curl --request POST \
--url 'https://api.roamgo.net/api/partner/v1/orders' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <UNIQUE_KEY>' \
--data '{"planId":"cm_plan_id","quantity":1,"customerEmail":"traveler@example.com","externalRef":"BOOKING-49102"}'HTTP/1.1 202 Accepted
{
"order": {
"id": "cm_order_id",
"status": "PAID",
"customerEmail": "traveler@example.com",
"totalCents": 1840,
"currency": "USD"
}
}curl --request GET \
--url 'https://api.roamgo.net/api/partner/v1/esims/cm_esim_id/qr' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>' \
--output esim-qr.pngHTTP/1.1 200 OK
Content-Type: image/png
Cache-Control: private, max-age=3600curl --request POST \
--url 'https://api.roamgo.net/api/partner/v1/esims/cm_esim_id/topups' \
--header 'Authorization: Roamgo-HMAC-SHA256 keyId=<KEY_ID>, ts=<UNIX>, sig=<SIGNATURE>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <UNIQUE_KEY>' \
--data '{"topUpProviderPlanId":"tu_q3J9v0cX2mBf7Lr1sPz8Kd","externalRef":"BOOKING-49102-TOPUP-1"}'HTTP/1.1 201 Created
{
"topUp": {
"id": "cm_topup_id",
"status": "COMPLETED",
"priceCents": 480,
"currency": "USD"
}
}import crypto from "node:crypto";
// X-Roamgo-Signature: t=<unix>,v1=<hex>
export function verifyRoamgoSignature(rawBody: string, header: string, secret: string) {
const match = header.match(/^t=(\d+),v1=([0-9a-f]+)$/);
if (!match) return false;
const [, ts, v1] = match;
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = crypto
.createHmac("sha256", secret)
.update(`${ts}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected, "hex"), Buffer.from(v1, "hex"));
}{
"id": "evt_8d…",
"type": "order.fulfilled",
"createdAt": "2026-09-30T09:14:02.118Z",
"livemode": true,
"data": {
"order": {
"id": "cm_order_id",
"status": "FULFILLED",
"items": [{
"esims": [{
"iccid": "8910…",
"lpaString": "LPA:1$...",
"status": "ISSUED"
}]
}]
}
}
}Ett API for alle deler av salget
Hver ressurs lenker til referansen sin, med parametere, feil og eksempler.
Katalog
Bestillinger
eSIM-er
Konto
Integrer API-et, eller lanser uten kode
API-et er én måte å selge på. Alternativene nedenfor bruker den samme katalogen, saldoen og leveringen.
Begynn å bygge i sandboxen
Opprett en gratis partnerkonto, generer testnøkler i dashbordet og kjør en hel bestilling, med QR-kode og webhooks, før du setter inn saldo.