Skip to content

Azure GPT-5.6 terra/luna cost-map rows carry OpenAI's prices, not Azure's published meters #36192

Description

@marty-sullivan

What is wrong

azure/gpt-5.6-terra and azure/gpt-5.6-luna, along with their azure/us/ and azure/eu/ data-zone siblings, currently hold OpenAI's direct post-cut prices. Azure never made that cut.

OpenAI reduced Terra by 20% and Luna by 80% on 2026-07-30. #35481 then applied the same reduction to the twelve Azure rows on 2026-08-05. Its stated basis was that "Azure global historically mirrors OpenAI global for these models"; the Azure link it cites is a Microsoft Foundry availability announcement, not a pricing page. @mihidumh raised exactly this objection in a comment on the merged PR the next morning ("Azure has not updated their pricing yet, this should be reverted for now"), and the change is still on main and litellm_internal_staging today.

Evidence

Azure's public retail prices API is the authoritative list-price source, and it needs no authentication:

curl -sS -G "https://prices.azure.com/api/retail/prices" \
  --data-urlencode "currencyCode=USD" \
  --data-urlencode "\$filter=contains(productName,'Azure OpenAI') and armRegionName eq 'eastus2'"

Every GPT-5.6 meter still carries effectiveStartDate of 2026-07-01 as a single version, so there is no cut applied and none future-dated. The values are identical in eastus2, westus3 and swedencentral, so this is not a regional anomaly. Global Standard rates, per 1M tokens:

Model Field Azure meter Cost map today Error
terra input $2.50 $2.00 20% under
terra output $15.00 $12.00 20% under
terra cache read $0.25 $0.20 20% under
luna input $1.00 $0.20 5x under
luna output $6.00 $1.20 5x under
luna cache read $0.10 $0.02 5x under

The relevant meter names are 5.6 terra ShortCo Inp Std Gl 1M Tokens and siblings, where Gl is Global and DZ is Data Zone at exactly 1.1x, Std is Standard and PP is Priority Processing at exactly 2x, and ShortCo/LongCo are the base and above-272k tiers. Those exact 1.1x and 2x ratios hold across the whole family, which is a good indication the rows are live rather than stale. Sol was not cut by either vendor and is correct as it stands.

Impact

Any Azure deployment of GPT-5.6 Terra or Luna under-reports spend by 20% and 80% respectively, silently, on every request. Luna is the worse case because the map bills a fifth of the real rate.

#35481 also added test_generic_cost_per_token_azure_gpt56, which asserts the incorrect Azure global and EU data-zone values. The wrong numbers are now test-locked, so a straight revert of the JSON alone will fail CI; the test needs correcting in the same change.

The same root cause is about to land again in #35125

#35125 is open and adds the missing cache_creation_input_token_cost fields to all twelve Azure GPT-5.6 entries. The underlying gap is real, since Azure does publish cache-write meters and the map currently bills those tokens at zero. The Sol and base-alias values in that PR match Azure exactly, but the Terra and Luna values are OpenAI-derived in the same way as #35481:

Key Field Azure meter #35125
azure/gpt-5.6-terra cache write $3.125 $2.50
azure/gpt-5.6-terra cache write above 272k $6.25 $5.00
azure/gpt-5.6-luna cache write $1.25 $0.25
azure/gpt-5.6-luna cache write above 272k $2.50 $0.50

Separately, that PR derives the data-zone _priority cache-write fields with a 2.5x multiplier where Azure's Priority Processing meters are exactly 2x Standard, so azure/us/gpt-5.6 and azure/eu/gpt-5.6 come out at $17.1875 against a published $13.75, and the Sol rows likewise.

Suggested fix

Restore the Terra and Luna token prices on all twelve Azure rows to the meter values in the first table, and correct test_generic_cost_per_token_azure_gpt56 to match. For #35125, resource the Terra and Luna cache-write numbers from the Cd Wr meters and use 2x rather than 2.5x for the Priority Processing fields.

More generally, an OpenAI price change is not evidence about Azure. The retail prices API query above is cheap, unauthenticated and definitive, and it is worth making the standard check before porting any price movement onto an azure/ row.

I am happy to open the PR for either part if that helps.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions