Reduce Azure API Management costs by 25-78% through tier right-sizing, autoscale configuration, rate limiting, and platform migration — with specific guidance for MSPs managing multiple gateway instances.
An MSP managing 15 Azure API Management instances across customer tenants discovered that 12 were running on tiers designed for workloads three to five times their actual traffic. After a systematic review, they reduced monthly gateway spend from $18,000 to $7,200 — a 60% reduction — without changing a single API endpoint.
Azure API Management costs grow unpredictably when tiers, capacity units, and consumption patterns go unmonitored. Spotto analyzes API Management instances to identify tier mismatches, idle capacity, untracked spend, and legacy platform risks — then generates specific recommendations that typically reduce gateway costs by 25-78% depending on current configuration.
The approach works by matching tier selection to actual traffic, enabling autoscale to remove idle instances, filtering billable requests before they reach the gateway, and migrating deprecated infrastructure to supported platforms. Organizations running multiple API Management instances across environments see the largest impact, particularly managed service providers managing gateways on behalf of several customers.
Azure API Management pricing is tier-based, and each tier bundles features that many deployments never use. A single Premium instance costs roughly four times what Standard v2 charges for equivalent throughput when the only Premium feature in use is VNet integration. Multiply that across development, staging, and production environments — and across multiple customer tenants for MSPs — and the overspend compounds.
The problems break down into four categories:
For managed service providers, API Management cost inefficiency compounds across every customer tenant. An MSP managing 20 tenants where each instance is one tier too high overpays by 20x the single-instance penalty. A single Premium instance that should be Standard v2 wastes approximately $2,800/month. Across 20 tenants, that becomes $56,000/month in avoidable spend. This is the core reason MSPs see the largest absolute savings from systematic API Management cost review.
Understanding the tier landscape is essential for right-sizing. The following table summarizes the current Azure API Management tiers, their pricing models, and the key features and constraints of each.
| Tier | Pricing Model | Key Features | Key Constraints |
|---|---|---|---|
| Developer | Fixed monthly | Full feature set, developer portal, policy engine | No SLA, single unit only, not for production |
| Consumption | Per API call | Pay-per-use, auto-scales, no idle cost | Cold starts, limited policies, no VNet, no developer portal |
| Basic v2 | Fixed per unit | Production-ready SLA, developer portal, custom domains | No VNet integration, limited scale units |
| Standard v2 | Fixed per unit | VNet integration, higher scale, multi-region | Regional availability limited, no self-hosted gateway included |
| Premium v2 | Fixed per unit | All v2 features, self-hosted gateway, highest scale | Highest cost, regional availability limited |
| Classic Basic | Fixed per unit | Legacy production tier, basic policies | stv1 retiring, no VNet, limited throughput |
| Classic Standard | Fixed per unit | Legacy production tier, more scale than Basic | stv1 retiring, VNet external only |
| Classic Premium | Fixed per unit | Full VNet (internal + external), multi-region, self-hosted gateway | stv1 retiring, highest legacy cost |
Key distinction: Classic tiers run on stv1 or stv2 compute. V2 tiers (Basic v2, Standard v2, Premium v2) are a separate product line with different pricing and capabilities. You cannot migrate in-place from a Classic tier to a v2 tier — a new instance must be provisioned and APIs re-imported.
Right-sizing is the highest-impact optimization for most API Management deployments. It addresses the root cause: the tier selected at deployment time no longer matches actual usage patterns.
Recommendation 1: If monthly requests are below 10M and no VNet is needed, move to Basic v2 (78% savings)
Query your actual request volume to determine whether the current tier is justified:
# Check monthly request count for an APIM instance
az monitor metrics list \
--resource "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.ApiManagement/service/{apim-name}" \
--metric "TotalRequests" \
--interval P30D \
--aggregation Total \
--output tableIf the total is below 10 million requests per month and no VNet integration is required, Basic v2 provides a production-grade SLA at a fraction of the cost. Moving from Classic Standard to Basic v2 typically saves 78%.
Recommendation 2: If Capacity metric stays below 70%, scale horizontally within current tier
The Capacity metric is the primary indicator of whether your APIM instance is right-sized. Check it over time:
# Check average Capacity metric over 7 days
az monitor metrics list \
--resource "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.ApiManagement/service/{apim-name}" \
--metric "Capacity" \
--interval P7D \
--aggregation Average \
--output tableIf average Capacity remains below 70% consistently, the instance has headroom that you are paying for but not using. Consider reducing the number of scale units or enabling autoscale to dynamically match capacity to demand.
Recommendation 3: If running a tier with unused features, evaluate the next lower tier
Check which Premium or Standard features are actually in use:
# List VNet configuration on APIM instance
az apim show \
--name {apim-name} \
--resource-group {rg} \
--query "virtualNetworkType" \
--output tsv
# Check for multi-region deployments
az apim show \
--name {apim-name} \
--resource-group {rg} \
--query "additionalLocations" \
--output tableIf virtualNetworkType returns "None" and there are no additional locations, the instance does not use features that require Premium. Evaluate whether Standard v2 or Basic v2 meets the actual requirements.
Recommendation 1: Premium to Standard v2 for VNet (~75% savings)
Standard v2 now supports VNet integration, which was previously a Premium-only feature. If VNet integration is the only reason for running Premium, migration to Standard v2 delivers approximately 75% cost reduction.
# Create a new Standard v2 instance with VNet integration
az apim create \
--name {new-apim-name} \
--resource-group {rg} \
--publisher-name "Your Org" \
--publisher-email [email protected] \
--sku-name StandardV2 \
--sku-capacity 1 \
--virtual-network-type External \
--location {region}
# Export APIs from existing instance
az apim api export \
--resource-group {rg} \
--service-name {old-apim-name} \
--api-id {api-id} \
--export-format OpenApi \
--file-path ./api-export.jsonRecommendation 2: Enable autoscale with Bicep template
Autoscale removes idle capacity during low-traffic periods and adds capacity during peaks. This is particularly effective for APIs with predictable daily or weekly traffic patterns.
// Bicep template for APIM autoscale
resource apimAutoscale 'Microsoft.Insights/autoscalesettings@2022-10-01' = {
name: '${apimName}-autoscale'
location: location
properties: {
enabled: true
targetResourceUri: apimResourceId
profiles: [
{
name: 'default'
capacity: {
minimum: '1'
maximum: '4'
default: '1'
}
rules: [
{
metricTrigger: {
metricName: 'Capacity'
metricResourceUri: apimResourceId
timeGrain: 'PT1M'
statistic: 'Average'
timeWindow: 'PT10M'
timeAggregation: 'Average'
operator: 'GreaterThan'
threshold: 70
}
scaleAction: {
direction: 'Increase'
type: 'ChangeCount'
value: '1'
cooldown: 'PT20M'
}
}
{
metricTrigger: {
metricName: 'Capacity'
metricResourceUri: apimResourceId
timeGrain: 'PT1M'
statistic: 'Average'
timeWindow: 'PT30M'
timeAggregation: 'Average'
operator: 'LessThan'
threshold: 30
}
scaleAction: {
direction: 'Decrease'
type: 'ChangeCount'
value: '1'
cooldown: 'PT30M'
}
}
]
}
]
}
}Recommendation 3: Non-production environments to Developer tier (~70% savings)
Development, QA, and staging environments often run on the same tier as production. The Developer tier provides the same feature set without an SLA, at approximately 70% lower cost.
# Scale non-production APIM to Developer tier
az apim update \
--name {apim-name} \
--resource-group {rg} \
--sku-name Developer \
--sku-capacity 1Key constraint: Standard v2 and Premium v2 are not available in all Azure regions. Check regional availability before planning a tier migration. If your current region is not supported, you may need to deploy to a nearby region and update DNS routing.
Recommendation 1: Rate limiting with XML policies
Rate limiting prevents excessive API calls from consuming billable capacity. This is particularly effective against bot traffic, retry storms, and misconfigured clients.
<!-- Rate limiting policy: 1000 calls per minute per subscription -->
<policies>
<inbound>
<rate-limit-by-key
calls="1000"
renewal-period="60"
counter-key="@(context.Subscription.Id)"
increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 400)"
remaining-calls-header-name="x-ratelimit-remaining"
total-calls-header-name="x-ratelimit-limit" />
<quota-by-key
calls="50000"
renewal-period="86400"
counter-key="@(context.Subscription.Id)"
increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 400)" />
</inbound>
</policies>Rate limiting typically reduces billable requests by approximately 15% by filtering traffic that would otherwise consume gateway capacity without delivering business value.
Recommendation 2: On-premise migration (3-6 month phased approach)
For organizations running self-hosted gateways or considering hybrid architectures, consolidating on-premise API gateways into Azure API Management can reduce total gateway cost by 50-70%. The migration follows a 6-step phased approach:
Recommendation 3: Consumption tier for sporadic traffic
APIs with sporadic or unpredictable traffic patterns are candidates for the Consumption tier. With no idle cost and pay-per-call pricing, the Consumption tier eliminates the fixed monthly charge for APIs that may only receive a few thousand calls per day.
# Create a Consumption tier APIM instance
az apim create \
--name {apim-name}-consumption \
--resource-group {rg} \
--publisher-name "Your Org" \
--publisher-email [email protected] \
--sku-name Consumption \
--location {region}Consumption tier saves 60-80% compared to fixed-tier pricing for APIs with fewer than 1 million calls per month. Be aware of cold-start latency (typically 1-3 seconds for the first request after idle periods) and the limited policy set.
Recommendation 4: Use the Azure Pricing Calculator for scenario modeling
Before committing to a tier change, model the cost in the Azure Pricing Calculator. Input your actual request volumes, expected scale units, and region to compare tier costs side by side. This prevents surprises during migration and provides documentation for change approval processes.
Monitoring is the foundation that makes all other optimizations sustainable. Without visibility into API Management costs, savings decay as configurations drift over time.
Recommendation 1: Create resource-level budget alerts
# Create a budget alert for APIM resource group
az consumption budget create \
--budget-name "apim-monthly-budget" \
--amount 5000 \
--category Cost \
--resource-group {rg} \
--time-grain Monthly \
--start-date 2026-02-01 \
--end-date 2027-02-01 \
--notifications '{
"Actual_GreaterThan_80_Percent": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 80,
"contactEmails": ["[email protected]"],
"contactRoles": ["Owner"]
},
"Forecasted_GreaterThan_100_Percent": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 100,
"contactEmails": ["[email protected]"],
"contactRoles": ["Owner"]
}
}'Recommendation 2: Enable diagnostic logging for cost attribution
# Enable diagnostic settings to Log Analytics
az monitor diagnostic-settings create \
--name "apim-diagnostics" \
--resource "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.ApiManagement/service/{apim-name}" \
--workspace "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.OperationalInsights/workspaces/{workspace-name}" \
--logs '[{"category":"GatewayLogs","enabled":true,"retentionPolicy":{"enabled":true,"days":90}}]' \
--metrics '[{"category":"AllMetrics","enabled":true,"retentionPolicy":{"enabled":true,"days":90}}]'Recommendation 3: Build cost allocation views by API and subscription
// KQL query: Request count by API and product (for chargeback)
ApiManagementGatewayLogs
| where TimeGenerated > ago(30d)
| summarize RequestCount = count(),
AvgResponseTime = avg(TotalTime),
ErrorCount = countif(ResponseCode >= 400)
by ApiId, ProductId, SubscriptionId = UserId
| order by RequestCount descRecommendation 4: Tag APIM instances for cost management
# Tag APIM instances for cost tracking
az apim update \
--name {apim-name} \
--resource-group {rg} \
--tags "Environment=Production" "CostCenter=Engineering" "Customer=TenantA" "ManagedBy=MSP"Recommendation: Deploy WAF in front of API Management
A Web Application Firewall (WAF) deployed upstream of API Management filters malicious traffic, bot requests, and DDoS attempts before they consume billable API gateway capacity. This typically reduces billable requests by approximately 25%.
# Deploy Application Gateway with WAF v2 in front of APIM
az network application-gateway waf-policy create \
--name "apim-waf-policy" \
--resource-group {rg} \
--type OWASP \
--version 3.2
# Create managed rule set
az network application-gateway waf-policy managed-rule rule-set add \
--policy-name "apim-waf-policy" \
--resource-group {rg} \
--type OWASP \
--version 3.2
# Add bot protection
az network application-gateway waf-policy managed-rule rule-set add \
--policy-name "apim-waf-policy" \
--resource-group {rg} \
--type Microsoft_BotManagerRuleSet \
--version 1.0The WAF cost is typically offset within the first month by the reduction in billable API calls. For high-traffic APIs receiving significant bot traffic, the ROI is immediate.
For organizations using Azure OpenAI through API Management, Provisioned Throughput Units (PTUs) offer predictable pricing. Routing API calls to PTU backends when capacity is available reduces pay-as-you-go token costs by approximately 25%.
<!-- PTU-first routing policy: try PTU backend, fall back to PAYG -->
<policies>
<inbound>
<set-variable name="ptuBackendUrl" value="https://{ptu-endpoint}.openai.azure.com" />
<set-variable name="paygBackendUrl" value="https://{payg-endpoint}.openai.azure.com" />
</inbound>
<backend>
<retry condition="@(context.Response.StatusCode == 429)" count="1" interval="0">
<choose>
<when condition="@(context.Variables.GetValueOrDefault<int>("retryCount", 0) == 0)">
<set-backend-service base-url="@((string)context.Variables["ptuBackendUrl"])" />
<set-variable name="retryCount" value="1" />
</when>
<otherwise>
<set-backend-service base-url="@((string)context.Variables["paygBackendUrl"])" />
</otherwise>
</choose>
</retry>
</backend>
</policies>Built-in response caching in API Management reduces backend calls by serving cached responses for repeated requests. This reduces both backend compute costs and API Management throughput consumption.
<!-- Cache policy: cache GET responses for 300 seconds -->
<policies>
<inbound>
<cache-lookup vary-by-developer="false"
vary-by-developer-groups="false"
allow-private-response-caching="false"
must-revalidate="false"
downstream-caching-type="none">
<vary-by-header>Accept</vary-by-header>
<vary-by-header>Accept-Charset</vary-by-header>
<vary-by-query-parameter>version</vary-by-query-parameter>
</cache-lookup>
</inbound>
<outbound>
<cache-store duration="300" />
</outbound>
</policies>Monitor cache effectiveness using the following KQL query:
// KQL: Cache hit rate analysis
ApiManagementGatewayLogs
| where TimeGenerated > ago(7d)
| extend CacheHit = (Cache == "hit")
| summarize
TotalRequests = count(),
CacheHits = countif(CacheHit),
CacheMisses = countif(not(CacheHit)),
HitRate = round(100.0 * countif(CacheHit) / count(), 2)
by ApiId
| order by TotalRequests descThe following table summarizes the expected cost impact and implementation complexity of each optimization strategy.
| Strategy | Estimated Savings | Implementation Complexity |
|---|---|---|
| Tier right-sizing | 25-78% | Medium |
| Autoscale | 20-30% | Medium |
| Developer tier (non-prod) | ~70% | Low |
| Consumption tier | 60-80% | Medium |
| Rate limiting | ~15% | Medium |
| Upstream WAF | ~25% | Medium |
| Built-in caching | ~30% | Low |
| PTU routing | ~25% | Medium |
| On-premise consolidation | 50-70% | High |
| Combined (typical) | 40-70% | Varies |
The stv1 compute platform for Azure API Management was officially retired on August 31, 2024. Instances still running on stv1 are at risk of service degradation and will eventually be force-migrated by Microsoft. Proactive migration to stv2 ensures continuity and positions the instance for future v2 tier upgrades.
For non-VNet instances:
# Check current platform version
az apim show \
--name {apim-name} \
--resource-group {rg} \
--query "platformVersion" \
--output tsv
# Migrate non-VNet instance from stv1 to stv2
az apim update \
--name {apim-name} \
--resource-group {rg} \
--set platformVersion=stv2For VNet-injected instances:
# For VNet-injected instances, migrate requires a new subnet
# Step 1: Create a new subnet for stv2
az network vnet subnet create \
--name "apim-stv2-subnet" \
--resource-group {rg} \
--vnet-name {vnet-name} \
--address-prefixes "10.0.2.0/24" \
--delegations "Microsoft.ApiManagement/service"
# Step 2: Trigger platform migration with new subnet
az apim update \
--name {apim-name} \
--resource-group {rg} \
--set platformVersion=stv2 \
--set virtualNetworkConfiguration.subnetResourceId="/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet-name}/subnets/apim-stv2-subnet"Warning: The stv1 to stv2 migration is irreversible. Once migrated, you cannot roll back to stv1. The migration process takes 45-90 minutes during which the instance remains available but management operations are blocked. Always test the migration in a non-production environment first and schedule production migrations during maintenance windows.
Basic v2 is the lowest-cost production-ready tier with an SLA. It supports custom domains, developer portal, and standard policy engine. For APIs with fewer than 10 million requests per month that do not require VNet integration, Basic v2 is typically the most cost-effective choice. For sporadic workloads, the Consumption tier has no idle cost but carries cold-start latency and a more limited feature set.
No. Classic tiers and v2 tiers are separate product lines. You cannot perform an in-place tier change from Classic Premium to Standard v2. Instead, provision a new Standard v2 instance, export and import APIs, migrate policies, update DNS routing, and decommission the old instance. The transition can be done with zero downtime using traffic manager or DNS-based routing to shift traffic gradually.
Autoscale monitors the Capacity metric and adjusts the number of scale units within a tier. When Capacity exceeds a threshold (typically 70%), a new unit is added. When it drops below a lower threshold (typically 30%), a unit is removed. Autoscale is configured through Azure Monitor autoscale settings and applies to Standard, Premium, Standard v2, and Premium v2 tiers. The Developer and Consumption tiers do not support manual or autoscale units.
Capacity is a synthetic metric (0-100%) that represents the overall utilization of an API Management instance. It accounts for CPU, memory, network, and queue length. A sustained Capacity above 80% indicates the instance is approaching its limits and may benefit from additional scale units. A sustained Capacity below 30% suggests the instance is over-provisioned and could be scaled down or moved to a lower tier.
Yes. The stv1 compute platform was retired on August 31, 2024. Microsoft has begun force-migrating remaining stv1 instances. Instances that are not proactively migrated may experience service disruption during force migration, and the timing is not within customer control. Proactive migration allows you to schedule the change during a maintenance window, validate the result, and ensure VNet configuration is correct.
Enable diagnostic logging to Log Analytics and query GatewayLogs to break down request counts by API, product, and subscription. This provides per-API cost attribution that you can map against business value. APIs with high request counts but low business value are candidates for rate limiting, caching, or removal. Spotto automates this analysis and surfaces the highest-impact recommendations first.
Not necessarily. The Consumption tier is ideal for APIs with sporadic, unpredictable traffic (fewer than 1 million calls per month) where cold-start latency of 1-3 seconds is acceptable. However, Consumption does not support VNet integration, self-hosted gateways, the developer portal, or certain advanced policies. If these features are needed, Basic v2 at a single scale unit is the next-best option.
MSPs should tag each API Management instance with customer identifiers, environment labels, and cost center codes. Use Azure Cost Management views filtered by these tags to allocate costs per tenant. Establish standardized tier selection criteria so that new deployments start on the appropriate tier rather than defaulting to Premium. Spotto provides cross-tenant cost analysis views that surface tier mismatches and idle capacity across all managed instances.
Classic tiers (Basic, Standard, Premium) and v2 tiers (Basic v2, Standard v2, Premium v2) are separate product lines built on different underlying infrastructure. Classic tiers run on stv1 or stv2 compute platforms. V2 tiers are newer, with different pricing, faster provisioning, and updated feature sets. There is no in-place migration path from Classic to v2 — you must provision a new v2 instance and migrate APIs, policies, and configuration manually.
Yes. Rate limiting reduces the number of requests that are processed by the gateway, which directly reduces the Capacity metric and can allow you to run on fewer scale units. More importantly, rate limiting filters out bot traffic, retry storms, and misconfigured clients that consume billable capacity without delivering business value. A typical deployment sees approximately 15% reduction in billable requests from rate limiting alone.
The migration process typically takes 45-90 minutes. During this time, the API gateway remains available for traffic, but management plane operations (deploying new APIs, updating policies, etc.) are blocked. For VNet-injected instances, the migration requires a new subnet and may take longer. Always schedule migrations during maintenance windows and validate the result in non-production first.
Multi-region deployments are only available on Premium and Premium v2 tiers. Before deploying multi-region, validate that the latency requirements actually justify the additional cost. Many organizations deploy multi-region for disaster recovery but do not actually require sub-100ms latency from multiple geographies. If the primary use case is DR, consider a single-region deployment with a cold standby deployment script that can provision a new instance in under 30 minutes rather than paying for an always-on second region.
Spotto continuously analyzes API Management instances across all connected Azure tenants. It identifies tier mismatches by comparing actual request volumes and feature usage against tier capabilities, surfaces idle capacity by monitoring the Capacity metric over time, detects legacy stv1 instances that require migration, and generates specific, actionable recommendations with estimated cost savings. For MSPs, Spotto provides cross-tenant views that highlight cost optimization opportunities across all managed environments.
Initial state:
An MSP manages 15 Azure API Management instances across customer tenants. 12 instances run on Classic Premium, 2 on Classic Standard, and 1 on Developer. Monthly spend totals $18,000. None of the instances have autoscale enabled, and 10 of the 12 Premium instances do not use VNet integration or multi-region features.
Intervention:
Outcome: Monthly spend reduced from $18,000 to $7,200 (60% savings). Each customer now receives itemized API Management cost reporting through tagged cost views.
Initial state:
An enterprise runs two on-premise API gateways handling 50 internal APIs, alongside three Azure API Management instances (Classic Premium) for external APIs. Total monthly gateway spend is $22,000 (on-premise hardware, licensing, and Azure). The on-premise gateways are approaching end-of-life and require hardware refresh costing $180,000.
Intervention:
Outcome: Monthly spend reduced from $22,000 to $8,500 (61% savings). Hardware refresh avoided. All APIs now managed through a single control plane with unified monitoring and policy enforcement.
Initial state:
A SaaS platform exposes a webhook API and a partner integration API. The webhook API receives 50,000-200,000 calls per day with unpredictable peaks. The partner API receives fewer than 5,000 calls per day. Both run on a single Classic Standard instance costing $2,200/month.
Intervention:
Outcome: Monthly spend reduced from $2,200 to $550 (75% savings). The partner API now costs under $10/month on Consumption. The webhook API scales automatically and only pays for capacity during peaks.
Initial state:
An enterprise routes Azure OpenAI traffic through API Management (Classic Premium, $3,800/month). They have a PTU reservation for GPT-4o but only utilize 40% of provisioned capacity. The remaining 60% of traffic routes to pay-as-you-go endpoints, costing an additional $12,000/month in token spend.
Intervention:
Outcome: PTU utilization increased from 40% to 85%, reducing PAYG token spend from $12,000 to $3,600/month. APIM tier migration saved an additional $2,800/month. Combined monthly savings: $8,200 (52% reduction).
START
|
├── Is instance on stv1?
| YES → Migrate to stv2 (PRIORITY: operational risk)
| NO ↓
|
├── Is instance on Classic Premium without VNet/multi-region?
| YES → Evaluate Standard v2 migration (PRIORITY: highest savings)
| NO ↓
|
├── Is Capacity metric below 30% average?
| YES → Reduce scale units or enable autoscale (PRIORITY: quick win)
| NO ↓
|
├── Is instance non-production?
| YES → Move to Developer tier (PRIORITY: quick win)
| NO ↓
|
├── Are there APIs with < 1M calls/month?
| YES → Evaluate Consumption tier (PRIORITY: medium impact)
| NO ↓
|
├── Is bot/malicious traffic > 10% of requests?
| YES → Deploy WAF + rate limiting (PRIORITY: medium impact)
| NO ↓
|
└── Enable caching and PTU routing for remaining optimizationSTART: What tier should I use?
|
├── Is this a non-production environment?
| YES → Developer tier
| NO ↓
|
├── Is traffic sporadic (< 1M calls/month)?
| YES → Is cold-start latency acceptable?
| | YES → Consumption tier
| | NO → Basic v2
| NO ↓
|
├── Do you need VNet integration?
| YES → Do you need multi-region or self-hosted gateway?
| | YES → Premium v2
| | NO → Standard v2
| NO ↓
|
├── Monthly requests > 10M?
| YES → Standard v2
| NO → Basic v2| From | To | Migration Method | Downtime |
|---|---|---|---|
| Classic (stv1) | Classic (stv2) | In-place platform migration | None (45-90 min mgmt block) |
| Classic Premium | Standard v2 | New instance + API export/import | Zero (DNS-based cutover) |
| Classic Standard | Basic v2 | New instance + API export/import | Zero (DNS-based cutover) |
| Classic Standard | Consumption | New instance + API reimplementation | Zero (DNS-based cutover) |
| On-premise gateway | Standard v2 | Phased migration (3-6 months) | Zero (parallel routing) |
Spotto is an AI-native CloudOps platform that continuously analyzes Azure cloud usage, cost, and performance data to generate forward-looking optimization recommendations. For API Management, Spotto identifies tier mismatches, idle capacity, stv1 migration risks, and cross-tenant cost patterns — surfacing the highest-impact recommendations first.
Azure API Management cost optimization follows a systematic approach that delivers 40-70% savings for most deployments:
Explore our cloud cost optimization resources or review Spotto pricing to see how teams operationalize API Management cost control.
The challenges outlined in this article — tier mismatches, idle gateway capacity, rate-limit tuning — are the same ones our customers work through across their Azure environments. The difference is they use Spotto to surface these opportunities automatically, rather than running the analysis by hand.
Spotto continuously analyzes your Azure API Management instances to surface tier mismatches, idle capacity, and cost reduction opportunities across all your environments.
Free TrialDisclaimer: This article is provided for informational purposes only and does not constitute professional advice. Azure pricing, features, and service behavior may have changed since publication. Always validate recommendations against your specific environment and consult Microsoft's official documentation before making changes to production infrastructure. Spotto is not liable for any actions taken based on the content of this article.