Skip to content

Read the page that has the prices on it - #39

Merged
AndrewAvery7 merged 1 commit into
mainfrom
grok-read-the-pricing-page
Aug 6, 2026
Merged

AndrewAvery7 merged 1 commit into
mainfrom
grok-read-the-pricing-page

Conversation

@AndrewAvery7

Copy link
Copy Markdown
Owner

What was wrong

Both Grok rows were marked vendorVerified: true against https://docs.x.ai/docs/models — a page that lists context windows and capabilities and no prices at all. Neither row carried a pricing block, so the numbers came from the LiteLLM feed while wearing a first-party stamp.

One of them was wrong. From xAI's actual pricing table, read today:

| Model    | Context |  Short context        |  Long context (>=200k)  |
|          |         | Input  Cached  Output | Input  Cached  Output   |
| grok-4.5 |   500k  | $2.00  $0.30   $6.00  | $4.00  $0.60   $12.00   |
| grok-4.3 |     1M  | $1.25  $0.20   $2.50  | $2.50  $0.40   $5.00    |

Cached input on grok-4.5 was published here as $0.50; xAI says $0.30. LiteLLM has the identical error from the identical cause — its entry cites /docs/models too.

Both rows also had no long-context tier. xAI bills every token in a request at the long rate once the prompt reaches 200k, so a 250k-token grok-4.5 request was understated by half.

The change

Pin the figures above, and point verifiedUrl at /developers/pricing, which is where they live.

The wider issue, left alone on purpose

27 of the 43 vendorVerified rows carry no hand-entered price. They are stamped verified with a verifiedUrl and a date, but their numbers come from the feed.

That may well be the intended workflow — read the vendor page, confirm the feed agrees, record the date, don't duplicate the number by hand. It is a reasonable way to avoid maintaining 43 prices twice.

But it means a row can change underneath its own verification stamp. The human who checked grok-4.5 on 2026-08-03 saw whatever the feed said then, against a page that could not have confirmed the cached figure either way — and $0.50 kept the badge.

Two defensible resolutions, and it is a design decision rather than a bug fix, so I have not made it:

  1. vendorVerified requires a pinned pricing block, enforced in validate-catalog.ts. Costs duplication; makes the stamp mean exactly what it says.
  2. Keep the current workflow, but record which fields were confirmed, so an unconfirmable field (cached input, on a page with no cached column) cannot inherit the badge.

Verification

Root npm run verify green: 742 tests, catalog valid, 159 pages, budgets, CSP, SEO. The sync re-ran and recorded both changes in docs/pricing-changelog.md.

Noted but not included, to keep this to one problem: xAI publishes a 20% batch discount for grok-4.3 (and none for grok-4.5) which the catalog does not carry.

Both Grok rows were marked vendorVerified against
https://docs.x.ai/docs/models — a page that lists context windows and
capabilities and no prices at all. Neither row carried a pricing block,
so the numbers came from the LiteLLM feed while wearing a first-party
stamp, and one of them was wrong: cached input on grok-4.5 sat at $0.50
where xAI publishes $0.30. LiteLLM has the same error, from the same
cause — its entry cites /docs/models too.

Both rows also lacked a long-context tier, and xAI bills every token in
a request at the long-context rate once the prompt reaches 200k. A 250k
-token grok-4.5 request was understated by half.

Pin what the pricing table actually says, read today:

  grok-4.5  $2.00 / $0.30 / $6.00      >=200k: $4.00 / $0.60 / $12.00
  grok-4.3  $1.25 / $0.20 / $2.50      >=200k: $2.50 / $0.40 / $5.00

and point verifiedUrl at /developers/pricing, which is where those
figures live.

The wider issue this exposes is left alone deliberately: 27 of the 43
vendorVerified rows carry no hand-entered price, so they inherit
whatever the feed says under a stamp that reads first-party. That may be
the intended workflow — confirm the feed against the vendor, record the
date, do not duplicate the number — but it means a row can change
underneath its own verification, which is how a LiteLLM error acquired a
vendor badge here. Worth a decision rather than a quiet fix.
@AndrewAvery7
AndrewAvery7 merged commit ce594c1 into main Aug 6, 2026
10 checks passed
@AndrewAvery7
AndrewAvery7 deleted the grok-read-the-pricing-page branch August 6, 2026 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant