Cover graphic reading The tokens cost the same, the bill does not, with three figures: 6 of 9 GPT-5.6 meters priced identically on Azure, 191 of 191 Data Zone meters at exactly 1.1 times Global, and gpt-5.6-sol costing 29.6 percent more per 1,000 replies.

AWS Bedrock Pricing: Same Tokens, a Different Bill

If your company already has an AWS account, routing your WordPress chatbot through Amazon Bedrock instead of calling Anthropic or OpenAI directly looks like free tidiness. One vendor, one invoice, one set of IAM roles. The obvious worry is that the convenience carries a markup.

It mostly doesn’t. I read four price feeds at source this morning — OpenAI’s rate card, Anthropic’s pricing page, the AWS Bedrock pricing page and Microsoft’s Azure Retail Prices API — and on the models a site chatbot actually uses, the per-token rates through a cloud reseller are the vendor’s own rates, to the cent.

The bill still comes out higher. Not because the tokens are marked up, but because of three meters that exist on a cloud platform and do not exist on the vendor’s endpoint — and, in one case I did not expect to find, because a price cut had not arrived yet.

The short answer, and the single exception

OpenAI’s current generation on Azure is the cleanest test available, because both parties publish machine-readable rates for the same models on the same day. There are three GPT-5.6 text models, each with three meters — input, cached input, output — so nine numbers to compare.

Horizontal bar chart titled Nine meters, one cloud, one vendor: six match exactly, showing Azure Foundry's Global rate as a percentage of OpenAI's own card. Luna input, cached input and output are all 100 percent, terra input, cached input and output are all 100 percent, and sol input is 125 percent, cached input 125 percent and output 150 percent.

Six of the nine are identical. gpt-5.6-luna is $0.20 in, $0.02 cached, $1.20 out on OpenAI’s own card and $0.20, $0.02, $1.20 on Azure’s Global meter. gpt-5.6-terra matches too: $2.00, $0.20, $12.00 on both. Not approximately — the same figures.

The exception is gpt-5.6-sol, and it is off on all three meters: $5.00 against $4.00 in, $0.50 against $0.40 cached, $30.00 against $20.00 out.

That looked like a markup for about ninety seconds, until the numbers turned familiar. $5.00 / $30.00 is exactly what Sol cost before OpenAI’s price cut of 21 August 2026 — the one I wrote up in the GPT-5.6 Sol pricing piece, where the reduction was stated as 20% off input and 33.3% off output. Azure’s published meter is still the pre-cut pair. The cut has not propagated to the reseller.

That distinction matters more than it might sound. A markup is a policy you can plan around. An unpropagated price change is a moving target: it may sync next week, it may not, and nothing on Azure’s price feed tells you which state you are in. The only way to know is to compare the two cards yourself.

What I actually checked, so you can repeat it

Nothing here comes from a pricing round-up. Every figure traces to a first-party feed, read on 9 September 2026:

  • OpenAI — the rate card at developers.openai.com/api/docs/pricing, standard tier, short context.
  • Anthropic — the pricing page at platform.claude.com, including the notes on cloud platforms.
  • AWSaws.amazon.com/bedrock/pricing.
  • Microsoft — the Azure Retail Prices API at prices.azure.com/api/retail/prices, filtered to serviceName eq 'Foundry Models' in US East 2. This one is worth knowing about: it is a public, unauthenticated JSON endpoint, and it returns the actual billing meters rather than the marketing page. The human-facing Azure pricing page renders its numbers in JavaScript and is close to unreadable to a script; the API is not.

I mention the method because the secondary sources disagree with the primary ones in a specific, checkable way. A widely-cited write-up puts Azure’s fine-tuned model hosting at “$2.52–$3.00 per hour”. Microsoft’s own retail meter says $1.70 per hour, and says it for essentially the entire GPT-4.1, GPT-4o and o4-mini catalogue, in global, regional and Data Zone flavours alike. When a pricing article and a billing meter disagree, believe the meter.

The data-residency premium is exactly 10%, on every single meter

Both major clouds sell the same thing under different names: an assurance about where your inference physically runs. AWS and Google call it a regional or multi-region endpoint. Azure calls it a Data Zone deployment. Anthropic documents the price of it plainly:

Regional and multi-region endpoints include a 10% premium over global endpoints. The Claude API (first-party) is global by default.

Anthropic platform documentation, pricing

What I did not expect is how exactly that same number shows up on a completely different vendor’s meter table. I pulled every Foundry Models token meter for US East 2 and paired each Global meter with its Data Zone twin. There were 191 such pairs.

All 191 are priced at exactly 1.1× the Global rate. Zero exceptions. It is not a per-model negotiation or a rounding artefact; it is one multiplier applied uniformly across the published catalogue.

Meter (US East 2)GlobalData ZoneRatio
5.6 luna ShortCo Inp Std$0.20$0.221.1×
5.6 luna ShortCo Opt Std$1.20$1.321.1×
5.6 terra ShortCo Inp Std$2.00$2.201.1×
5.6 sol ShortCo Inp Std$5.00$5.501.1×
5.6 sol ShortCo Opt Std$30.00$33.001.1×
5.4 opt$15.00$16.501.1×
…and 185 more, all at 1.1×.

Anthropic charges the same 10% on its own first-party API when you pin inference to the US with inference_geo: "us", and applies it to Azure deployments that use the US Data Zone Standard type. So the premium is not really a cloud-reseller thing at all. It is the industry price of a geography guarantee, and it is remarkably consistent.

Whether you should pay it is a separate question, and for most WordPress site owners the honest answer is no. Data residency is a contractual requirement that comes from a regulator, a customer’s procurement team or a DPA — not something you buy speculatively. If nobody has asked you for it in writing, you are paying 10% for a reassurance you cannot use.

What all of this costs on an actual chatbot

Rate cards are abstract. This site’s chatbot is not. Measured from its own stored transcripts, a single reply carries 3,760 input tokens and 170 output tokens — the input dominated by a 870-token system prompt and roughly 2,850 tokens of retrieved page context. That asymmetry is the single most important fact about site-chatbot economics, and I unpacked it in the per-1,000-replies breakdown.

Run those two numbers through the six meters above:

Horizontal bar chart titled Six ways to bill the same thousand replies, showing US dollars per 1,000 replies: gpt-5.6-luna on OpenAI direct 0.956 dollars, luna on Azure Global 0.956, luna on Azure Data Zone 1.05, gpt-5.6-sol on OpenAI direct 18.44, sol on Azure Global 23.90 which is 30 percent higher, and sol on Azure Data Zone 26.29 which is 43 percent higher.

Luna costs 95.6 cents per thousand replies whichever door you use. Sol costs $18.44 direct and $23.90 on Azure — 29.6% more, purely because the August cut has not landed there. Choose the Data Zone deployment on top and it is $26.29, or 42.6% above the vendor’s own price, because the residency premium multiplies the stale number rather than the current one.

Two lessons fall out of that. Percentages compound in the order they are applied, so a premium on top of a stale rate is worse than either alone. And the size of the gap depends entirely on which model you picked — same cloud, same account, same day, and the answer ranges from “no difference at all” to “nearly a third more”.

AWS Bedrock pricing: the token rate is the vendor’s, the retrieval meter is not

Bedrock behaves the same way on tokens. Claude Sonnet 5 is $2 per million input and $10 per million output on Anthropic’s card, and Anthropic’s own documentation points at the AWS pricing page for Bedrock rather than publishing a different number — the $2/$10 pair is the one that became permanent when the September increase was cancelled, which I covered in the Sonnet 5 price piece.

Where Bedrock diverges is everything wrapped around the model. Its Knowledge Bases feature — the managed retrieval layer, the thing that plays the role a WordPress chatbot plugin’s own vector search plays — is metered per call:

Bedrock Knowledge Bases meterPublished ratePer 1,000 chatbot replies
Index storage$5.00 per GB of raw data / monthfixed monthly, not per reply
Standard Retrieve$1.00 per 1,000 API calls$1.00
Agentic Retrieve$4.00 per 1,000 calls, plus $1.00 per 1,000 underlying Retrieve calls$5.00
Batch inference50% below on-demandhalves the token half only

A retrieval-augmented chatbot retrieves on every single reply. That is the detail that turns a small-looking meter into a real percentage:

Horizontal bar chart titled Four bills for the same Claude Sonnet 5 tokens, showing US dollars per 1,000 replies: direct API on a global endpoint 9.22 dollars, Bedrock on a regional endpoint 10.14 which is a 10 percent documented premium, plus Knowledge Bases retrieval 11.14 which is 21 percent over baseline, and with agentic retrieval instead 15.14 which is 64 percent over baseline.

Nine dollars twenty-two becomes eleven dollars fourteen — 20.8% more for identical tokens and identical answers. Swap standard retrieval for agentic retrieval and it is $15.14, or 64.2% over the baseline, at which point the retrieval layer costs more than half as much as the model itself.

None of that is hidden or unfair. AWS publishes every one of those meters. But a WordPress site owner comparing “$2 per million tokens” against “$2 per million tokens” will conclude the two options are identical, and they are not, because only one of them charges for the retrieval that a site chatbot performs on every turn.

Provisioned Throughput has no published price for Claude

Worth flagging, because several ranking articles quote a figure. On the AWS pricing page, Provisioned Throughput for Anthropic models does not carry a rate at all — the page directs you to your account team. The oft-quoted “$0.24 per OCU-hour, about $350 a month” is the price of OpenSearch Serverless compute units for the vector store, which is a related but different product. If you see that number presented as Bedrock’s provisioned model price, the article has conflated two meters.

The meter that runs whether or not anybody chats

The most consequential difference between a cloud platform and a direct API has nothing to do with rates. It is that clouds sell reserved capacity, and reserved capacity bills on wall-clock time.

Microsoft’s documentation is unusually blunt about the mechanics. Provisioned deployments are billed per PTU — Provisioned Throughput Unit — per hour “based on the number of PTUs deployed, regardless of the number of tokens consumed”, and:

The meter starts when the deployment is created and stops when it’s deleted.

Microsoft Learn, provisioned throughput for Foundry Models

Three further details from the same page are worth having before anyone talks you into this:

  • Every model has a minimum PTU count. You cannot buy a sliver.
  • Quota is not capacity. “Having PTU quota doesn’t guarantee that capacity is available” — and a reservation does not guarantee it either. You are advised to create the deployment first, confirm capacity exists, and only then buy the reservation.
  • Scaling down to save money is discouraged, because the capacity you release may not be there when you scale back up.

Microsoft’s own guidance is that standard pay-per-token deployments “remain the better fit for development, testing, low-volume usage, or highly variable traffic”. A WordPress site chatbot is all four of those at once. Traffic arrives in bursts around business hours and marketing campaigns and is close to zero at 4am; a meter that runs at a flat rate through the night is precisely the wrong instrument.

The fine-tuning equivalent has a published number, and it is the clearest illustration of the floor problem. Hosting one fine-tuned model on Azure is $1.70 per hour — regardless of traffic. That is $1,224 a month before a single token is billed. Against a chatbot whose entire token cost might be a few dollars a month, the hosting meter is not a line item; it is the whole bill, and then some.

Your invoice stops telling you which model spent the money

One more consequence, and it is operational rather than financial. When Claude is billed through AWS Marketplace or the Azure Marketplace, Anthropic converts your usage into Claude Consumption Units at $0.01 per CCU and reports the CCU count hourly. The rate you pay is unchanged — CCUs are a unit of invoicing, not a price change. But per Anthropic’s documentation, “Your AWS bill shows a single CCU line item”, and AWS Cost Explorer shows aggregated CCU.

So the cloud consolidation that made the invoice tidier also flattened it. To find out which model, which feature or which of your sites consumed the spend, you open the Claude Console — a second dashboard, reached through the AWS Console. If your reason for choosing Bedrock in the first place was “everything in one bill”, it is worth knowing that the one bill contains less information than the two did.

What I could not verify, stated plainly

Google Cloud is the gap in this piece. Anthropic’s documentation confirms that Claude on Vertex AI carries the same 10% regional and multi-region premium, and that Google invoices you rather than Anthropic. But Vertex’s own pricing page did not render its rate table for me, and there is no equivalent of Azure’s retail prices API that I could read on the same terms. Rather than repeat a third-party figure — which is exactly how the wrong fine-tuning number above got into circulation — I am leaving Vertex’s per-token rates out. If you are choosing between clouds on price, read Google’s table yourself; do not take mine or anyone else’s.

So which door should a WordPress site use?

The decision has almost nothing to do with token rates, because on six of the nine meters I checked those are identical. It is about volume shape and obligations.

Your situationSensible choiceWhy
Ordinary site chatbot, bursty traffic, no compliance mandateDirect vendor APISame token price, none of the extra meters, no floor
Written data-residency requirement from a customer or regulatorCloud regional / Data Zone deploymentThe 10% premium is the actual price of the guarantee
Existing committed cloud spend you must burn downWhichever cloud holds the commitmentDrawing down committed spend can beat a 10–30% rate gap
Steady, high, predictable round-the-clock volumeWorth pricing provisioned capacityFlat hourly rates only win when the meter is always busy
Procurement will not onboard a new vendorCloud marketplaceA legitimate reason; just budget the extra meters honestly

For the overwhelming majority of WordPress sites the first row applies. A plugin that calls the model vendor’s endpoint directly pays the published rate, has no per-retrieval meter because retrieval happens inside your own database, and has no hourly floor at all — the bill is zero on a day nobody chats. That is how MxChat is built, and the setup documentation covers pointing it at your own API key.

If you want the wider picture on what a site chatbot costs before any of this, the chatbot pricing guide covers the ground, and the self-hosting comparison takes the argument one step further — to running the model yourself, where the floor problem described above returns with interest.

Common questions

Is AWS Bedrock more expensive than calling Anthropic directly?

Not on tokens. Claude’s per-million rates are the same through either route. Bedrock becomes more expensive when you use a regional endpoint (a documented 10% premium) or its managed Knowledge Bases retrieval, which bills $1.00 per 1,000 Retrieve calls — about 20% on top of the token cost for a chatbot that retrieves on every reply.

Why is my Azure OpenAI price different from OpenAI’s website?

Check three things in order. First, whether you are on a Data Zone or regional deployment — those are exactly 1.1× the Global rate. Second, whether your model has had a recent price cut that Azure’s meter has not picked up; as of 9 September 2026 gpt-5.6-sol is still billed at its pre-21-August rate on Azure. Third, whether you are on a long-context meter, which is priced separately from short context on both platforms.

Does batch pricing work the same on a cloud platform?

Broadly yes — Bedrock offers batch inference at 50% below on-demand, matching the discount on the vendors’ own Batch APIs. It also has the same drawback everywhere: batch is asynchronous, so it is useless for a live chat widget. The batch API breakdown explains which half of a chatbot’s workload it can actually touch.

Do these numbers change if I switch models?

Substantially, and in a way rate cards conceal, because newer models can count the same text into more tokens. The tokenizer piece covers the roughly 30% token inflation on Claude 4.7 and later — a change that raises a bill without any price moving.

The takeaway

The instinct that a reseller must be marking up the tokens turns out to be wrong, and it is wrong in a way that matters: it points attention at the one number that is usually identical, and away from the meters that are not. Retrieval calls, residency premiums, hourly capacity floors and a price cut that has not propagated are where the difference actually lives.

Before you move a chatbot onto a cloud platform, do the small version of what I did here: pull the vendor’s rate card and the cloud’s billing meter for the exact model you use, on the same day, and multiply both by your own traffic. It takes fifteen minutes and it is the only comparison that is about your bill rather than someone’s pricing page.

Similar Posts