[metadata]
adobe-target: true
asset_id: azure-resource-manager/management/request-limits-and-throttling
author: Xelu86
breadcrumb_path: /azure/bread/toc.json
cmProducts: https://authoring-docs-microsoft.poolparty.biz/devrel/4e834929-0ce1-4c1d-9c81-fcb14721edfb
color-scheme: light dark
depot_name: Azure.azure-documents
description: Learn how Azure Resource Manager throttles requests when subscription limits are reached and how to respond.
document_id: 3fb31632-581a-56fc-6ee8-5877388bb0b2
document_version_independent_id: 09bc0fef-0e2b-a4dc-c74d-9883c8815be3
feedback_help_link_type: get-help-at-qna
feedback_help_link_url: https://learn.microsoft.com/answers/tags/133/azure
feedback_product_url: https://feedback.azure.com/d365community/forum/9a0ece70-ff24-ec11-b6e6-000d3a4f07b8
feedback_system: Standard
git_commit_id: b88af70a2ae0f2426a25fad013667f992926eb4a
gitcommit: https://github.com/MicrosoftDocs/azure-docs-pr/blob/b88af70a2ae0f2426a25fad013667f992926eb4a/articles/azure-resource-manager/management/request-limits-and-throttling.md
github_feedback_content_git_url: https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/azure-resource-manager/management/request-limits-and-throttling.md
item_type: Content
learn_banner_products: azure
locale: en-us
markdown_url: https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/request-limits-and-throttling?accept=text/markdown
ms.author: jgao
ms.custom: devx-track-arm-template
ms.date: 2026-02-27T00:00:00Z
ms.service: azure-resource-manager
ms.subservice: management
ms.suite: office
ms.topic: article
ms.update-cycle: 365-days
og:description: Learn how Azure Resource Manager throttles requests when subscription limits are reached and how to respond.
og:image: https://learn.microsoft.com/en-us/media/open-graph-image.png
og:image:alt: Microsoft Learn
og:title: Understand how Azure Resource Manager throttles requests - Azure Resource Manager
og:type: website
og:url: https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/request-limits-and-throttling
original_content_git_url: https://github.com/MicrosoftDocs/azure-docs-pr/blob/live/articles/azure-resource-manager/management/request-limits-and-throttling.md
page_type: conceptual
pdf_url_template: https://learn.microsoft.com/pdfstore/en-us/Azure.azure-documents/{branchName}{pdfName}
permissioned-type: public
platform_id: 88d4057b-4a2d-0420-80d3-baa1e0d649cb
previous_tlsh_hash: D0120B22650D8710FE838C419D23B65015F0D24897B47EE81035776761CA1C3B9F9A79E7A7A39BCB6230869301C63E0E8281BB7DA13C623A2168E9FE816C319F79C87774DB
recommendation_types: Certification
recommendation_types: Training
recommendations: true
schema: Conceptual
scope: Azure,Azure management service
site_name: Docs
source_path: articles/azure-resource-manager/management/request-limits-and-throttling.md
spProducts: https://authoring-docs-microsoft.poolparty.biz/devrel/75670257-a3f0-4627-9981-8046f99219e6
toc_rel: toc.json
twitter:card: summary_large_image
twitter:site: @MicrosoftLearn
uhfHeaderId: azure
updated_at: 2026-04-03T17:16:00Z
viewport: width=device-width, initial-scale=1.0
word_count: 1662

[canonical-links]
https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/request-limits-and-throttling

[document-links]
AI Disclaimer: https://learn.microsoft.com/en-us/principles-for-ai-generated-content
AKS troubleshooting: /en-us/azure/aks/troubleshooting#im-receiving-429---too-many-requests-errors
ARG GET/LIST API: ../../governance/resource-graph/concepts/azure-resource-graph-get-list-api
Accessing Azure Resource Manager metrics: /en-us/azure/azure-resource-manager/management/monitor-resource-manager#accessing-azure-resource-manager-metrics
Azure Key Vault throttling guidance: /en-us/azure/key-vault/general/overview-throttling
Azure Resource Graph: ../../governance/resource-graph/overview
Azure subscription and service limits, quotas, and constraints: azure-subscription-service-limits
Blog: https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog
Call rate informational response headers: /en-us/troubleshoot/azure/virtual-machines/troubleshooting-throttling-errors#call-rate-informational-response-headers
Check ARM Limits for a Given Subscription: https://github.com/Microsoft/csa-misc-utils/tree/master/psh-GetArmLimitsViaAPI
Compute Throttling Limits: /en-us/azure/virtual-machines/compute-throttling-limits
Consumer Health Privacy: https://go.microsoft.com/fwlink/?linkid=2259814
Contribute: https://learn.microsoft.com/en-us/contribute
Download Microsoft Edge: https://go.microsoft.com/fwlink/p/?LinkID=2092881
Edit: https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/azure-resource-manager/management/request-limits-and-throttling.md
How to migrate from the metrics API to the getBatch API: /en-us/azure/azure-monitor/essentials/migrate-to-batch-api
Managed identities: ../../active-directory/managed-identities-azure-resources/managed-identities-faq#are-there-any-rate-limits-that-apply-to-managed-identities
More info about Internet Explorer and Microsoft Edge: https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge
Previous Versions: https://learn.microsoft.com/en-us/previous-versions/
Privacy: https://go.microsoft.com/fwlink/?LinkId=521839
Resource Graph throttling headers: ../../governance/resource-graph/concepts/azure-resource-graph-get-list-api
Retry guidance for Azure services: /en-us/azure/architecture/best-practices/retry-service-specific
Terms of Use: https://learn.microsoft.com/en-us/legal/termsofuse
Track asynchronous Azure operations: async-operations
Trademarks: https://www.microsoft.com/legal/intellectualproperty/Trademarks/
Your Privacy Choices: https://aka.ms/yourcaliforniaprivacychoices
token bucket algorithm: https://en.wikipedia.org/wiki/Token_bucket
usage limits for Azure DNS: /en-us/azure/dns/dns-faq#what-are-the-usage-limits-for-azure-dns-

[content]
Understand how Azure Resource Manager throttles requests - Azure Resource Manager | Microsoft Learn
Skip to main content
Skip to Ask Learn chat experience
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
Table of contents
Exit editor mode
Ask Learn
Ask Learn
Reading mode
Table of contents
Read in English
Add
Add to Plans
Edit
Copy Markdown
Print
Note
Access to this page requires authorization. You can try
signing in
or
changing directories
.
Access to this page requires authorization. You can try
changing directories
.
Understand how Azure Resource Manager throttles requests
Feedback
Summarize this article for me
In this article
This article describes how Azure Resource Manager throttles requests. It shows you how to track the number of requests that remain before reaching the limit, and how to respond when you reach the limit.
Regional throttling and token bucket algorithm
Microsoft has migrated Azure subscriptions to an updated throttling architecture as of 2024. Throttling limits are now applied per region rather than per instance of Azure Resource Manager. This new architecture uses a
token bucket algorithm
to manage API throttling.
The token bucket represents the maximum number of requests that you can send for each second. When you reach the maximum number of requests, the refill rate determines how quickly tokens become available in the bucket.
These updated limits make it easier for you to refresh and manage your quota.
The updated limits for public and sovereign clouds are:
Scope
Operations
Bucket size
Refill rate per sec
Subscription
reads
250
25
Subscription
deletes
200
10
Subscription
writes
200
10
Tenant
reads
250
25
Tenant
deletes
200
10
Tenant
writes
200
10
The subscription limits apply per subscription, per service principal, and per operation type. There are also global subscription limits that are equivalent to 15 times the individual service principal limits for each operation type. The global limits apply across all service principals. Requests are throttled if the global, service principal, or tenant specific limits are exceeded.
The limits might be smaller for free or trial customers.
For example, suppose you have a bucket size of 250 tokens for read requests and refill rate of 25 tokens per second. If you send 250 read requests in a second, the bucket is empty and your requests are throttled. Each second, 25 tokens become available until the bucket reaches its maximum capacity of 250 tokens. You can use tokens as they become available.
Reading metrics using the
*/providers/microsoft.insights/metrics
API contributes significantly to overall Azure Resource Manager traffic and is a common cause of subscription throttling events. If you use this API heavily, we recommend that you switch to the
getBatch
API. You can query multiple resources in a single REST request, which improves performance and reduces throttling. For more information about converting your operations, see
How to migrate from the metrics API to the getBatch API
.
How can I view my throttled requests?
To view your throttled requests and other Resource Manager metrics, see
Accessing Azure Resource Manager metrics
.
Why is throttling per region rather than per instance?
Since different regions have a different number of Resource Manager instances, throttling per instance causes inconsistent throttling performance. Throttling per region makes throttling consistent and predictable.
How does the updated throttling experience affect my limits?
You can send more requests. Write requests increase by 30 times. Delete requests increase by 2.4 times. Read requests increase by 7.5 times.
Background Job Throttling
Background jobs in Azure Resource Manager (ARM) are automated tasks that run behind the scenes to support operations such as resource deployments, diagnostics, and system maintenance. These jobs are essential for processing user requests and ensuring service functionality. To maintain platform stability and reliability, ARM employs background job throttling to manage the load from these tasks.
You can identify when background job throttling occurs if you receive the following error message:
The request for subscription '{0}' could not be processed due to an excessive volume of traffic. Please try again later.
Customers might experience throttling due to excessive background jobs, which can be triggered by high-frequency operations or system-wide activities. While customers do not have direct control over the creation or execution of these jobs, awareness of potential throttling is important.
Resource provider limits
Resource providers apply their own throttling limits. Within each subscription, the resource provider throttles per region of the resource in the request. Because Resource Manager throttles by instance of Resource Manager, and there are several instances of Resource Manager in each region, the resource provider might receive more requests than the default limits in the previous section.
This section discusses the throttling limits of some widely used resource providers.
Storage throttling
The following limits apply only when you perform management operations by using Azure Resource Manager with Azure Storage and the Storage Resource Provider. The limits apply per subscription per region of the resource in the request.
Resource
Limit
Storage account management operations (read)
800 per 5 minutes
Storage account management operations (write)
10 per second / 1200 per hour
Storage account management operations (list)
100 per 5 minutes
Network throttling
The Microsoft.Network resource provider applies the following throttle limits:
Operation
Limit
write / delete (PUT)
1,000 per 5 minutes
read (GET)
10,000 per 5 minutes
In addition to those general limits, see the
usage limits for Azure DNS
.
Compute throttling
Microsoft Compute implements throttling to provide an optimal experience for Virtual Machine and Virtual Machine Scale Set users.
Compute Throttling Limits
provides comprehensive information on throttling policies and limits for VM, Virtual Machine Scale Sets, and Scale Set VMs.
Azure Resource Graph throttling
Azure Resource Graph
limits the number of requests to its operations. The steps in this article to determine the remaining requests and how to respond when the limit is reached also apply to Resource Graph. However, Resource Graph sets its own limit and reset rate. For more information, see
Resource Graph throttling headers
.
Azure Resource Graph also has a solution that enables an additional mechanism for getting resource data when you have reached resource provider throttling limits by seamlessly integrating with existing Azure Resource Manager control plane GET and LIST APIs-offering a powerful, scalable solution for resource data access. For more information, see
ARG GET/LIST API
.
Other resource providers
For information about throttling in other resource providers, see:
Azure Key Vault throttling guidance
AKS troubleshooting
Managed identities
Error code
When you reach the limit, you receive the HTTP status code
429 Too many requests
. The response includes a
Retry-After
value, which specifies the number of seconds your application should wait before sending the next request. If you send a request before the retry value elapses, your request isn't processed and a new retry value is returned.
If you're using an Azure SDK, the SDK might have an auto retry configuration. For more information, see
Retry guidance for Azure services
.
Some resource providers return 429 to report a temporary problem. The problem could be an overload condition that your request didn't cause. Or, it could be a temporary error about the state of the target resource or dependent resource. For example, the network resource provider returns 429 with the
RetryableErrorDueToAnotherOperation
error code when another operation locks the target resource. To determine if the error comes from throttling or a temporary condition, view the error details in the response.
Remaining requests
You can determine the number of remaining requests by examining response headers. Read requests return a value in the header for the number of remaining read requests. Write requests include a value for the number of remaining write requests. The following table describes the response headers you can examine for those values:
Response header
Description
x-ms-ratelimit-remaining-subscription-deletes
Subscription scoped deletes remaining. This value is returned on delete operations.
x-ms-ratelimit-remaining-subscription-reads
Subscription scoped reads remaining. This value is returned on read operations.
x-ms-ratelimit-remaining-subscription-writes
Subscription scoped writes remaining. This value is returned on write operations.
x-ms-ratelimit-remaining-tenant-reads
Tenant scoped reads remaining.
x-ms-ratelimit-remaining-tenant-writes
Tenant scoped writes remaining.
x-ms-ratelimit-remaining-subscription-resource-requests
Remaining subscription scoped resource type requests.
This header value is returned only if a service overrides the default limit. Resource Manager adds this value instead of the subscription reads or writes.
x-ms-ratelimit-remaining-subscription-resource-entities-read
Remaining subscription scoped resource type collection requests.
This header value is returned only if a service overrides the default limit. This value provides the number of remaining collection requests (list resources).
x-ms-ratelimit-remaining-tenant-resource-requests
Remaining tenant scoped resource type requests.
This header is added for requests at tenant level and only if a service overrides the default limit. Resource Manager adds this value instead of the tenant reads or writes.
x-ms-ratelimit-remaining-tenant-resource-entities-read
Tenant scoped resource type collection requests remaining.
This header is only added for requests at tenant level and only if a service overrides the default limit.
The resource provider can also return response headers with information about remaining requests. For information about response headers returned by the Compute resource provider, see
Call rate informational response headers
.
Retrieving the header values
Retrieving these header values in your code or script is no different than retrieving any header value.
For example, in
C#
, you retrieve the header value from an
HttpWebResponse
object named
response
with the following code:
response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)
In
PowerShell
, retrieve the header value from an
Invoke-WebRequest
operation.
$r = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/{guid}/resourcegroups?api-version=2016-09-01 -Method GET -Headers $authHeaders $r.Headers["x-ms-ratelimit-remaining-subscription-reads"]
For a complete PowerShell example, see
Check ARM Limits for a Given Subscription
.
To see the remaining requests for debugging, provide the
-Debug
parameter on your
PowerShell
cmdlet.
Get-AzResourceGroup -Debug
The response includes many values, including the following response value:
DEBUG: ============================ HTTP RESPONSE ============================ Status Code: OK Headers: Pragma : no-cache x-ms-ratelimit-remaining-subscription-reads: 11999
To get write limits, use a write operation:
New-AzResourceGroup -Name myresourcegroup -Location westus -Debug
The response includes many values, including the following values:
DEBUG: ============================ HTTP RESPONSE ============================ Status Code: Created Headers: Pragma : no-cache x-ms-ratelimit-remaining-subscription-writes: 1199
In
Azure CLI
, you use the more verbose option to retrieve the header value:
az group list --verbose --debug
The command returns many values, including the following values:
msrest.http_logger : Response status: 200 msrest.http_logger : Response headers: msrest.http_logger : 'Cache-Control': 'no-cache' msrest.http_logger : 'Pragma': 'no-cache' msrest.http_logger : 'Content-Type': 'application/json; charset=utf-8' msrest.http_logger : 'Content-Encoding': 'gzip' msrest.http_logger : 'Expires': '-1' msrest.http_logger : 'Vary': 'Accept-Encoding' msrest.http_logger : 'x-ms-ratelimit-remaining-subscription-reads': '11998'
To get write limits, use a write operation:
az group create -n myresourcegroup --location westus --verbose --debug
The operation returns many values, including the following values:
msrest.http_logger : Response status: 201 msrest.http_logger : Response headers: msrest.http_logger : 'Cache-Control': 'no-cache' msrest.http_logger : 'Pragma': 'no-cache' msrest.http_logger : 'Content-Length': '163' msrest.http_logger : 'Content-Type': 'application/json; charset=utf-8' msrest.http_logger : 'Expires': '-1' msrest.http_logger : 'x-ms-ratelimit-remaining-subscription-writes': '1199'
Next steps
For more information about limits and quotas, see
Azure subscription and service limits, quotas, and constraints
.
To learn about handling asynchronous REST requests, see
Track asynchronous Azure operations
.
Feedback
Was this page helpful?
Yes
No
No
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Ask Learn
Ask Learn
Suggest a fix?
Additional resources
Last updated on
2026-04-03
In this article
Was this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Ask Learn
Ask Learn
Suggest a fix?
en-us
Your Privacy Choices
Theme
Light
Dark
High contrast
AI Disclaimer
Previous Versions
Blog
Contribute
Privacy
Consumer Health Privacy
Terms of Use
Trademarks
© Microsoft 2026
