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: Microsoft Bicep providerId: microsoft-bicep 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: - ARM Templates - Azure - Cloud - Deployment - DevOps - Infrastructure as Code - Rate Limiting description: Bicep is a client-side compiler / language; it has no SaaS API surface of its own. Local CLI operations (bicep build, bicep decompile, bicep publish) have no rate limits beyond local-machine resources. When Bicep deployments execute against Azure, all rate limiting comes from Azure Resource Manager (ARM) and the target resource providers. Throttling responses, headers, and policies match the upstream ARM behavior. sources: - https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview - https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/request-limits-and-throttling headers: retryAfter: Retry-After remainingSubscriptionReads: x-ms-ratelimit-remaining-subscription-reads remainingSubscriptionWrites: x-ms-ratelimit-remaining-subscription-writes remainingSubscriptionDeletes: x-ms-ratelimit-remaining-subscription-deletes remainingResource: x-ms-ratelimit-remaining-resource responseCodes: throttled: 429 serviceUnavailable: 503 limits: - name: Bicep CLI local operations scope: local-machine metric: invocations_per_second limit: -1 notes: No rate limit; bound only by local CPU and memory. - name: ARM subscription writes (deployment plane) scope: subscription/region/serviceprincipal metric: requests_per_second limit: 10 timeFrame: second notes: Deployments are write operations against ARM. Bucket size 200 tokens, refill 10/sec. - name: ARM subscription reads (validation / what-if) scope: subscription/region/serviceprincipal metric: requests_per_second limit: 25 timeFrame: second notes: Bucket size 250, refill 25/sec. - name: ARM template deployment depth scope: subscription metric: nested_deployments limit: 800 notes: Maximum 800 nested deployments per top-level deployment; 5-level nesting limit. - name: ARM template size scope: deployment metric: bytes_compiled limit: 4194304 notes: Compiled JSON template ≤ 4 MB; max 256 parameters / 256 variables / 800 resources per template. - name: Resource-provider-specific limits scope: varies metric: varies limit: see vendor docs per provider (Microsoft.Compute, Microsoft.Network, Microsoft.Storage, etc.) notes: Each downstream resource provider applies its own throttling token buckets. policies: - name: ARM token-bucket retry description: Honor Retry-After on 429 responses. Azure SDKs implement exponential backoff automatically; Bicep CLI uses the SDK underneath. - name: Idempotent deployments description: Bicep deployments are idempotent — re-running with the same parameters yields the same state. Combine with what-if to preview changes without mutating state. - name: Modules to reduce single-deployment fan-out description: Break large templates into modules with serial / parallel scope to avoid hitting the per-deployment 800-resource cap. - name: Deployment scopes description: Bicep supports tenant, management group, subscription, and resource group deployment scopes. Subscription-scope deployments share the subscription-level token buckets. maintainers: - FN: Kin Lane email: kin@apievangelist.com url: https://github.com/Azure/bicep