Баланс и события
GET /api/v1/balance
Заголовок раздела «GET /api/v1/balance»Право billing:read. Пополнение делается в личном кабинете.
{ "balance": "124.30", "currency": "USD"}GET /api/v1/transactions
Заголовок раздела «GET /api/v1/transactions»Право billing:read. Параметры: offset, limit, type.
Порядок фиксирован и не настраивается: новые сверху, по created_at, при совпадении - по id.
Параметра сортировки нет.
type: deposit, purchase, refund, commission, bonus - что за каждым из них,
см. Пополнение и бонусы.
external_reference - внешнее событие, породившее движение, а не идентификатор транзакции (им
является id).
promo_code заполнен у строк типа bonus - это код, по которому начислен бонус. У остальных
типов null.
События
Заголовок раздела «События»GET /api/v1/events, право events:read. Читается вперёд от ?after=<id>, старые сверху.
Параметры: after, limit, type.
{ "events": [ { "id": 881, "type": "order.completed", "occurred_at": "2026-08-28T12:00:04+00:00", "order_id": 128, "package_id": 42, "data": { "family": "traffic_gateway", "client_reference": "deal-8891" } }, { "id": 882, "type": "package.traffic_low", "occurred_at": "2026-08-28T18:31:00+00:00", "order_id": 128, "package_id": 42, "data": { "purchased_gb": "35.000", "left_gb": "3.410" } } ], "next_after": 882}| Тип | Когда | data |
|---|---|---|
order.provisioning | заказ ушёл в выдачу | family, client_reference |
order.completed | выдача состоялась; приходит и на продление адресов | family, client_reference |
order.failed | заказ не состоялся | + refunded |
order.refunded | деньги вернулись | + refunded |
package.traffic_low | остаток опустился ниже 10% | purchased_gb, left_gb |
package.traffic_exhausted | объём израсходован | purchased_gb, left_gb |
package.expired | срок пакета фиксированных адресов вышел, адреса не отвечают | expired_at, cut_off (true - пароль отключён, продление выдаст новый) |
topup.credited | пополнение зачислено | amount, external_reference |
api_key.revoked | ключ отозван | api_key_id, name |
У событий package.* поле order_id - заказ, которым пакет был куплен.
- Доставка at-least-once: дедупликация по
id. next_after- позиция для следующего запроса;nullозначает, что новых событий нет.- Пустой
eventsозначает, что вы догнали журнал. - События хранятся 30 суток.
after = load_position()
while True: params = {"limit": 200} | ({"after": after} if after else {}) body = session.get(f"{BASE}/api/v1/events", params=params, headers=AUTH).json()
for event in body["events"]: if not already_handled(event["id"]): handle(event) mark_handled(event["id"])
if body["next_after"] is not None: after = body["next_after"] save_position(after)
if not body["events"]: sleep(15)Доставка - только опросом журнала.