GraphQL Admin API のレート制限について

Topic summary

主要論点: Shopify GraphQL Admin APIのレート制限が「クエリ単位」か「アプリ×ストア単位」か。

初期観察: Postmanのレスポンスでは各クエリに1000コストポイントがあるように見え、クエリごとに独立して消費しているように見えた(スクリーンショット添付)。

回答と仕様: レート制限はクエリ単位ではなく「アプリ×ストア」単位で共有。コストは1秒あたり50ポイント回復するため、低コストの連続呼び出しでは消費が目立たない。

検証結果: 数百ポイントの高コストクエリを1秒間隔で交互に実行すると、共有プールからの消費が確認できた。

定義と識別: 「アプリ」はストアにインストールされた外部連携を指す。別アプリの判別ロジックは公式未開示だが、実装上はアクセストークンでアプリを識別している可能性が高い。

結論/状況: レート制限の適用単位の疑問は解消。アプリ識別ロジックの公式説明は未回答のまま。

Summarized with AI on January 17. AI used: gpt-5.

GraphQL Admin API のレート制限に関して、以下ドキュメントよりレート制限は、アプリとストアの組み合わせに基づく

=つまり、1つのストアに対してorders、products、inventoryItemsをそれぞれ別にクエリし立て続けにデータ取得した場合、3つのクエリでかかったコストが 1000 コスト ポイントから消費される認識でした。

(クエリは別々でも問い合わせ先のストアは同じであるため)

https://shopify.dev/docs/api/usage/rate-limits#avoiding-rate-limit-errorserrors

しかし、添付の通りPOSTMANで確認したところ、コストは各クエリ単位でしか消費されておらず、

1クエリに対してそれぞれ1000コストポイントがあるように見受けられます。

レート制限の正しい挙動としては、クエリ単位で制限がかかるのでしょうか。

レート制限の正しい挙動としては、クエリ単位で制限がかかるのでしょうか。

クエリ単位ではなく、ストア単位です。

より厳密にいうとアプリとストアの組み合わせです。

(同じストアであっても、別のアプリであれば影響しないため)

1秒で50ポイント回復するので、コストの少ないクエリであったり、クエリ間のタイミング次第では、消費していないように見えているだけだと思われます。

数百ポイント消費するような大きなコストのクエリを作成して、1,2秒後にリクエストを送ってみると、消費されていることが確認できるかと思います。

ご確認ありがとうございます。

>より厳密にいうとアプリとストアの組み合わせです。

アプリというのは、以下のShopifyストアのアプリ=ストアのデータを参照する外部連携サービス単位、という認識で齟齬ございませんでしょうか。

https://help.shopify.com/ja/manual/apps

>同じストアであっても、別のアプリであれば影響しない

上記に関して、別のアプリであるという判別はShopify側でどう行っているかのロジック説明等は公式に開示されておりますでしょうか。

>数百ポイント消費するような大きなコストのクエリを作成して、1,2秒後にリクエストを送ってみると、消費されていることが確認できるかと思います。

数百ポイント消費するクエリを2つ作成し、1秒後に交互でたたいたところ確かに消費が確認できたので、「同じアプリ(POSTMAN)から送られた2つのクエリだ」とどう判定されているのかが気になりました。

アプリというのは、以下のShopifyストアのアプリ=ストアのデータを参照する外部連携サービス単位、という認識で齟齬ございませんでしょうか。

はい。

別のアプリであるという判別はShopify側でどう行っているかのロジック説明等は公式に開示されておりますでしょうか。

公式の説明はわかりませんが、アクセストークンからアプリを識別していると思います。