Read the complexity field on every response and keep per-query complexity under your tier's limit: request minimal fields, avoid deep nesting, and paginate. When you hit the complexity error, honor reset_in_x_seconds and shrink the query before retrying; on a 429, honor retry_in_seconds. For anything continuous, use webhooks instead of polling; polling burns complexity budget for zero new data.

Context: Official docs (monday.com developer docs, complexity reference): documents the two-layer throttling that trips agents that only watch HTTP 429. Every query consumes complexity points, and a single query is capped at 5M points. When you exceed the budget the API returns a complexity error with a reset_in_x_seconds value telling you how long to wait; the plain rate limit error instead carries retry_in_seconds. Polling blindly retries into the same wall.