速率限制與節流
API
速率限制
429
節流
本文的對象
適用於實作大量呼叫 ReceiptRoller API 的批次處理、同步處理的開發者。
適用於實作大量呼叫 ReceiptRoller API 的批次處理、同步處理的開發者。
速率限制的單位
速率限制以應用程式 × 店鋪的組合為單位套用。即使是同一應用程式,店鋪不同即為不同計數。
各方案的上限(店鋪端方案)
| 方案 | 每秒 | 日度 |
|---|---|---|
| Starter | 10 req/s | 100,000 req |
| Growth | 50 req/s | 1,000,000 req |
| Enterprise | 個別簽約 | 個別簽約 |
短時間的爆量以 2 倍 為上限,透過權杖桶(token bucket)方式允許。
回應標頭
所有 API 回應中都包含目前的速率限制狀況。
X-RateLimit-Limit: 10 ← 每秒的上限 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. 使用批次端點
ReceiptRoller 提供可將多個資源以 1 請求處理的批次 API。相較於逐筆呼叫,在速率限制上較有利。
POST /v1/products/batch
{
"products": [
{ "sku": "A001", "name": "..." },
{ "sku": "A002", "name": "..." }
]
}
3. 快取、差分取得
- 不易變更的資料(店鋪資訊、商品主檔)在用戶端側快取
- 一覽取得以
updated_after只取得差分 - 以 Webhook 接收通知後再以 API 取得詳細(全面廢除輪詢)
4. 並行度的控制
並列請求數控制在每秒上限以下。以 Promise.all 全數並列啟動的話會很快 429。請以 p-limit 等控制同時執行數。
限制緩和的洽詢
若因業務特性怎樣都會超過上限時,可透過 Enterprise 方案的個別簽約緩和。請洽詢營業窗口或支援。
相關指南
發布日: 2026-04-27
更新日: 2026-07-06
標籤
API (22)
OAuth (15)
Android (10)
iOS (9)
Webhook (8)
api (7)
oauth (5)
POS串接 (4)
getting-started (4)
參考 (4)
相關文章
-
店鋪資訊 API(Store Information API)的使用方式說明如何以 REST API 取得、更新店鋪的基本資訊(店鋪名稱、店鋪類別、聯絡方式、地址)。可從員工應用程式等以權杖驗證的用戶端實作店鋪資訊的編輯畫面。
-
店內媒體顯示器 API(Display API)的使用方式ReceiptRoller 店內 Android 顯示器 API(/api/v1/displays/*)的概要,以及配對、心跳、播放清單取得、播放實績回報的步驟彙整。這是為在 Android 電子看板或店內數位看板端末播放媒體循環而實作應用程式的入門指南。
-
交易一覽 API(Transactions API:POS+OMS 整合摘要)的使用方式ReceiptRoller 的 Transactions API 是將收銀營業額(PosTransactions)與銷售管理訂單(OmsOrders)整合為單一摘要的唯讀 API。在 Android/iOS 應用程式中一覽顯示「整個商業帳戶的交易」時,即為入口。
-
營業額實績 API(Sales API)的使用方式彙整 ReceiptRoller 營業額實績 API(/api/v1/sales/*)的概要,以及依商業帳戶、店鋪、POS 端末、期間的篩選方法。這是一份涵蓋實際回應結構(KpiValue 巢狀型)與 averageTicket、權杖有效期限(8 小時)在內,為在 Android/iOS 行動應用程式或伺服器串接實作營業額儀表板的入門指南。
-
銷售管理 API(Orders / OMS API)的使用方式這是使用 ReceiptRoller 銷售管理 API(/api/v1/orders)對商業帳戶底下的訂單進行 CRUD 操作的指南。彙整訂單的建立、更新、狀態轉移(確認、處理中、取消)、刪除,以及適用於 Android/iOS 應用程式或伺服器串接的流程。