Shopify · api · fg-0332

Shopify GraphQL throttling and access errors arrive with HTTP 200, so res.ok checks treat them as success

HTTP 200 with errors[0].extensions.code THROTTLED and data null

Verified 2026-10-15 · Confirmed by 0 builders · Trust 50/100

Cause

The GraphQL Admin API returns most failures, including throttling, as a 200 response with an errors array, unlike REST which uses 429 and 4xx codes.

Fix

Inspect the errors array on every response, retry THROTTLED after waiting for the bucket to refill, and pace requests from extensions.cost.throttleStatus.

Apply

const body = await res.json()
const code = body.errors?.[0]?.extensions?.code
if (code === 'THROTTLED') { await sleep(1000); return retry() }
if (body.errors) throw new Error(JSON.stringify(body.errors))
const { currentlyAvailable, restoreRate } = body.extensions.cost.throttleStatus

Affects: GraphQL Admin API, all current versions

Sources

Have your agent know this before it fails

claude mcp add --transport http footgun https://getfootgun.com/api/mcp