Bygg in rese-eSIM i din produkt
Sälj eSIM från din egen app eller webbplats med ett enda REST-API. Sök i katalogen, lägg beställningar och leverera installationsklara eSIM till dina kunder, under ditt varumärke.
Hela eSIM-livscykeln i din egen produkt
Från val av abonnemang till påfyllning mitt under resan är varje steg kunden tar ett API-anrop som du styr.
Sälj vilket abonnemang som helst i din katalog
Filtrera abonnemang efter land, region, datamängd och giltighetstid och lägg sedan en beställning åt en kund med ett enda anrop. Varje abonnemang returneras med priset du betalar för det.
- Filtrera efter land, region, data och dagar
- Beställningar betalas med ditt förbetalda saldo
- Idempotensnycklar gör omförsök säkra
Leverera eSIM-kortet i ditt eget flöde
När en beställning är levererad får du ICCID, LPA-aktiveringssträngen och en QR-kod, via webhook eller genom att läsa beställningen.
- order.fulfilled-webhook, signerad
- QR-kod som PNG, redo att visa eller mejla
- LPA-sträng för installation med ett tryck i din app
Håll resenärerna uppkopplade efter köpet
Erbjud datapåfyllningar, flytta ett eSIM till en ny telefon, återbetala berättigade beställningar och ladda ner fakturor, allt från samma API.
- Påfyllningar prissatta för ditt konto
- Installera om ett eSIM på en ny enhet
- Återbetalningar och PDF-fakturor per beställning
Allt du behöver för att lansera med trygghet
Gratis sandbox
Testnycklar kör hela flödet, från beställning till eSIM till webhook, utan att anropa något mobilnät eller förbruka saldo.
Signerade anrop
Varje anrop signeras med HMAC-SHA256 och en tidsstämpel, och återuppspelade anrop avvisas. Nycklar kan begränsas till dina servrars IP-adresser.
Webhooks som försöker igen
Signerade händelser för beställningar, eSIM, påfyllningar och saldo, som skickas om med allt längre intervall i mer än ett dygn, med en leveranslogg som du kan spela upp igen.
Säkert att försöka igen
Skicka en Idempotency-Key med beställningar och påfyllningar. En upprepning inom 24 timmar returnerar det första svaret i stället för att debitera två gånger.
OpenAPI 3.1-specifikation
Importera specifikationen i Postman eller generera en typad klient, eller utgå från exemplen i curl, Node och Python i dokumentationen.
Avgränsade nycklar, tydliga gränser
Ge varje nyckel läs-, beställnings- eller full åtkomst. Anropsgränserna gäller per nyckel, och varje autentiserat svar visar hur mycket som återstår.
Utforska dokumentationen
Varje endpoint har ett anrop och ett svar som du kan kopiera. Signera med din nyckel, peka mot sandboxen och sätt igång.
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 för varje del av försäljningen
Varje resurs länkar till sin referens, med parametrar, fel och exempel.
Katalog
Beställningar
eSIM
Konto
Integrera API:et eller lansera utan kod
API:et är ett sätt att sälja. Alternativen nedan bygger på samma katalog, samma saldo och samma leverans.
Börja bygga i sandboxen
Skapa ett kostnadsfritt partnerkonto, generera testnycklar i panelen och kör en hel beställning, med QR-kod och webhooks, innan du sätter in något saldo.