Bau Reise-eSIMs in dein Produkt ein
Verkaufe eSIMs aus deiner eigenen App oder Website mit einer einzigen REST-API. Durchsuche den Katalog, lege Bestellungen an und liefere installierbare eSIMs an deine Kunden, unter deiner Marke.
Der ganze eSIM-Lebenszyklus, in deinem eigenen Produkt
Von der Tarifwahl bis zum Aufladen mitten auf der Reise ist jeder Schritt deiner Kunden ein API-Aufruf, den du steuerst.
Verkaufe jeden Tarif aus deinem Katalog
Filtere Tarife nach Land, Region, Datenvolumen und Laufzeit und lege mit einem Aufruf eine Bestellung für einen Kunden an. Zu jedem Tarif bekommst du den Preis, den du dafür zahlst.
- Filter nach Land, Region, Daten und Tagen
- Bestellungen zahlst du mit deinem Prepaid-Guthaben
- Idempotenzschlüssel machen Wiederholungen sicher
Liefere die eSIM in deinem eigenen Ablauf
Sobald eine Bestellung erfüllt ist, erhältst du die ICCID, den LPA-Aktivierungscode und einen QR-Code, per Webhook oder durch Abfragen der Bestellung.
- Signierter order.fulfilled-Webhook
- QR-Code als PNG, bereit zum Anzeigen oder Mailen
- LPA-Code für die Installation mit einem Tippen in deiner App
Halte Reisende auch nach dem Kauf verbunden
Biete Datenaufladungen an, zieh eine eSIM auf ein neues Handy um, erstatte berechtigte Bestellungen und lade Rechnungen herunter, alles über dieselbe API.
- Aufladungen zu den Preisen deines Kontos
- Eine eSIM auf einem neuen Gerät neu installieren
- Erstattungen und PDF-Rechnungen je Bestellung
Alles, was du für einen sicheren Start brauchst
Kostenlose Sandbox
Testschlüssel durchlaufen den ganzen Ablauf, von der Bestellung über die eSIM bis zum Webhook, ohne ein Netz anzufragen oder Guthaben zu verbrauchen.
Signierte Anfragen
Jede Anfrage wird mit HMAC-SHA256 und einem Zeitstempel signiert, Wiederholungen werden abgewiesen. Schlüssel lassen sich auf die IP-Adressen deiner Server beschränken.
Webhooks mit Wiederholung
Signierte Events für Bestellungen, eSIMs, Aufladungen und Guthaben, über mehr als einen Tag erneut zugestellt, mit einem Zustellprotokoll, das du erneut senden kannst.
Sicher wiederholbar
Sende bei Bestellungen und Aufladungen einen Idempotency-Key mit. Eine Wiederholung innerhalb von 24 Stunden liefert die erste Antwort, statt doppelt abzubuchen.
OpenAPI-3.1-Spezifikation
Importiere die Spezifikation in Postman oder erzeuge einen typisierten Client, oder starte mit den Beispielen in curl, Node und Python aus der Dokumentation.
Schlüssel mit Rechten, klare Limits
Gib jedem Schlüssel Lese-, Bestell- oder vollen Zugriff. Limits gelten pro Schlüssel, und jede authentifizierte Antwort zeigt, was noch übrig ist.
Die Dokumentation entdecken
Zu jedem Endpoint gibt es eine Anfrage und eine Antwort zum Kopieren. Signiere mit deinem Schlüssel, zeig auf die Sandbox und leg los.
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",
"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":"topup_1gb_7d","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"
}]
}]
}
}
}Eine API für jeden Teil des Verkaufs
Jede Ressource verlinkt ihre Referenz, mit Parametern, Fehlern und Beispielen.
Katalog
Bestellungen
eSIMs
Konto
Integriere die API oder starte ohne Code
Die API ist ein Weg zu verkaufen. Die Optionen unten laufen auf demselben Katalog, Guthaben und derselben Auslieferung.
Fang in der Sandbox an zu bauen
Erstelle ein kostenloses Partnerkonto, erzeuge Testschlüssel im Dashboard und spiel eine ganze Bestellung durch, mit QR-Code und Webhooks, bevor du Guthaben einzahlst.