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 Monitor providerId: microsoft-azure-monitor 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: - Rate Limiting - Observability - Microsoft Azure description: Azure Monitor surfaces multiple APIs each with separate rate limits - Log Ingestion API (Data Collection Rules), Logs Query API, Metrics API, Application Insights track API. Daily ingestion cap can be set per workspace. Query throttling is enforced per workspace and per user. sources: - https://learn.microsoft.com/en-us/azure/azure-monitor/service-limits - https://learn.microsoft.com/en-us/azure/azure-monitor/logs/api/timeouts - https://learn.microsoft.com/en-us/azure/azure-monitor/logs/daily-cap headers: retryAfter: Retry-After responseCodes: throttled: 429 serviceUnavailable: 503 limits: - name: Log Ingestion API per DCR throughput scope: data_collection_rule metric: bandwidth limit: 'see Azure Monitor service limits (default a few MB/sec per DCR)' - name: Logs Query API queries per user per workspace scope: user/workspace metric: queries_per_30_seconds limit: 200 timeFrame: second - name: Logs Query API concurrent queries per user scope: user metric: concurrent_queries limit: 5 - name: Logs Query API maximum data scanned per query scope: query metric: data_scanned limit: '64 GB per query (Analytics tier default)' - name: Logs Query API query timeout scope: query metric: timeout_seconds limit: 600 timeFrame: second - name: Application Insights track API per ingestion scope: app_insights_resource metric: events_per_second limit: 'see App Insights ingestion sampling and rate caps' - name: Daily ingestion cap (configurable) scope: workspace metric: gb_per_day limit: 'workspace-configurable; set to bound daily spend' - name: Metrics API requests per subscription scope: subscription metric: requests_per_minute limit: 'see Azure Monitor REST API limits' policies: - name: Honor Retry-After description: When ingestion or query APIs return 429 / 503, wait the duration in Retry-After and retry with exponential backoff. - name: Use sampling description: For Application Insights at high event rates, enable adaptive sampling to control cost and rate without code changes. - name: Daily cap to bound spend description: Set workspace daily cap to prevent runaway ingestion; cap triggers an alert when hit and stops ingestion until reset. - name: Use the Logs Ingestion API (DCR-based) for high volume description: New collectors should use the DCR-based Logs Ingestion API rather than the legacy Data Collector API for better throughput and schema control. - name: Batch and pre-aggregate metrics description: Pre-aggregate high-cardinality custom metrics client-side and emit per minute rather than per request to control sample-count costs. maintainers: - FN: Kin Lane email: kin@apievangelist.com