Вбудуйте туристичні eSIM у свій продукт
Продавайте eSIM у власному застосунку чи на сайті через єдиний REST API. Шукайте в каталозі, оформлюйте замовлення й видавайте клієнтам готові до встановлення eSIM під вашим брендом.
Увесь життєвий цикл eSIM — у вашому продукті
Від вибору тарифу до поповнення посеред подорожі: кожен крок клієнта — це виклик API, яким керуєте ви.
Продавайте будь-який тариф зі свого каталогу
Фільтруйте тарифи за країною, регіоном, обсягом даних і тривалістю, а потім оформлюйте замовлення для клієнта одним викликом. Кожен тариф повертається з ціною, яку за нього платите ви.
- Фільтри за країною, регіоном, даними й кількістю днів
- Замовлення оплачуються з вашого передплаченого балансу
- Ключі ідемпотентності роблять повторні запити безпечними
Видавайте eSIM у власному сценарії
Коли замовлення виконано, ви отримуєте ICCID, рядок активації LPA і QR-код — через вебхук або запитавши замовлення.
- Підписаний вебхук order.fulfilled
- QR-код у форматі PNG — можна одразу показати чи надіслати поштою
- Рядок LPA для встановлення одним дотиком у вашому застосунку
Тримайте мандрівників на зв’язку й після продажу
Пропонуйте поповнення даних, переносьте eSIM на новий телефон, повертайте кошти за відповідні замовлення й завантажуйте рахунки — усе через той самий API.
- Поповнення за цінами вашого облікового запису
- Повторне встановлення eSIM на новий пристрій
- Повернення коштів і PDF-рахунки для кожного замовлення
Усе для впевненого запуску
Безкоштовне тестове середовище
Тестові ключі проходять увесь сценарій — від замовлення до eSIM і вебхука — без звернення до мобільної мережі й без списань із балансу.
Підписані запити
Кожен запит підписується HMAC-SHA256 із часовою міткою, а повторно надіслані запити відхиляються. Ключі можна обмежити IP-адресами ваших серверів.
Вебхуки з повторними спробами
Підписані події щодо замовлень, eSIM, поповнень і балансу повторюються зі зростаючою затримкою понад добу, а журнал доставок дає змогу надіслати їх знову.
Безпечні повтори
Надсилайте Idempotency-Key із замовленнями та поповненнями. Повторний запит протягом 24 годин поверне першу відповідь замість подвійного списання.
Специфікація OpenAPI 3.1
Імпортуйте специфікацію в Postman, згенеруйте типізований клієнт або почніть із прикладів на curl, Node і Python у документації.
Ключі з розмежуванням прав і зрозумілі ліміти
Надайте кожному ключу доступ для читання, для замовлень або повний доступ. Ліміти запитів діють для кожного ключа окремо, а кожна відповідь на автентифікований запит показує залишок.
Ознайомтеся з документацією
Для кожного ендпоінта є запит і відповідь, які можна скопіювати. Підпишіть запит своїм ключем, спрямуйте його в тестове середовище й починайте.
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"
}]
}]
}
}
}Один API для кожного етапу продажу
Кожен ресурс веде до свого розділу довідника з параметрами, помилками й прикладами.
Каталог
Замовлення
eSIM
Обліковий запис
Інтегруйте API або запустіться без коду
API — лише один зі способів продавати. Варіанти нижче працюють на тому самому каталозі, балансі й видачі замовлень.
Почніть розробку в тестовому середовищі
Створіть безкоштовний партнерський обліковий запис, згенеруйте тестові ключі в панелі й проведіть повне замовлення — з QR-кодом і вебхуками — ще до поповнення балансу.