残高とイベント
GET /api/v1/balance
Section titled “GET /api/v1/balance”権限 billing:read。チャージはダッシュボードで行います。
{ "balance": "124.30", "currency": "USD"}GET /api/v1/transactions
Section titled “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)配信はログのポーリングのみです。