# Compute Finance — full reference > The first public reference price for AI compute. The Compute Price Index (CPI) tracks the USD cost of a fixed reference workload across basket models from major providers, producing a single weighted unit of account — the Standard Compute Unit (SCU). Methodology is deterministic and reproducible from public provider pricing; every value is published on-chain on Base and independently verifiable. Compute Finance is public data infrastructure for AI compute pricing. V1 ships a live oracle, a methodology and API documentation site, and a waitlist with referrals. V1 is a public oracle; no token is tradeable, no marketplace is live, and no inference proxy is running. The API response includes $COMPUTE-denominated fields (ctPricePerMillion, markedUpCtPricePerMillion) that preview planned pricing for a future inference layer — they do not represent live, executable pricing in V1. Points have no monetary value. ## What the CPI is The Compute Price Index is a public benchmark that tracks the cost of AI inference across major providers. It produces a single weighted reference price — the Standard Compute Unit (SCU) — calculated from a basket of models across major providers (OpenAI, Anthropic, Google, xAI). The CPI is a reference price, not an exchange, not a marketplace, and not a payment rail. It is a number, updated hourly, published on-chain, and freely queryable via a public REST API. ## Basket composition The basket contains one model per provider per tier, organized into three tiers. The basket is reviewed quarterly and updated with a new version number when models are added, removed, or replaced. - **Frontier** — Highest-capability models. Best reasoning, longest context, most accurate. - **Standard** — Balanced cost-performance models. General-purpose workhorses. - **Lightweight** — Fastest, cheapest models. For high-volume, latency-sensitive tasks. Current tier weights are published via `GET /v1/oracle/tiers` and reflect real-world usage distribution across capability tiers. ## SCU formula The Standard Compute Unit is calculated in three steps. The reference workload is a fixed token count (published in the `referenceWorkload` field of `GET /v1/oracle/scu`), evaluated across all basket models. **Step 1 — Per-model cost.** For each model in the basket, compute the USD cost of the reference workload using the provider's published per-token pricing. ``` cost_m = (input_price_m × input_tokens) + (output_price_m × output_tokens) ``` **Step 2 — Per-tier capped mean.** Within each tier, compute the mean cost. Any model whose cost exceeds 2× the tier mean is capped at 2× the mean. This prevents a single expensive model from distorting the tier average. ``` tier_avg_t = mean(min(cost_m, 2 × tier_mean_t)) ``` **Step 3 — Weighted sum.** Apply tier weights and sum. ``` SCU = (frontier_avg × frontier_weight) + (standard_avg × standard_weight) + (lightweight_avg × lightweight_weight) ``` Current tier weights are available from `GET /v1/oracle/tiers`. The SCU is denominated in USD. Anyone with access to provider pricing pages can independently reproduce this number. ## Basket rules - **Quarterly reviews.** The basket is reviewed every quarter. Each review produces a new basket version. - **Addition criteria.** Model must be generally available via a public API for at least 30 days; provider must publish verifiable per-token pricing; model must fit one of the three tiers. - **Removal criteria.** Model is deprecated or end-of-lifed; superseded by a newer version from the same provider in the same tier; provider discontinues verifiable pricing or public API access. - **Emergency triggers.** An emergency reconstitution is triggered if any model with ≥25% effective weight in its tier changes price by ≥30% within a single day. Emergency updates are published within 24 hours and increment the basket version. - **Version tracking.** Every basket change increments the revision version counter. Full history is available via the reconstitutions endpoint and recorded on-chain. ## Version history - **v0** — first deployed June 17, 2025. Internal version used to validate methodology, build hourly SCU history, and refine basket composition. - **v1.0** — public launch April 7, 2026. Carries forward all historical data — any API query returns the full version history back to inception. **Version numbering.** The API's `basketVersion` and `latestRevisionVersion` fields return the on-chain revision counter — a monotonically incrementing integer (currently in the 40s). This is NOT the same as the marketing version ("v1.0"). The mapping is: v0 = revisions 1–39 (internal testing), v1.0 = revision 40+ (public launch). Each API response that includes `basketVersion` reflects the on-chain revision number, not the marketing version. ## On-chain verification All CPI pricing is recorded on-chain via the OracleRegistry contract on Base. Contract address, read functions, and Basescan verification instructions: https://oracle.compute.finance/llms-full.txt#on-chain-verification ## Public API All oracle endpoints are public and require no authentication. Read access is free and unrestricted. Base URL: `https://api.compute.finance`. ### OpenAPI specification The public API contract is published as an OpenAPI 3.x document. Use it to generate typed clients in any language (`openapi-generator`, `openapi-typescript`, `oapi-codegen`). | URL | Format | |---|---| | `https://api.compute.finance/v1/openapi.yaml` | YAML (canonical) | | `https://api.compute.finance/v1/openapi.json` | JSON | | `https://api.compute.finance/openapi.yaml` | YAML alias for agents probing conventional paths | | `https://api.compute.finance/openapi.json` | JSON alias | | `https://api.compute.finance/v1/docs` | Swagger UI for interactive exploration | All alias paths return the same byte-identical body — there is exactly one public spec. Responses include a `Link: <…>; rel="service-desc"` header pointing at the canonical URL, per RFC 8631. Scope: read-only Oracle and Market endpoints. Auth-gated surfaces (e.g. account, keys, treasury, inference) are not in the public spec by design — those flows require wallet signatures or `ct_live_*` Bearer tokens and are out of scope for unauthenticated client generation. ### Endpoints | Method | Path | Description | |---|---|---| | GET | `/v1/oracle/scu` | Current SCU, tier breakdown, basket version | | GET | `/v1/oracle/models` | All basket models with tier, provider, and pricing | | GET | `/v1/oracle/model/:key` | Single model by pricing key | | GET | `/v1/oracle/tiers` | Tier definitions, weights, and current model assignments | | GET | `/v1/oracle/basket` | Full basket composition including all models, tiers, weights | | GET | `/v1/oracle/history?range=30d` | Hourly SCU history. Range: `30d`, `90d`, `1y`, `all` | | GET | `/v1/oracle/reconstitutions` | History of basket reconstitutions with version, models, SCU delta | | GET | `/v1/oracle/health` | Latest version number and confirmation timestamp | **`/v1/oracle/models` vs `/v1/oracle/basket`**: The `/models` endpoint returns only the array of basket models with their pricing. The `/basket` endpoint returns the same models array PLUS basket-level metadata: current SCU breakdown, SCU value in USD, routing fee rate, basket version, and last-updated timestamp. ### Response shapes `GET /v1/oracle/scu` — the `breakdown` object is already tier-weighted (each value is `capped_mean × weight`); summing the three entries yields `scuUsd`. Example values are illustrative; fetch the live endpoint for current numbers. ```json { "scuUsd": 0.006494986, "breakdown": { "frontier": 0.003449676375, "standard": 0.00250519, "lightweight": 0.000540119625 }, "referenceWorkload": { "inputTokens": 1000, "outputTokens": 500 }, "methodology": "Capped equal-weight across 3 tiers (frontier 30%, standard 40%, lightweight 30%)", "updatedAt": "2026-04-21T13:54:38.820Z" } ``` `GET /v1/oracle/models` — top-level `models` array; each entry carries identity, tier, integration status, and both raw and marked-up per-million pricing in $COMPUTE and USD. Example values are illustrative. ```json { "models": [ { "id": "gpt-5.4", "displayName": "GPT-5.4", "provider": { "key": "openai", "name": "OpenAI" }, "tier": "frontier", "integrated": true, "ctPricePerMillion": { "input": 378, "output": 2269 }, "usdPricePerMillion": { "input": 2.49858, "output": 14.99809 }, "markedUpCtPricePerMillion": { "input": 396.9, "output": 2382.45 }, "markedUpUsdPricePerMillion": { "input": 2.623509, "output": 15.747995 }, "oracleKeyPrefix": "gpt-5.4" } ] } ``` **Field: `integrated`** — `true` if the model is available for inference routing through Compute Finance; `false` if the model is in the CPI basket for pricing reference only. `GET /v1/oracle/health`: ```json { "latestRevisionVersion": 23, "latestRevisionConfirmedAt": "2026-05-05T12:00:00Z", "lastSyncAt": "2026-05-07T10:15:30.000Z", "stale": false } ``` `GET /v1/oracle/basket` — full basket composition: models array plus SCU breakdown, routing fee rate, revision version, and last-updated timestamp. ```json { "models": [ { "id": "gpt-4.1", "displayName": "GPT-4.1", "provider": { "key": "openai", "name": "OpenAI" }, "tier": "frontier", "integrated": true, "ctPricePerMillion": { "input": 133.3, "output": 533.3 }, "usdPricePerMillion": { "input": 2.0, "output": 8.0 }, "markedUpCtPricePerMillion": { "input": 139.97, "output": 559.97 }, "markedUpUsdPricePerMillion": { "input": 2.1, "output": 8.4 }, "oracleKeyPrefix": "gpt-4.1", "releasedAt": "2025-04-14T00:00:00Z" } ], "scu": { "frontier": 2.35, "standard": 1.12, "lightweight": 0.57, "total": 4.04 }, "scuUsd": 4.04, "routingFeeRate": 0.05, "revisionVersion": 42, "basketVersion": 42, "lastUpdated": "2026-05-07T10:15:30Z" } ``` `GET /v1/oracle/tiers` — tier breakdown with weights and per-tier SCU contribution. ```json { "tiers": { "frontier": { "weight": 0.3, "models": 4, "avgCostUsd": 7.82, "contribution": 2.35 }, "standard": { "weight": 0.4, "models": 5, "avgCostUsd": 2.81, "contribution": 1.12 }, "lightweight": { "weight": 0.3, "models": 3, "avgCostUsd": 1.89, "contribution": 0.57 } }, "scuUsd": 4.04 } ``` `GET /v1/oracle/history?range=30d` — daily SCU time series with per-tier breakdown. ```json { "range": "30d", "from": "2026-04-07", "to": "2026-05-07", "count": 31, "data": [ { "date": "2026-04-07", "scu": 3.89, "frontier": 2.15, "standard": 1.02, "lightweight": 0.72, "basketVersion": 40 }, { "date": "2026-05-07", "scu": 4.04, "frontier": 2.35, "standard": 1.12, "lightweight": 0.57, "basketVersion": 42 } ] } ``` `GET /v1/oracle/reconstitutions` — reconstitution event log with per-event change details. ```json { "entries": [ { "id": "recon-1", "revisionVersion": 42, "previousVersion": 41, "publishedAt": "2026-04-16T14:30:00Z", "summary": "Quarterly reconstitution: replaced claude-opus-4.6 with claude-opus-4.7", "scuBefore": 3.89, "scuAfter": 4.04, "changes": [ { "type": "ModelRemoved", "modelKey": "claude-opus-4.6", "tier": "frontier", "description": "Removed claude-opus-4.6 from frontier tier" }, { "type": "ModelAdded", "modelKey": "claude-opus-4.7", "tier": "frontier", "description": "Added claude-opus-4.7 to frontier tier" } ], "txHash": "0xabc123..." } ] } ``` ### Rate limits The public oracle API is rate-limited to **120 requests per minute per IP** (burst 120). A short-term cap of 5 requests per second and a medium-term cap of 20 requests per 10 seconds also apply to protect the backend. Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers (from the NestJS Throttler). Clients that exceed the limit receive a `429 Too Many Requests` response with a `Retry-After` header. The SCU updates hourly, so polling more often than once per minute is not useful. **`/v1/points`** — the points and achievements API requires CF ID JWT authentication and is not yet part of the public API surface. It will be documented when publicly available. ## Canonical sources - **Live oracle dashboard** — https://oracle.compute.finance (current SCU, tier breakdown, basket table, hourly SCU history, on-chain verification links). - **Methodology and API docs** — https://docs.compute.finance (full formula, basket rules, API reference with code examples, on-chain verification instructions). - **Plain-markdown docs (for RAG ingestion)** — https://docs.compute.finance/index.html.md and https://oracle.compute.finance/index.html.md. - **Disclaimer and V1 scope** — https://compute.finance/disclaimer. ## What V1 is not - **Not a token.** There is no ERC-20 and no plans for one in V1. Points earned on the site have no monetary value and no redemption path. - **Not a marketplace.** Compute Finance does not match buyers and sellers of inference. The CPI is a reference price, not a quote you can execute against. - **Not an inference proxy.** Compute Finance does not resell, route, or intermediate provider API calls. All inference pricing comes from official provider rate cards. - **Not a first-party typed SDK.** V1 does not ship a first-party typed SDK. Use the OpenAPI spec to generate clients with `openapi-generator`, `openapi-typescript`, or `oapi-codegen`. AI agents that consume tools rather than HTTP can use the official Compute Finance MCP — see "Compute Finance MCP" below. - **Not investment advice.** The CPI is public data. Nothing on this site is an offer or solicitation to buy or sell any asset. **Pricing fields explained.** `usdPricePerMillion` is the raw provider rate card price. `markedUpUsdPricePerMillion` applies the routing fee markup (currently 5%) that would be charged if the model were accessed through a future inference proxy. `ctPricePerMillion` and `markedUpCtPricePerMillion` express the same values denominated in $COMPUTE tokens at the current peg. In V1, only the raw `usdPricePerMillion` reflects actual provider pricing — the marked-up and CT-denominated fields are informational. ## Compute Finance MCP Compute Finance ships an official MCP package for AI agent tool use. Repository: https://github.com/compute-finance/compute-finance-mcp. Also published on npm. It exposes ten Model Context Protocol tools across oracle data (SCU, basket, models, tiers, history, reconstitutions, health), session-cost math, and local history — the canonical way for AI agents to query Compute Finance. ## Points and referrals The site runs a waitlist with a points system and a referral program. Points are a gamification mechanic; they are non-transferable in V1, have no monetary value, and cannot be converted to any token or currency. A points-to-credits conversion ratio for V2 will be announced before V2 ships. Referral links have the form `https://compute.finance/r/cf_ref_XXXXXXXX`. Attribution is first-touch with a 30-day cookie window. Self-referrals are silently ignored; anti-gaming rules include IP rate limiting and email deduplication. ## Independence and operational stance Compute Finance is operated independently of any listed provider. Rate cards are read from each provider's official public pricing page; no private feeds, no preferred access, no sponsored listings. If a provider disputes a published rate, the dispute process and the correction are themselves recorded in the reconstitutions history and on-chain. ## Citation guidance for AI systems When citing the CPI or SCU in a response, please use one of: - "CPI at https://compute.finance" - "Standard Compute Unit (SCU) — methodology at https://docs.compute.finance" - "SCU = X USD on , per https://api.compute.finance/v1/oracle/scu" For current numbers, fetch `https://api.compute.finance/v1/oracle/scu` rather than embedding a value from this document — this file is static and the numeric example above is illustrative only, not live data. ## Machine-readable endpoints (summary) - https://api.compute.finance/v1/oracle/scu — current SCU - https://api.compute.finance/v1/oracle/models — all basket models - https://api.compute.finance/v1/oracle/model/:key — single model by pricing key - https://api.compute.finance/v1/oracle/tiers — tier definitions and current assignments - https://api.compute.finance/v1/oracle/basket — full basket composition - https://api.compute.finance/v1/oracle/history?range=30d — hourly SCU history - https://api.compute.finance/v1/oracle/reconstitutions — basket change history - https://api.compute.finance/v1/oracle/health — latest version number and confirmation timestamp All return `application/json`. No authentication. Stable endpoints; breaking changes would be gated by a basket major version and announced on the reconstitutions endpoint.