レート制限とスロットリング
API
レート制限
429
スロットリング
この記事の対象
レシートローラーAPIを大量に呼び出すバッチ処理・同期処理を実装する開発者向けです。
レシートローラーAPIを大量に呼び出すバッチ処理・同期処理を実装する開発者向けです。
レート制限の単位
レート制限はアプリ × 店舗の組み合わせ単位で適用されます。同じアプリでも店舗が異なれば別カウントです。
プラン別の上限(店舗側プラン)
| プラン | 秒間 | 日次 |
|---|---|---|
| スターター | 10 req/s | 100,000 req |
| グロース | 50 req/s | 1,000,000 req |
| エンタープライズ | 個別契約 | 個別契約 |
短時間のバーストは 2倍 までトークンバケット方式で許容されます。
レスポンスヘッダー
すべてのAPIレスポンスに、現在のレート制限状況が含まれます。
X-RateLimit-Limit: 10 ← 1秒あたりの上限 X-RateLimit-Remaining: 7 ← 残り X-RateLimit-Reset: 1745740001 ← リセット時刻(Unix秒) X-RateLimit-Resource: receipts ← 制限の対象
制限に達した場合:
HTTP/1.1 429 Too Many Requests
Retry-After: 1
X-RateLimit-Remaining: 0
{ "error": { "code": "rate_limited", "message": "..." } }
制限に当たらないための実装
1. クライアント側スロットリング
送信レートを制限する仕組みをクライアント側でも持ちます。429を待ってからではなく、最初から流量制御するほうが安定します。
// 簡易トークンバケット例
class RateLimiter {
constructor(perSecond) {
this.tokens = perSecond;
this.max = perSecond;
setInterval(() => { this.tokens = this.max; }, 1000);
}
async acquire() {
while (this.tokens <= 0) await sleep(50);
this.tokens--;
}
}
2. バッチエンドポイントを使う
レシートローラーは複数リソースを1リクエストで扱えるバッチAPIを提供しています。1件ずつ呼び出すよりレート制限的に有利です。
POST /v1/products/batch
{
"products": [
{ "sku": "A001", "name": "..." },
{ "sku": "A002", "name": "..." }
]
}
3. キャッシュ・差分取得
- 変更されにくいデータ(店舗情報・商品マスター)はクライアント側でキャッシュ
- 一覧取得は
updated_afterで差分のみ取得 - Webhookで通知を受けてからAPIで詳細取得(ポーリング全廃)
4. 並行度の制御
並列リクエスト数は秒間上限以下に抑えます。Promise.all で全件並列起動するとあっという間に429。同時実行数を p-limit 等で制御してください。
制限緩和の相談
業務特性上どうしても上限を超える場合は、エンタープライズプランの個別契約で緩和可能です。営業窓口またはサポートへご相談ください。
関連ガイド
公開日: 2026-04-27
更新日: 2026-04-27
カテゴリ
タグ
API (17)
OAuth (11)
Android (8)
Webhook (8)
iOS (7)
api (6)
oauth (5)
トラブル (5)
POS連携 (4)
getting-started (4)
関連記事
-
リクエストとレスポンスの基本(JSON)レシートローラーAPIのリクエスト形式、必須ヘッダー、レスポンス構造、ページネーション、フィルタリング、日時形式の規則を解説します。
-
ネイティブモバイルアプリ向けガイド: 複数ビジネスアカウントアクセスと OAuth フローAndroid / iOS のネイティブアプリ向け実装ガイド。アプリ登録時に「認可時に1つのビジネスアカウントへトークンを紐付ける」をオフにすると、user-scoped OAuth トークンが発行されます。/api/v1/me/organizations + ?organizationId= パターンで複数ビジネスアカウントを横断アクセスできます。
-
取引一覧API(Transactions API:POS+OMS統合フィード)の使い方レシートローラーのTransactions APIは、レジ売上(PosTransactions)と販売管理注文(OmsOrders)を1つのフィードに統合した読み取り専用APIです。Android/iOSアプリで「ビジネスアカウント全体の取引」を一覧表示する際の入り口になります。
-
PosTransactionDto 仕様 — 取引データのフィールドリファレンスレシートローラーが扱う取引データの正規モデル PosTransactionDto の全フィールドを解説します。識別子・日時・金額・明細・支払い・スタッフ・ステータス・CRM 連携の各カテゴリーごとに、フィールド名・型・意味・各 POS ベンダーからの埋め方をまとめた、開発者および外部システム連携担当者向けのリファレンスです。スマレジ・Square 双方のマッピング記事からも参照されます。
-
商品管理API(Products API)の使い方レシートローラーの商品管理API(/api/v1/products)でビジネスアカウント配下の商品をCRUD操作するためのガイドです。Android/iOSアプリやサーバー連携でPIM(商品マスター)を読み書きする際の入門記事です。