Skip to content

Troubleshooting

Common issues

Symptom Likely cause Resolution
401 invalid_token Expired or malformed credential Refresh OAuth token or rotate API key.
403 insufficient_scope Token lacks action scope Reauthorize with the named scope.
400 invalid_parameter Missing/invalid region Use an uppercase ISO region code.
429 rate_limited Per-key or per-user quota exhausted Honor Retry-After; add caching and backoff.
WebSocket 4001 Authentication or heartbeat expired Authenticate first; answer ping within 10 seconds.
Missing price No active offer in requested region Check /stores regions and offer availability.

API and authentication diagnosis

Capture the response X-Request-Id, status, endpoint, and timestamp. Do not send credentials to support. Confirm sandbox keys use sandbox URL, production tokens have the correct audience, and the system clock is accurate.

WebSocket diagnosis

Wait for auth.ok before subscribing. Keep a resume checkpoint per channel and use REST reconciliation when the server reports resume_unavailable. Proxy configuration must allow WebSocket upgrades and an idle timeout above 35 seconds.

FAQ

Why does an offer differ from checkout? Store inventory, tax, eligibility, and merchant updates can change after an observation. Display observed_at and treat purchase_url as authoritative.

Can I scrape SteamDeals? Use the API within your plan and published rate limits. The website is not a bulk data interface.