tokendrift

Disclaimer

Reproduced verbatim from DISCLAIMER.md in the TokenDrift repository. It is shown as written rather than reformatted, so that nothing on this page can drift from the document it quotes. Plain source.

# TokenDrift Data Disclaimer

> ### ⚠️ DRAFT — NOT LEGAL ADVICE, NOT YET IN FORCE
>
> This document was drafted by the operator of TokenDrift, who is not a lawyer.
> It has not been reviewed by counsel and nothing in it constitutes legal advice
> to anyone. It must be reviewed by a qualified attorney before TokenDrift is
> published or offered to anyone. Passages needing legal input are marked
> `TODO(counsel)`; passages needing an operational fact or decision before
> publication are marked `TODO(operator)`.
>
> **Draft version 0.2 — 2026-08-16.** Re-synced against METHODOLOGY v1.2: the
> `extractor` vocabulary in §4, the append-only commitment in §2, and the
> correction limits in §5 (change attribution is now published; a correction is
> no longer indistinguishable from a repricing). Still not reviewed by counsel.

---

This is the short document. It is meant to be read next to the numbers, and it
will be linked from every page, API response and MCP result that carries a price.
The longer agreement is [TERMS.md](TERMS.md); the substantive commitments about
how numbers are produced are in [METHODOLOGY.md](METHODOLOGY.md), which this
disclaimer incorporates by reference and does not restate.

## 1. What TokenDrift is

TokenDrift publishes LLM API pricing data that it reconstructs from vendors'
own published rate cards and documentation. Every published value carries the
source it came from, a link to that source, the reader that produced it, and a
timestamp. Disagreements between sources are recorded and published rather than
averaged away.

TokenDrift is a research and reference dataset. It is not a rate card, not a
quotation, not a price index, and not a substitute for the vendor's own pricing
page or your contract with that vendor.

## 2. What we do commit to

These are the commitments the product is built on, and we are willing to be
held to them:

- **Provenance on every value.** Each published price names its source, links to
  the exact page it was read from, names the reader that produced it, and
  carries a timestamp. Where we cannot name the reader, the field says
  `unknown` — an admission, not a blank. It never means the price went unread.
  (One exception, disclosed rather than smoothed over: values published by the
  archive's earliest three runs predate the field, which was added afterwards
  and deliberately not backfilled onto them rather than filled with a guess.
  They report it as `null`, and they are reachable only through the price
  history, never in the current dataset.)
- **A published methodology.** [METHODOLOGY.md](METHODOLOGY.md) states how the
  numbers are produced, what each field means, and — in the same paragraphs as
  the rules themselves — where the rules have known holes. It is versioned, and
  changes to it are logged with a date and a reason.
- **An append-only archive of numbers.** Observations are inserted, never
  edited or deleted. What TokenDrift said a price was on a given date stays
  recoverable on every later date. Provenance *metadata* on old rows has been
  repaired — by numbered, checksummed migrations that are themselves part of the
  public record, and only ever to claim less than before. No price value, its
  currency, its unit, its source or its timestamp has ever been altered.
  METHODOLOGY §9 states the line exactly and lists every migration that crossed
  back into published rows.
- **Corrections never rewrite history.** A value that turns out to be wrong is
  superseded by a later run. It is not edited in place and not deleted. There is
  no code path to hand-patch a stored value. See METHODOLOGY §9.
- **Disagreement is published, not hidden.** Where sources conflict, the losing
  values, their sources and the rule that decided the winner are all published,
  and each price lists the sources that corroborated it and the sources that
  dissented.
- **We do not average.** Where sources disagree, one value is selected by a
  stated rule and the others are retained. We never blend or split the
  difference between two disagreeing sources.

## 3. What we do not guarantee

The data is provided **as is**, without any warranty of accuracy, completeness,
currency, or fitness for any purpose.

Specifically, and not as boilerplate — these are known and documented
properties of the system, not hypotheticals:

- **Some published values are explicitly unconfirmed.** They carry
  `confirmed: false`. That marker means the reading could not be corroborated
  under the rules in METHODOLOGY §3. Such values are published with their full
  provenance precisely so you can see that they are unconfirmed, and they are
  barred from raising a change event.
- **Some values are seen by only one source.** Each run reports a join rate —
  the share of models confirmed by more than one source — in its own run report.
  The field you can check per value is `corroborating_sources`: when it is
  empty, that value is exactly as strong as the single source behind it.
- **We do not warrant a maximum age for any value.** `verified_at` is the field
  that tells you how old a value is, and METHODOLOGY §2 defines exactly what it
  does and does not mean. Read that definition before you rely on the field.
- **Coverage is partial by design.** TokenDrift covers text and chat completion
  token pricing only. Embeddings, image generation, audio, moderation,
  fine-tuning surcharges, and tool or web-search add-on fees are out of scope
  and are excluded at extraction time. Not every vendor is covered, and not
  every model a vendor sells is covered.
- **Some rules are documented as dormant or defective.** METHODOLOGY carries a
  standing list of known limits, in a table, in §9. Read it. We would rather
  publish that list than have you discover an item on it by being wrong about a
  number.
- **Some values carry no reader we can name.** Their `extractor` says `unknown`.
  That is a claim we withdrew about *who read the number*, not a doubt about the
  number: it happened because the field used to be filled from our configuration
  rather than from what actually ran, and rather than guess we said so. It
  covers a large share of the archive's historical rows. METHODOLOGY §3.
- **Part of the price history was not collected by us at all.** Series that
  reach back before TokenDrift existed are backfilled from the public git
  history of a third-party pricing file. Those points are marked, carry
  `confirmed: false`, were never checked against a vendor's rate card, and can
  never be — the page that would settle it is gone. They never appear as a
  current price. METHODOLOGY §1.
- **We have published wrong numbers, and we will again.** The question a
  methodology answers is not whether that happens but what happens next. See
  §5 below and METHODOLOGY §9.

> `TODO(operator)`: METHODOLOGY's §2 and §9 disclosures must be re-verified
> against the shipping code **immediately before publication**, every time. This
> is a standing item, not a one-off: it exists because METHODOLOGY has twice
> drifted behind the code between commits — first on `--use-cache` and
> `observed_at`, then on the change-attribution disclosures, which claimed a
> label was unpublished after it had shipped. Most recently re-verified for
> METHODOLOGY v1.2 (2026-08-16) against commit `eb5ef83`. This disclaimer
> deliberately restates as little of that behaviour as it can, so that it stays
> true either way — but METHODOLOGY itself must be correct on the day it is
> published, because this document points at it.

## 4. How to check a value before you rely on it

Every published price carries these fields. If a number matters to you, look at
them:

| Field | What it tells you |
|---|---|
| `confirmed` | Whether the reading was corroborated under METHODOLOGY §3. `false` means it was not. |
| `verified_at` | When the value was recorded, as defined in METHODOLOGY §2. |
| `needs_review` | Whether the reconciler flagged this row for a human to look at. |
| `source` / `source_url` | Who said it, and the exact page we read it from. |
| `corroborating_sources` / `dissenting_sources` | Which other sources reported the same number, and which reported a different one. |
| `extractor` | Which reader produced the value. A parser's name means that deterministic parser read it; `<parser>+llm` means the parser **and** the language model both read it and agreed, which is the strongest claim here; `llm` means the model read it alone; `unknown` means we cannot name the reader. `unknown` is a withdrawn claim about provenance, **never** an unread or missing price — METHODOLOGY §3. |

**The vendor's own page is always the authoritative source.** We link it on
every value for exactly this reason. If a TokenDrift number and the linked
vendor page disagree, the vendor page is right and we are wrong. Before you
commit money, sign a contract, or choose a vendor on the strength of a number,
open the `source_url` and check it.

## 5. If we are wrong

A correction is a new run, not an edit. The wrong value stays in the archive
with its source, its reason and its timestamp; the corrected value is published
alongside it; and the change feed shows the transition. The full policy is
METHODOLOGY §9.

Every change event that moves a number carries a `cause` saying **who moved
it**: `vendor` (the source page changed — a repricing), `reading` (the page said
the same thing and our number moved anyway — the change is ours, a correction or
a regression), or null where we could not tell. It is published in the dumps and
on the change feed, where you can ask for any one of those four states,
including the unattributed ones. METHODOLOGY §9 defines exactly what the label
does and does not distinguish — notably, it does not tell a correction from a
regression, and it does not cover keys that appeared or disappeared.

One limit of that policy still matters to you today, and METHODOLOGY discloses
it:

- **There is no push notification of any kind.** No email, no webhook, no
  subscriber notice, no mailing list. Corrections are labelled and queryable —
  by the change feed, by querying the archive, or by diffing successive dumps —
  but only if you come and look. We have no way to reach someone who already
  relied on a wrong number, and we do not undertake to try.

**So: if you cite a TokenDrift number in a context where a later correction
would matter, retain the dump you cited and re-check it. Do not rely on us to
come and tell you.**

To report a suspected error, see the contact route in [TERMS.md](TERMS.md) §17.
We would rather hear about a wrong number than not.

## 6. No affiliation, and whose names these are

TokenDrift is not affiliated with, endorsed by, sponsored by, or authorised to
speak for OpenAI, Anthropic, Google, DeepSeek, xAI, Zhipu (Z.ai), OpenRouter, or
any other vendor whose prices appear here. We have no agreement with any of
them. Nothing we publish is a statement by a vendor.

Vendor and product names are used only to identify whose prices are being
reported — the descriptive use of a name to refer to the thing it names. All
trademarks belong to their owners. See [TERMS.md](TERMS.md) §10 for the full
statement.

## 7. Reliance

**Decisions about money are yours.** If you use TokenDrift to build a budget,
size a cost model, choose a vendor, or design a system around a price, you are
relying on your own judgement about a dataset whose limits are published above
and in METHODOLOGY. We do not accept liability for those decisions or their
consequences. The limitation of liability in [TERMS.md](TERMS.md) §13 governs,
and it is part of the bargain on which this data is offered for free.

That is a real limit, and it is not a confession that the numbers are worthless.
The numbers are good enough that we publish exactly how they are made, what we
could not confirm, and every case where our sources disagreed. What we will not
do is convert that into a warranty.