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.