{"id":51544848,"url":"https://github.com/roninforge/ai-price-index","last_synced_at":"2026-07-09T17:01:08.243Z","repository":{"id":364818346,"uuid":"1269302407","full_name":"RoninForge/ai-price-index","owner":"RoninForge","description":"AI model API prices for when quality matters: first-party-sourced, dated, point-in-time, and human-verified. Automation keeps it current; a human signs off before anything ships. CC BY 4.0.","archived":false,"fork":false,"pushed_at":"2026-07-07T04:45:30.000Z","size":287,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-07T06:20:36.808Z","etag":null,"topics":["ai","anthropic","dataset","gemini","llm","open-data","openai","pricing"],"latest_commit_sha":null,"homepage":"https://roninforge.org/data/ai-price-index","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RoninForge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-14T14:47:24.000Z","updated_at":"2026-07-06T16:51:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/RoninForge/ai-price-index","commit_stats":null,"previous_names":["roninforge/ai-price-index"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/RoninForge/ai-price-index","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoninForge%2Fai-price-index","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoninForge%2Fai-price-index/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoninForge%2Fai-price-index/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoninForge%2Fai-price-index/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoninForge","download_url":"https://codeload.github.com/RoninForge/ai-price-index/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoninForge%2Fai-price-index/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35306717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","anthropic","dataset","gemini","llm","open-data","openai","pricing"],"created_at":"2026-07-09T17:01:06.967Z","updated_at":"2026-07-09T17:01:08.229Z","avatar_url":"https://github.com/RoninForge.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI Price Index\n\n[![npm](https://img.shields.io/npm/v/ai-price-index?color=informational)](https://www.npmjs.com/package/ai-price-index)\n[![Data: CC BY 4.0](https://img.shields.io/badge/data-CC%20BY%204.0-informational)](DATA-LICENSE.md)\n[![Tooling: MIT](https://img.shields.io/badge/tooling-MIT-informational)](LICENSE)\n[![Cite this](https://img.shields.io/badge/cite-CITATION.cff-informational)](CITATION.cff)\n[![DOI](https://img.shields.io/badge/DOI-10.5281%2Fzenodo.20730241-informational)](https://doi.org/10.5281/zenodo.20730241)\n\n**When AI price-data quality actually matters.** An open, dated, first-party-sourced record of AI model API prices over time.\n\nMost price lists tell you what a model costs **today**. This one tells you what it cost **on a\ngiven date**, **when that price was last confirmed**, and **links the first-party source that proves\nit**. That provenance is the point: every value carries a verifiable source and a `last_validated_at`\ndate, including historical ones.\n\n**Why this index**\n\n- **Quality over coverage.** We curate the models that matter and get them right, instead of chasing a long tail of variants and open-weight forks. Less noise, more signal.\n- **Verifiable, not scraped.** Every price links to the provider's own pricing page, with the date it was confirmed and a confidence rating, and you can look up what any model cost on any past date.\n- **Automated freshness, human QA.** Automation watches first-party sources for new models and price changes and cross-checks every number; a human signs off before anything is published.\n\n- **Data license:** CC BY 4.0 (see [DATA-LICENSE.md](DATA-LICENSE.md)). Use it anywhere, just attribute.\n- **Tooling license:** MIT (see [LICENSE](LICENSE)).\n- Maintained by [RoninForge](https://roninforge.org). Source of truth, methodology, and corrections\n  are all in the open.\n\n\u003e Status: early. The schema, validation, and methodology are in place; coverage is being seeded\n\u003e flagship-first (see Roadmap). Prices can change and history is partly reconstructed; trust the\n\u003e `confidence` label and the `source_url` on each record, not this sentence.\n\n## Why it exists\n\nNo first-party provider publishes its own price history. Several open lists have broad **current**\npricing, but none pairs each price with a dated, verifiable first-party source under a clear license,\nand none surfaces when a price was last validated. Tools that need to value **past** usage (what did\nthis token cost back then) have nothing reliable to read. This fills that gap.\n\n## What is in here\n\n```\nschema/        JSON Schemas: the price record, the published per-model series, the index\nexamples/      illustrative-but-accurate records + series that the validator checks\ndata/          the published dataset (generated from the system of record; appears as coverage lands)\ntools/         validate.mjs, a zero-dependency validator (run in CI and locally)\nMETHODOLOGY.md how prices are sourced, confirmed, dated, and corrected\nCONTRIBUTING.md how to report or fix a price (a first-party dated source is required)\n```\n\n### The price record\n\nEvery price is one record. The human-facing shape (what you contribute and what the validator\nchecks) is defined in [`schema/price-record.schema.json`](schema/price-record.schema.json). In short:\n\n| field | meaning |\n| --- | --- |\n| `provider`, `model_id`, `variation`, `unit` | what is priced (e.g. anthropic / claude-opus-4-5-20251101 / input / usd_per_mtok) |\n| `price_usd` | the price for one unit |\n| `effective_from`, `effective_to` | the dates this price was in effect (`effective_to: null` = current) |\n| `last_validated_at` | when this price was last confirmed against its source |\n| `source_url`, `source_kind`, `confidence` | the first-party proof and how sure we are |\n\nThe published, served form is one file per model (`schema/model-series.schema.json`) plus a thin\n`index.json` (`schema/index.schema.json`); a client binary-searches a model's interval array by date.\n\n## Use the data\n\nThree ways, depending on what you are building.\n\n### npm package (point-in-time lookups, no network)\n\n```bash\nnpm install ai-price-index\n```\n\nThe dataset ships **bundled inside the package** (no runtime network call), so a lookup is\ndeterministic and reproducible against the version you installed.\n\n```js\nimport { current, priceOn, rate, meta } from 'ai-price-index';\n\ncurrent('claude-opus-4-8');        // today's input/output rate + the source that proves it\npriceOn('gpt-4', '2024-01-01');    // the rate that was IN EFFECT on that date ($30 / $60 per Mtok)\nrate('gpt-4', '2024-01-01');       // -\u003e { provider, model, date, inputPerM: 30, outputPerM: 60 }\nmeta.dataModified;                 // the dataset date this install pins to\n```\n\nShort ids and a trailing `[1m]` display suffix resolve to the dated series (e.g. `claude-opus-4-5`\n-\u003e `claude-opus-4-5-20251101`); pass `{ provider }` to disambiguate a bare model id. `usdForRollup`\nvalues a token rollup at a point in time with the shared cache multipliers (read 0.1x, write 1.25x /\n2x). The package reproduces the same [golden vectors](examples/pricing-vectors.json) as the other\nRoninForge pricing engines.\n\nCLI (no install needed):\n\n```bash\nnpx ai-price-index claude-opus-4-8                 # today's rate\nnpx ai-price-index gpt-4 --on 2024-01-01           # a past date\nnpx ai-price-index list --provider openai          # known models\nnpx ai-price-index claude-opus-4-8 --json          # machine-readable\n```\n\n### JSON API (fetch the current snapshot)\n\nThe current prices are served as JSON with permissive CORS, so you can fetch them from a browser or\na script. These are **stable URLs** (safe to depend on):\n\n```\nhttps://roninforge.org/data/ai-price-index/current.json   # current price of every model\nhttps://roninforge.org/data/ai-price-index/index.json     # model list + per-model series file map\n```\n\n```js\nconst { prices } = await (await fetch('https://roninforge.org/data/ai-price-index/current.json')).json();\nconst opus = prices.find((p) =\u003e p.model === 'claude-opus-4-8' \u0026\u0026 p.variation === 'input');\nconsole.log(opus.price_usd, opus.src);  // 5  https://www.anthropic.com/news/claude-opus-4-8\n```\n\nFor full price **history** (every dated interval, not just current), use the npm package or clone the\nrepo. Per-model series filenames under `models/` are content-hashed and not stable; do not hardcode them.\n\n### Clone the raw dataset\n\n```bash\ngit clone https://github.com/RoninForge/ai-price-index\nnode tools/validate.mjs        # validate everything locally\n```\n\nWhen you publish anything derived from this data, attribute it: **\"AI Price Index by RoninForge, CC\nBY 4.0\"** with a link to this repository and the validation date of the values you used.\n\n## How to cite\n\nPrices change and corrections supersede without deleting history, so cite a **dated release** to keep\nyour snapshot reproducible. Machine-readable citation metadata is in [`CITATION.cff`](CITATION.cff)\n(GitHub renders a \"Cite this repository\" button from it).\n\nPlain:\n\n\u003e AI Price Index by RoninForge (https://roninforge.org/data/ai-price-index/), CC BY 4.0. Release `\u003ctag\u003e`, accessed `\u003cdate\u003e`.\n\nBibTeX:\n\n```bibtex\n@misc{roninforge_ai_price_index,\n  author       = {{RoninForge}},\n  title        = {{AI Price Index: dated, first-party AI model API prices over time}},\n  howpublished = {\\url{https://roninforge.org/data/ai-price-index/}},\n  note         = {Release \u003ctag\u003e. Data licensed CC BY 4.0. Accessed \u003cdate\u003e.}\n}\n```\n\nFor academic reuse, cite the DOI (Zenodo): **[10.5281/zenodo.20730241](https://doi.org/10.5281/zenodo.20730241)**.\nThis is the concept DOI and always resolves to the latest version; each release also gets its own\nversion DOI for an exact, reproducible snapshot.\n\n## Roadmap\n\nCoverage is seeded **flagship-first, deep on history**: the leading models (Claude, GPT, Gemini)\nwith their price history pushed back as far as it can be verifiably sourced, before widening to the\nlong tail. Reconstructed history is labelled by `confidence` (`archived` / `inferred` / `estimated`)\nand never rendered with the same weight as a live-confirmed price.\n\n## Contributing\n\nFound a wrong or missing price? Open an issue or a PR with the correct value **and a first-party\nsource URL plus the date you saw it**. A contribution without a dated first-party source cannot be\naccepted; that rule is what makes this trustworthy. See [CONTRIBUTING.md](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froninforge%2Fai-price-index","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froninforge%2Fai-price-index","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froninforge%2Fai-price-index/lists"}