エラーコードとリトライ指針
API
エラーコード
リトライ
HTTPステータス
レシートローラーのAPIが失敗したときに返すステータスコードとレスポンス本文の形、どのエラーを送り直してよいかをまとめます。エラー本文は全エンドポイント共通の形ではなく、ほとんどは {"error": "..."} の簡単なJSONで、401 と 403 は本文なしで返ります。判定はまずステータスコードで行い、本文は原因の確認に使ってください。
エラー本文の形
- 多くのエラーは
errorに短い説明やコードが入ったJSONです。エンドポイントによってmessage・error_description・reasonなどの項目が加わります。 - JSONの書式誤りや、数値の項目に数値以外を送ったときの
400は、errorsに項目ごとの理由が入った本文です。 401と403は本文なしで返ります。- サーバー内部の予期しないエラーは
500と{"error": "an unexpected error occurred"}です。
{ "error": "product not found in this business account" }
{ "error": "slot_unavailable", "reason": "...", "message": "..." }
共通のエラーコード一覧や、問い合わせ用のリクエストIDの項目はありません。
ステータスコード
| コード | 意味 | 送り直し |
|---|---|---|
200 | 成功。作成の多くも 200 です(例:商品の作成) | ― |
201 | 一部の作成エンドポイントでの作成成功(例:店舗の投稿) | ― |
204 | 成功(本文なし)。削除などで返ります | ― |
400 | 必須項目の不足、値や形式の誤り | しない(リクエストを直す) |
401 | トークンがない、無効、期限切れ | トークンを更新してから1回 |
402 | ビジネスアカウントのプランにその機能が含まれていない(例:Googleビジネスプロフィール) | しない |
403 | スコープ不足、organizationId がトークンと違う、メンバーでない、ロールが足りない | しない |
404 | 対象がビジネスアカウントに存在しない | しない |
409 | 状態の競合(例:クーポンコードが使用中、予約枠が埋まっている) | しない(状態を読み直して判断する) |
429 | 一部のエンドポイントでのリクエスト数超過 | 待ってから送り直す(レート制限とスロットリング) |
500 | サーバー内部の予期しないエラー | 間隔を広げながら数回 |
502 / 503 | 外部サービスの失敗や一時的な混雑(例:回数券の消化が同時に重なった) | 間隔を広げながら数回 |
エンドポイントごとに返りうるステータスは APIリファレンスに載っています。
トークンエンドポイントのエラー
POST /api/v1/auth/token は OAuth の形式でエラーを返します。
| ステータス | error | 原因 |
|---|---|---|
400 | invalid_request | 本文が読めない、code や refresh_token がない |
400 | unsupported_grant_type | grant_type が対応していない値 |
401 | invalid_grant、invalid_client など | コードやリフレッシュトークンが無効、クライアントの認証に失敗。error_description に詳細が入ります |
リフレッシュトークンでの更新が 401 になった場合は、送り直さず、利用者にもう一度認可してもらってください。
送り直しの方針
- 送り直してよいのは
429、5xx、タイムアウト、接続エラーです。5xxでは1秒・2秒・4秒…と間隔を倍にし、ゆらぎ(ジッター)を加えて、数回で打ち切ります。 429はRetry-Afterがあればその秒数、なければ1分ほど待ちます。401を除く4xxは、同じリクエストを何度送っても同じ結果です。- 共通の
Idempotency-Keyヘッダーはありません。作成のPOSTをタイムアウト後に送り直すと二重に作成されることがあるため、送り直す前に作成済みかどうかを確認してください。 - 回数券の消化・取り消し(
POST /api/v1/reservations/passes/{passId}/redeem・.../unredeem)と勤怠の打刻(POST /api/v1/stores/{storeId}/timecards/punch)は、本文のidempotencyKeyで重複を防げます。同じキーで送り直すと、処理済みの結果が"replayed": true付きで返り、二重には処理されません。
関連情報
公開日: 2026-04-27
更新日: 2026-10-26
カテゴリ
タグ
API (26)
OAuth (21)
Android (13)
iOS (12)
Webhook (9)
api (6)
oauth (5)
クイックスタート (5)
トラブル (5)
Node.js (4)
関連記事
-
店舗情報API(Store Information API)の使い方店舗の基本情報(店舗名・店舗種別・連絡先・住所)を取得・更新する REST API のガイドです。スタッフアプリなどのトークン認証クライアントから店舗情報の編集を実装できます。
-
定期予約・出欠・キャンセル待ちAPI の使い方レシートローラーの定期予約API(/api/v1/reservations/series)、出欠・振替API(/api/v1/reservations/attendance)、キャンセル待ちAPI(/api/v1/reservations/waitlist)のガイドです。毎週の定期予約の登録と生成、クラスの出欠記録、振替の受付、キャンセル待ちの管理を解説します。
-
営業時間API(Business Hours API)の使い方レシートローラーの営業時間API(/api/v1/stores/{storeId}/business-hours)のガイドです。曜日ごとの営業時間の取得・更新、特例営業日(臨時休業・営業時間変更)の登録、店舗の就業可能時間(シフト作成時の上限となる業務時間)の設定、現在営業中かどうかの判定までを解説します。
-
リクエストとレスポンスの基本(JSON)レシートローラーAPIのリクエスト形式、必須ヘッダー、レスポンス構造、ページネーション、フィルタリング、日時形式の規則を解説します。
-
ネイティブモバイルアプリ向けガイド: 複数ビジネスアカウントアクセスと OAuth フローAndroid / iOS のネイティブアプリ向け実装ガイド。アプリ登録時に「認可時に1つのビジネスアカウントへトークンを紐付ける」をオフにすると、user-scoped OAuth トークンが発行されます。/api/v1/me/organizations + ?organizationId= パターンで複数ビジネスアカウントを横断アクセスできます。