Общее
- Базовый URL:
https://1esim.tech/v1 - Авторизация:
Authorization: Bearer YOUR_API_KEY - Для поиска по
createdAtиспользуется формат RFC 3339 в UTC, например2023-02-15T03:15:22Z - Для фильтра даты поддерживаются префиксы:
lt,lte,gt,gte
/balance
получить текущий баланс кошелька.
Параметры запроса
Нет.
Пример запроса
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://1esim.tech/v1/balance"Пример ответа 200
{
"availableBalance": 0,
"currency": "string",
"currencyDivisor": 0
}Поля ответа
availableBalance— доступный балансcurrency— валютаcurrencyDivisor— делитель для корректного отображения суммы
/brands
список доступных брендов.
Query-параметры
_limit*(required, number)* — сколько элементов вернуть, минимум 1, максимум 1024_offset*(required, number)* — сколько элементов пропустить для пагинацииcountry*(string)* — 2-буквенный ISO-код страны назначения
Пример запроса
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://1esim.tech/v1/brands?_limit=100&_offset=0&country=US"Пример ответа 200
{
"limit": 0,
"list": [
{
"brand": "string",
"brandName": "string"
}
],
"offset": 0,
"total": 0
}/brands/{brand}
детали конкретного бренда.
Path-параметры
brand*(required, string)* — имя бренда для запроса
Пример ответа 200
{
"brand": "string",
"brandName": "string",
"brandBigImage": "string",
"brandColor": "string",
"brandGiftImage": "string",
"brandInfoPdf": "string",
"brandLogo": "string",
"brandLogoExtension": "string",
"description": "string",
"inputMasks": [
{
"requiredField": "string",
"inputMask": "string"
}
],
"redemptionInstructions": [
{
"country": "string",
"deliveryType": "string",
"language": "string",
"link": "string"
}
],
"requiredFieldsLabels": [
{
"label": "string",
"requiredField": "string"
}
]
}/brands/{brand}/redemptionInstructions
redemption instructions и terms & conditions.
Path-параметры
brand*(required, string)* — имя бренда
Query-параметры
country*(required, string)* — 2-буквенный ISO-код страны назначенияdeliveryType*(required, string)* — тип доставки продуктаlanguage*(string)* — 2-буквенный ISO-код языка; по умолчанию обычноen
Пример ответа 200
{
"country": "string",
"deliveryType": "string",
"language": "string",
"redemptionInstructions": "string",
"terms": "string",
"redemptionVideo": "string"
}/esim/offers
список eSIM offers.
Query-параметры
_limit*(required, number)* — количество элементов_offset*(required, number)* — смещение для пагинацииbrand*(string)* — фильтр по брендуcountry*(string)* — 2-буквенный ISO-код страныregions*(string, enum)* — регион (Global,Africa,Asia,Caribbean,Central America,Eastern Europe,Western Europe,North America,Oceania,South America,South Asia,Southeast Asia,Middle East and North Africa)subType*(string)* — подтип оффера
Пример ответа 200 (укорочено)
{
"limit": 0,
"list": [
{
"brand": "string",
"brandName": "string",
"cost": 0,
"costBase": 0,
"costCurrency": "string",
"costCurrencyDivisor": 0,
"costFee": 0,
"country": "string",
"createdAt": "string",
"dataGB": 0,
"dataSpeeds": ["2G"],
"dataUnlimited": true,
"durationDays": 0,
"notes": "string",
"offerId": "string",
"price": 0,
"priceBase": 0,
"priceCurrency": "string",
"priceCurrencyDivisor": 0,
"priceFee": 0,
"priceType": "FIXED",
"productType": "TOPUP",
"regions": ["Global"],
"roaming": [
{
"country": "string",
"dataSpeeds": ["2G"]
}
],
"shortNotes": "string",
"smsNumber": 0,
"smsUnlimited": true,
"subTypes": ["string"],
"updatedAt": "string",
"voiceMinutes": 0,
"voiceUnlimited": true
}
],
"offset": 0,
"total": 0
}/esim/offers/{offerId}
получить eSIM offer по ID.
Path-параметры
offerId*(required, string)* — catalog ID
Пример ответа
Структура аналогична одному объекту offer из GET /esim/offers.
/esim/purchases
список eSIM-транзакций.
Query-параметры
_limit*(required, number)* — количество элементов_offset*(required, integer)* — смещениеcreatedAt*(string)* — фильтр по датеstatus*(string, enum)* —DONE,FAILED,PENDING,ACCEPTED,AUTHORIZED,IN_PROGRESS
Пример ответа 200 (укорочено)
{
"limit": 0,
"list": [
{
"transactionId": "string",
"status": "DONE",
"offerId": "string",
"createdAt": "string",
"updatedAt": "string",
"price": 0,
"cost": 0,
"dataGB": 0,
"durationDays": 0,
"refund": {
"status": "string"
}
}
],
"offset": 0,
"total": 0
}/esim/purchases
покупка eSIM offer для новой eSIM или добавление offer к существующей eSIM.
Body-поля
iccid*(string)* — ICCID eSIM, если нужно применить план к существующей eSIM; если не передавать, будет выпущена новаяofferId*(required, string)* — catalog ID offertransactionId*(required, string)* — ID транзакции со стороны партнёра
Пример body
{
"iccid": "string",
"offerId": "string",
"transactionId": "string"
}Пример ответа 200
{
"status": "string",
"transactionId": "string"
}/esim/purchases/{transactionId}
получить eSIM-транзакцию по ID.
Path-параметры
transactionId*(required, string)* — ID транзакции
Пример ответа 200 (укорочено)
{
"transactionId": "string",
"status": "DONE",
"offerId": "string",
"iccid": "string",
"createdAt": "string",
"updatedAt": "string",
"price": 0,
"cost": 0,
"dataGB": 0,
"dataSpeeds": ["2G"],
"dataUnlimited": true,
"durationDays": 0,
"regions": ["Global"],
"roaming": [
{
"country": "string",
"dataSpeeds": ["2G"]
}
],
"value": {
"type": "PRICE",
"value": 0
},
"voiceMinutes": 0,
"voiceUnlimited": true,
"smsNumber": 0,
"smsUnlimited": true,
"refund": {
"status": "string"
},
"error": {
"code": "string",
"description": "string",
"message": "string"
},
"log": [
{
"dateTime": "string",
"status": "DONE",
"statusMessage": "string"
}
]
}/esim/purchases/{transactionId}/qrcode
получить QR code eSIM по transaction ID.
Path-параметры
transactionId*(required, string)* — ID транзакции
Пример ответа 200
Документация показывает отдельный endpoint для QR, но в доступном фрагменте страницы полноценный sample ответа не раскрыт. Практически это endpoint получения QR-кода для eSIM по ID транзакции.
/esim/purchases/{transactionId}/usage
usage активных и queued plans на eSIM.
Path-параметры
transactionId*(required, string)* — ID транзакции
Пример ответа
В доступном фрагменте страницы sample ответа не был полностью раскрыт. Endpoint присутствует в оглавлении документации.
/esim/purchases/{transactionId}/refund
статус refund по транзакции.
Path-параметры
transactionId*(required, string)*
Пример ответа 200 (укорочено)
{
"amount": 0,
"createdAt": "string",
"currency": "string",
"currencyDivisor": 0,
"error": {
"code": "string",
"description": "string",
"message": "string"
},
"log": [
{
"dateTime": "string",
"status": "DONE",
"statusMessage": "string"
}
],
"productType": "TOPUP",
"status": "DONE",
"transactionId": "string",
"type": "DEBIT",
"updatedAt": "string"
}/esim/purchases/{transactionId}/refund
инициировать refund.
Path-параметры
transactionId*(required, string)*
Body
В доступном фрагменте страницы body целиком не раскрылся. Endpoint присутствует в оглавлении как Initiate a transaction refund.
/topups/offers
список topup offers.
Query-параметры
_limit*(required, number)* — количество элементов_offset*(required, number)* — смещениеbrand*(string)* — бренд / carriercountry*(string)* — 2-буквенный ISO-код страныregions*(string, enum)* — регионsubType*(string, enum)* —Mobile Top Up,Mobile Bundle,Mobile Data
Пример ответа 200 (укорочено)
{
"limit": 0,
"list": [
{
"brand": "string",
"brandName": "string",
"country": "string",
"offerId": "string",
"enabled": true,
"notes": "string",
"cost": {
"currency": "string",
"currencyDivisor": 0,
"discount": 0,
"fee": 0,
"feePct": 0,
"fixed": 0,
"fx": 0,
"max": 0,
"min": 0
},
"price": {
"currency": "string",
"currencyDivisor": 0,
"fee": 0,
"fixed": 0,
"fx": 0,
"increment": 0,
"margin": 0,
"max": 0,
"min": 0,
"suggestedFixed": 0,
"suggestedFx": 0
},
"priceType": "string",
"productType": "TOPUP",
"regions": ["Global"],
"shortNotes": "string",
"smsNumber": 0,
"smsUnlimited": true,
"subTypes": ["Mobile Top Up"],
"voiceMinutes": 0,
"voiceUnlimited": true,
"createdAt": "string",
"updatedAt": "string"
}
],
"offset": 0,
"total": 0
}/topups/offers/{offerId}
получить topup offer по ID.
Path-параметры
offerId*(required, string)* — catalog ID
Пример ответа
Структура аналогична одному offer из GET /topups/offers.
/topups/purchases
список topup-транзакций.
Query-параметры
_limit*(required, integer)* — количество элементов_offset*(required, integer)* — смещениеcreatedAt*(string)* — фильтр по датеstatus*(string, enum)* —DONE,FAILED,PENDING,ACCEPTED,AUTHORIZED,IN_PROGRESS
Пример ответа 200 (укорочено)
{
"limit": 0,
"list": [
{
"transactionId": "string",
"status": "DONE",
"offerId": "string",
"recipientPhoneNumber": "string",
"sender": {
"country": "string",
"phoneNumber": "string"
},
"value": {
"type": "PRICE",
"value": 0
},
"price": 0,
"cost": 0,
"send": 0,
"sendCurrency": "string",
"sendCurrencyDivisor": 0,
"regions": ["Global"],
"subTypes": ["Mobile Top Up"],
"createdAt": "string",
"updatedAt": "string"
}
],
"offset": 0,
"total": 0
}/topups/purchases
создать topup purchase.
Body-поля
offerId*(required, string)* — catalog ID offerrecipientPhoneNumber*(required, string)* — номер получателя в формате E.164sender*(object)* — необязательная информация об отправителеcountry*(string)*phoneNumber*(string)*transactionId*(required, string)* — ID транзакции партнёраvalue*(object)* — сумма и тип покупки; нужна для RANGE offers, для FIXED offers не передаётсяtype*(enum)* — напримерPRICEvalue*(number)* — значение
Пример body
{
"offerId": "string",
"recipientPhoneNumber": "string",
"sender": {
"country": "string",
"phoneNumber": "string"
},
"transactionId": "string",
"value": {
"type": "PRICE",
"value": 0
}
}Пример ответа 200
{
"status": "string",
"transactionId": "string"
}/topups/purchases/{transactionId}
получить topup purchase по ID.
Path-параметры
transactionId*(required, string)* — ID транзакции
Пример ответа 200 (укорочено)
{
"transactionId": "string",
"status": "DONE",
"offerId": "string",
"recipientPhoneNumber": "string",
"sender": {
"country": "string",
"phoneNumber": "string"
},
"value": {
"type": "PRICE",
"value": 0
},
"price": 0,
"cost": 0,
"send": 0,
"sendCurrency": "string",
"sendCurrencyDivisor": 0,
"regions": ["Global"],
"subTypes": ["Mobile Top Up"],
"voiceMinutes": 0,
"voiceUnlimited": true,
"smsNumber": 0,
"smsUnlimited": true,
"error": {
"code": "string",
"description": "string",
"message": "string"
},
"log": [
{
"dateTime": "string",
"status": "DONE",
"statusMessage": "string"
}
],
"createdAt": "string",
"updatedAt": "string"
}/vouchers/offers
список voucher offers.
Query-параметры
_limit*(required, number)* — количество элементов_offset*(required, number)* — смещениеbrand*(string)* — брендcountry*(string)* — 2-буквенный ISO-код страныregions*(string, enum)* — регионsubType*(string)* — подтип offer
Пример ответа 200 (укорочено)
{
"limit": 0,
"list": [
{
"brand": "string",
"brandName": "string",
"country": "string",
"createdAt": "string",
"enabled": true,
"notes": "string",
"offerId": "string",
"priceType": "string",
"productType": "TOPUP",
"cost": {
"currency": "string",
"currencyDivisor": 0,
"discount": 0,
"fee": 0,
"feePct": 0,
"fixed": 0,
"fx": 0,
"max": 0,
"min": 0
},
"price": {
"currency": "string",
"currencyDivisor": 0,
"fee": 0,
"fixed": 0,
"fx": 0,
"increment": 0,
"margin": 0,
"max": 0,
"min": 0,
"suggestedFixed": 0,
"suggestedFx": 0
},
"regions": ["Global"],
"requiredFields": ["string"],
"send": {
"currency": "string",
"currencyDivisor": 0
}
}
],
"offset": 0,
"total": 0
}/vouchers/offers/{offerId}
получить voucher offer по ID.
Path-параметры
offerId*(required, string)* — catalog ID
Пример ответа
Структура аналогична одному offer из GET /vouchers/offers.
/vouchers/purchases
список voucher purchase-транзакций.
Query-параметры
_limit*(required, integer)* — количество элементов_offset*(required, integer)* — смещениеcreatedAt*(string)* — фильтр по датеstatus*(string, enum)* —DONE,FAILED,PENDING,ACCEPTED,AUTHORIZED,IN_PROGRESS
Пример ответа 200 (укорочено)
{
"limit": 0,
"list": [
{
"transactionId": "string",
"status": "DONE",
"offerId": "string",
"brand": "string",
"brandName": null,
"country": "string",
"price": 0,
"cost": 0,
"fields": [
{
"key": "string",
"value": "string"
}
],
"confirmation": {
"confirmationNumber": "string",
"externalReferenceId": "string",
"transactionTime": "string"
},
"receipt": {
"deliveryType": "string",
"confirmationNumber": "string",
"currency": "string",
"currencyDivisor": 0,
"epin": "string",
"voucherId": "string",
"redemptionUrl": "string",
"accountId": "string",
"expiresAt": "string",
"instructions": "string",
"notes": "string",
"recipientCustomerServiceNumber": "string",
"send": 0,
"senderCustomerServiceNumber": "string"
},
"createdAt": "string",
"updatedAt": "string"
}
],
"offset": 0,
"total": 0
}/vouchers/purchases
создать voucher purchase.
Body-поля
По структуре purchase содержит:
offerId*(required, string)* — ID offertransactionId*(required, string)* — ID транзакцииfields*(array)* — набор required fields для выбранного бренда/offer- элемент массива:
key*(string)*value*(string)*
В документации прямо указано, что для Digital Gift Cards и Utility Payments обязательные дополнительные поля зависят от бренда; их список приходит в каталоге бренда / offer.
Пример body
{
"offerId": "string",
"transactionId": "string",
"fields": [
{
"key": "string",
"value": "string"
}
]
}Пример ответа 200
{
"status": "string",
"transactionId": "string"
}/vouchers/purchases/{transactionId}
получить voucher purchase по ID.
Path-параметры
transactionId*(required, string)* — ID транзакции
Пример ответа 200
Структура аналогична одному объекту из GET /vouchers/purchases, включая confirmation, fields, receipt, error, log, price, cost, createdAt, updatedAt.
/transactions
список транзакций по статусам.
Query-параметры
_limit*(required, integer)* — количество элементов_offset*(required, integer)* — смещениеcreatedAt*(string)* — фильтр по датеproductType*(string)* — тип продуктаstatus*(string)* — статус транзакцииtype*(string)* — тип записи, например debit/credit
Пример ответа 200
{
"limit": 0,
"list": [
{
"amount": 0,
"createdAt": "string",
"currency": "string",
"currencyDivisor": 0,
"error": {
"code": "string",
"description": "string",
"message": "string"
},
"log": [
{
"dateTime": "string",
"status": "DONE",
"statusMessage": "string"
}
],
"productType": "TOPUP",
"status": "DONE",
"transactionId": "string",
"type": "DEBIT",
"updatedAt": "string"
}
],
"offset": 0,
"total": 0
}/transactions/{transactionId}
получить транзакцию по ID.
Path-параметры
transactionId*(required, string)* — ID транзакции
Пример ответа 200
{
"amount": 0,
"createdAt": "string",
"currency": "string",
"currencyDivisor": 0,
"error": {
"code": "string",
"description": "string",
"message": "string"
},
"log": [
{
"dateTime": "string",
"status": "DONE",
"statusMessage": "string"
}
],
"productType": "TOPUP",
"status": "DONE",
"transactionId": "string",
"type": "DEBIT",
"updatedAt": "string"
}/tools/phonenumberlookup/{msisdn}
lookup phone number / MSISDN (beta).
Path-параметры
msisdn*(required, string)* — телефон в формате E.164
Пример ответа 200
{
"brand": "string",
"country": "string",
"mobileCountryCode": "string",
"mobileNetworkCode": "string",
"msisdn": "string"
}/reports/transactions
запустить генерацию отчёта по транзакциям.
Body-поля
endLt*(required, string)* — конечная дата; в отчёт попадут транзакции, завершившиеся раньше этой датыstartGte*(required, string)* — начальная дата; попадут транзакции, начавшиеся в этот момент или позже
Пример body
{
"endLt": "string",
"startGte": "string"
}Пример ответа 200 (укорочено)
{
"createdAt": "string",
"error": {
"code": "string",
"description": "string",
"message": "string"
},
"file": {
"downloadUrl": "string",
"name": "string"
},
"log": [
{
"message": "string",
"recordedAt": "string",
"status": "REQUESTED"
}
],
"period": {
"endLt": "string",
"startGte": "string"
},
"reportId": "string",
"status": "REQUESTED"
}/reports/transactions/{reportId}
статус ранее запрошенного отчёта.
Path-параметры
reportId*(required, string)* — ID отчёта
Пример ответа 200
Структура аналогична ответу генерации отчёта: createdAt, error, file, log, period, reportId, status.
/reports/transactions/{reportId}/{file}
скачать готовый отчёт.
Path-параметры
reportId*(required, string)* — ID отчётаfile*(required, string)* — имя файла
Успешный ответ
- Бинарный файл (
application/octet-stream)
Пример error-ответа
{
"errorCode": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"message": "string"
}/promos
список активных и upcoming promotions.
Query-параметры
_limit*(required, integer)* — максимум промо для возврата_offset*(required, string)* — сколько промо пропуститьbrand*(string)* — брендcountry*(string)* — список 2-буквенных ISO-кодов стран через запятуюlanguage*(string)* — 2-буквенный ISO-код языкаregion*(string, regions)* — регион
Пример ответа 200
{
"limit": 0,
"list": [
{
"brand": {
"brand": "string",
"brandName": "string"
},
"country": "string",
"createdAt": "string",
"description": {
"description": "string",
"language": "string",
"terms": "string"
},
"endAt": "string",
"id": "string",
"maxValue": 0,
"minValue": 0,
"regions": "Global",
"startAt": "string",
"status": "active",
"updatedAt": "string"
}
],
"offset": 0,
"total": 0
}/promos/{promoId}
получить promo по ID.
Path-параметры
promoId*(required, string)* — ID промо
Пример ответа 200
Структура аналогична одному объекту из GET /promos.
# Типовые коды ответов
Почти для всех endpoint в документации указаны:
200— OK400— Bad Request401— Unauthorized – API Token Missing or Unrecognized403— Forbidden – IP Not Allowed404— Not Found (для endpoint с path ID)500— Internal Server Error
# Краткий итог по endpoint
Всего в оглавлении документации перечислено 28 HTTP endpoints, если считать только разделы API-запросов и не считать webhook/event callback-описания.