Integra eSIM de viaje en tu producto
Vende eSIM desde tu propia app o web con una sola API REST. Busca en el catálogo, crea pedidos y entrega eSIM listas para instalar a tus clientes, con tu marca.
Todo el ciclo de la eSIM, dentro de tu producto
Desde elegir un plan hasta recargar a mitad de viaje, cada paso de tu cliente es una llamada a la API que tú controlas.
Vende cualquier plan de tu catálogo
Filtra planes por país, región, datos y duración, y crea el pedido de un cliente con una sola llamada. Cada plan incluye el precio que pagas por él.
- Filtra por país, región, datos y días
- Los pedidos se pagan con tu crédito prepago
- Las claves de idempotencia hacen seguros los reintentos
Entrega la eSIM en tu propio flujo
Cuando un pedido se completa recibes el ICCID, el código de activación LPA y un código QR, por webhook o consultando el pedido.
- Webhook order.fulfilled, firmado
- Código QR en PNG, listo para mostrar o enviar
- Código LPA para instalar con un toque en tu app
Mantén conectados a tus viajeros después de la venta
Ofrece recargas de datos, pasa una eSIM a un teléfono nuevo, reembolsa pedidos que lo permitan y descarga facturas, todo con la misma API.
- Recargas con el precio de tu cuenta
- Reinstala una eSIM en otro dispositivo
- Reembolsos y facturas en PDF por pedido
Todo lo que necesitas para lanzar con confianza
Sandbox gratuito
Las claves de prueba recorren todo el flujo, del pedido a la eSIM y al webhook, sin llamar a ninguna red ni gastar crédito.
Peticiones firmadas
Cada petición se firma con HMAC-SHA256 y una marca de tiempo, y las repeticiones se rechazan. Puedes limitar cada clave a las IP de tus servidores.
Webhooks con reintentos
Eventos firmados de pedidos, eSIM, recargas y crédito, reintentados durante más de un día, con un registro de entregas que puedes reenviar.
Reintentos seguros
Envía un Idempotency-Key con pedidos y recargas. Una repetición en las 24 horas siguientes devuelve la primera respuesta en lugar de cobrar dos veces.
Especificación OpenAPI 3.1
Importa la especificación en Postman o genera un cliente tipado, o parte de los ejemplos en curl, Node y Python de la documentación.
Claves con permisos y límites claros
Da a cada clave acceso de lectura, de pedidos o total. Los límites son por clave, y cada respuesta autenticada indica cuánto te queda.
Explora la documentación
Cada endpoint tiene una petición y una respuesta que puedes copiar. Firma con tu clave, apunta al sandbox y empieza.
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"
}]
}]
}
}
}Una API para cada parte de la venta
Cada recurso enlaza a su referencia, con parámetros, errores y ejemplos.
Catálogo
Pedidos
eSIM
Cuenta
Integra la API o lanza sin código
La API es una forma de vender. Las opciones de abajo usan el mismo catálogo, crédito y entrega.
Empieza a construir en el sandbox
Crea una cuenta de partner gratuita, genera claves de prueba en el panel y completa un pedido entero, con código QR y webhooks, antes de añadir crédito.