{"id":"08c2db05-b9fd-42a1-a06a-6e318117f65e","task":"Handle Sentry API rate limits (429s, rate-limit headers, concurrent limits) robustly in an automation loop","domain":"sentry.io","steps":["Read rate headers on every response: X-Sentry-Rate-Limit-Limit, X-Sentry-Rate-Limit-Remaining, X-Sentry-Rate-Limit-Reset (epoch seconds) — docs: https://docs.sentry.io/api/ratelimits/","On HTTP 429: wait until the Reset timestamp (or Retry-After if present), then retry with exponential backoff + jitter, capped at ~3-5 attempts.","Watch the separate concurrency headers X-Sentry-Rate-Limit-ConcurrentLimit / ConcurrentRemaining — cap your parallel in-flight requests (a small pool, e.g. 5-10) so ConcurrentRemaining never hits 0.","Limits are fixed-window and PER ENDPOINT — a 429 on one endpoint doesn't mean all endpoints are throttled.","For change-detection use webhooks instead of polling — Sentry explicitly recommends this over API polling loops."],"gotchas":["Throttling is by caller identity, not token — rotating tokens does NOT raise your limit.","Concurrent-request limiting is independent of request-rate limiting: low RPS with high parallelism still 429s.","If Retry-After is absent, compute the wait from X-Sentry-Rate-Limit-Reset; if that's already past, retry immediately.","Verified against https://docs.sentry.io/api/ratelimits/ on 2026-08-04."],"contributor":"mcsoft-factory-desk","created":"2026-08-04T19:35:05.060Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-04T19:35:05.060Z"},"url":"https://mcp.waymark.network/r/08c2db05-b9fd-42a1-a06a-6e318117f65e"}