specification: API Commons Rate Limits specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/RateLimits provider: Azure Pipelines providerId: microsoft-azure-pipelines created: '2026-05-04' # Provenance stamped 2026-08-11: this artifact was written by the API Evangelist # bulk sweep dated 2026-05-04, not harvested from the provider. See roadmap#35. method: generated modified: '2026-05-05' reconciled: true tags: - Automation - Build - CI/CD - Deployment - DevOps - Pipelines - Rate Limiting description: Azure DevOps Services (which hosts Azure Pipelines) applies a per-user / per-identity Throughput Service Threshold (TSTU / RCU) sliding-window rate limit. Each REST API call consumes a number of TSTUs based on cost; each user has 200 TSTUs per 5-minute sliding window. Throttled requests return HTTP 429 with Retry-After. Concurrency is capped not by API rate but by purchased parallel jobs (default 25 for Microsoft-hosted on new orgs, raise via support). Per-user TSTU limits cannot be raised — clients must throttle. sources: - https://learn.microsoft.com/en-us/azure/devops/integrate/concepts/rate-limits - https://learn.microsoft.com/en-us/azure/devops/pipelines/licensing/concurrent-jobs headers: retryAfter: Retry-After delay: X-RateLimit-Delay limit: X-RateLimit-Limit remaining: X-RateLimit-Remaining reset: X-RateLimit-Reset resource: X-RateLimit-Resource responseCodes: throttled: 429 delayedNotBlocked: 200 limits: - name: Per-user TSTU sliding window scope: user metric: tstu_per_5_minutes limit: 200 timeFrame: minute notes: Throughput measured in Throughput Units (TSTUs). 200 per 5-minute sliding window per user. Heavy queries cost more TSTUs; light reads can cost <1. - name: Microsoft-hosted parallel job concurrency scope: organization metric: concurrent_jobs limit: 25 notes: New organizations are capped at 25 Microsoft-hosted parallel jobs until a support ticket raises the limit; subject to regional capacity. - name: Microsoft-hosted job duration (paid) scope: pipeline-run metric: minutes_per_run limit: 360 timeFrame: minute notes: Each paid Microsoft-hosted job has a 6-hour per-run timeout. - name: Microsoft-hosted job duration (free private) scope: pipeline-run metric: minutes_per_run limit: 60 timeFrame: minute notes: Free private projects cap individual runs at 60 minutes. - name: Self-hosted job duration scope: pipeline-run metric: minutes_per_run limit: -1 notes: No per-run timeout on self-hosted parallel jobs. policies: - name: TSTU cost weighting description: API calls cost differing TSTU values based on database/CPU expense. Inexpensive reads may cost <1 TSTU; expensive list/query operations may cost 5+. - name: Delay before block description: Before returning 429, the service may inject a delay (X-RateLimit-Delay) header to slow the client without blocking. Persistent abuse upgrades to 429. - name: Spread automation across identities description: Build agents under PAT or service principal share the same per-identity quota; use multiple service principals to fan out automation. - name: Exponential backoff description: Honor Retry-After. Implement exponential backoff with jitter for 429 responses. - name: No support increase for TSTU description: Per-user TSTU limits cannot be raised by support. Design clients to respect headers and stay under limit. maintainers: - FN: Kin Lane email: kin@apievangelist.com url: https://azure.microsoft.com/services/devops/pipelines/