Integre eSIMs de viagem ao seu produto
Venda eSIMs pelo seu próprio app ou site com uma única API REST. Pesquise o catálogo, faça pedidos e entregue aos seus clientes eSIMs prontos para instalar, com sua marca.
Todo o ciclo de vida do eSIM, dentro do seu próprio produto
Da escolha do plano à recarga no meio da viagem, cada etapa do seu cliente é uma chamada à API sob seu controle.
Venda qualquer plano do seu catálogo
Filtre os planos por país, região, dados e duração e faça o pedido para um cliente com uma única chamada. Cada plano vem com o preço que você paga por ele.
- Filtros por país, região, dados e dias
- Os pedidos são pagos com seu crédito pré-pago
- Chaves de idempotência tornam as novas tentativas seguras
Entregue o eSIM no seu próprio fluxo
Quando um pedido é concluído, você recebe o ICCID, o código de ativação LPA e um QR code, por webhook ou consultando o pedido.
- Webhook order.fulfilled, assinado
- QR code em PNG, pronto para exibir ou enviar por e-mail
- Código LPA para instalação com um toque no seu app
Mantenha os viajantes conectados depois da venda
Ofereça recargas de dados, transfira um eSIM para um celular novo, reembolse pedidos elegíveis e baixe faturas, tudo pela mesma API.
- Recargas com os preços da sua conta
- Reinstale um eSIM em um aparelho novo
- Reembolsos e faturas em PDF por pedido
Tudo de que você precisa para lançar com confiança
Sandbox gratuito
As chaves de teste executam todo o fluxo, do pedido ao eSIM e ao webhook, sem acionar nenhuma rede nem gastar crédito.
Requisições assinadas
Cada requisição é assinada com HMAC-SHA256 e um timestamp, e as repetições são rejeitadas. As chaves podem ser restritas aos endereços IP dos seus servidores.
Webhooks com novas tentativas
Eventos assinados de pedidos, eSIMs, recargas e crédito, reenviados com intervalos crescentes por mais de um dia, com um registro de entregas que você pode reenviar.
Novas tentativas seguras
Envie um Idempotency-Key com pedidos e recargas. Uma repetição dentro de 24 horas retorna a primeira resposta em vez de cobrar duas vezes.
Especificação OpenAPI 3.1
Importe a especificação no Postman ou gere um cliente tipado, ou comece pelos exemplos em curl, Node e Python da documentação.
Chaves com escopo, limites claros
Dê a cada chave acesso de leitura, de pedidos ou total. Os limites de requisições são por chave, e cada resposta autenticada mostra quanto ainda resta.
Explore a documentação
Cada endpoint tem uma requisição e uma resposta que você pode copiar. Assine com sua chave, aponte para o sandbox e comece.
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"
}]
}]
}
}
}Uma API para cada parte da venda
Cada recurso tem um link para sua referência, com parâmetros, erros e exemplos.
Catálogo
Pedidos
eSIMs
Conta
Integre a API ou lance sem código
A API é só uma das formas de vender. As opções abaixo funcionam com o mesmo catálogo, o mesmo crédito e a mesma entrega.
Comece a desenvolver no sandbox
Crie uma conta de parceiro grátis, gere chaves de teste no painel e faça um pedido completo, com QR code e webhooks incluídos, antes de adicionar qualquer crédito.