429 with Retry-After. Successful requests that waited may include X-Scrinly-RateLimit-Bucket and X-Scrinly-RateLimit-Waited; the bucket is a safe normalized identifier, not a copy of the submitted URL.
Spread unrelated work across the queue and use exponential backoff with jitter. Retrying immediately at high concurrency increases contention and can extend the delay. Status polling is read-only and does not consume a browser slot.
Provider rate limits for Visual Style Guide generation are normalized into typed style_guide_* errors. Scrinly does not silently fall back to another provider or model.