Developer Docs

Errors And Rate Limits

REST and MCP error posture, retry rules, and rate-limit behavior.

HTTP Status Codes

StatusMeaningRetry posture
200Success.No retry needed.
201Created.No retry needed.
400Malformed JSON, invalid query/body, missing X-Version, or schema validation failure.Fix the request.
401Missing or invalid bearer token.Refresh credentials.
403Valid key but insufficient route, field, client, or project permission.Use a narrower workflow or request scope change.
404Resource is missing or invisible to this key.Verify ID and scope.
409Version conflict.Re-fetch, reconcile, retry with latest X-Version.
429Rate limit or backoff.Respect Retry-After.
500Server failure.Retry only if idempotent; include request_id when reporting.

Rate Limits

The shared Redis-backed limiter uses a 60-second rolling window and role-based budgets:

RoleRequests / 60 seconds
admin200
pm100
studio60
viewer30
client30

Repeated violations trigger exponential backoff. 429 responses include Retry-After when the route uses the shared limiter.

Idempotency

Use stable idempotency keys where the route supports them, especially for Shopify staged actions. For write routes without idempotency keys, avoid blind automatic retries after network errors unless the route can be safely de-duplicated by resource ID.

Conflict Recovery

For 409 or stale-version errors:

  1. Re-fetch the resource.
  2. Compare the latest version and fields.
  3. Reapply only the intended change.
  4. Retry with the new X-Version.