How a row is built
One row is a product × plan × capture date. A product qualifies when its public pricing page carries a numeric, depletable meter — credits, tokens, tasks, actions, outcomes. Because a credit means something different everywhere, the Index works in three comparable layers and never compares raw $/credit across products:
- Unit-free within-product ratios — top-up premium over a plan’s own bundle, tier-to-tier discount curves. The unit cancels.
- Policy distributions — rollover, expiry, behaviour at zero, seat scaling. Counted across the panel.
- Task-equivalent prices within a category — only where the credit-to-action mapping is public, and only where the task is the same.
Sources are vendors’ own public pricing pages and help docs only — never third-party trackers, leaks, or estimates (those may annotate a row, never populate it). Every published row is pinned to at least one Wayback Machine snapshot. Promos and regional prices are flagged and excluded from metrics. Prices visible only behind the logged-in purchase screen are recorded as in-app only and kept out of public aggregates — the opacity is reported, not imputed. Derived figures are computed at build; none is hand-entered, and missing is missing — no imputation, ever.
What we excluded — and why
The inclusion test is deliberately strict, and plenty of well-known AI software fails it. The reasons are part of the picture — not every AI product meters, and where the meter is absent is itself a finding:
- Flat per-seat AI, no meter — e.g. Granola (AI meeting notes; $14–$35/user, “unlimited”). Priced like classic SaaS — nothing to meter.
- Caps without purchasable units — e.g. Wispr Flow (AI dictation; 2,000 words/week free, then a flat “unlimited” Pro at $15). A cap, but you upgrade rather than buy more, so there’s no top-up economics to read.
- No first-party AI product — e.g. Obsidian (a notes app; AI is third-party plugins). Out of scope.
- Raw API token pricing (OpenAI / Anthropic / Google per-token rates) — a different layer; this study is about the abstraction products wrap around tokens.
- Negotiated enterprise pricing — unobservable; tracked instead on the opacity watchlist.
- Promos, regional, and lifetime prices — flagged and kept out of the metrics so the quarterly time series stays clean.
The panel & source ledger
Every published product, its computed bundled-rate range, whether the top-up
price is public, and the dated source + archive each row rests on. The full
per-plan dataset is the /benchmarks/credit-index.json
endpoint (published observations only).
The Index is published under CC BY 4.0: free to reuse — including by AI engines — with attribution to Strategy of Finance — The AI Credit Index.
| Product | Category | Bundled $/credit | Top-up price | Observed | Source |
|---|---|---|---|---|---|
| Adobe Firefly (generative credits) | Incumbents adding meters | $0.004–$0.005 | Published | adobe.com · archive | |
| Agentforce (Flex Credits) | Incumbents adding meters | — | Published | help.salesforce.com · archive | |
| Apollo | GTM / RevOps | $0.02475–$0.026 | In-app only | apollo.io · archive | |
| Bardeen | Workflow automation | $0.05–$0.1 | In-app only | bardeen.ai · archive | |
| Bolt | Coding / agents | $0.0000018–$0.0000025 | In-app only | bolt.new · archive | |
| Canva AI (Magic Studio AI allowance) | Incumbents adding meters | $0.005–$0.0075 | In-app only | canva.com · archive | |
| ChatLLM | General agents | $0.0005–$0.00067 | In-app only | abacus.ai · archive | |
| Clay | GTM / RevOps | $0.074–$0.0825 | Published | clay.com · archive | |
| Copy.ai | Content / marketing | $0.04–$0.05 | In-app only | copy.ai · archive | |
| Cursor | Coding / agents | $0.5–$1 | Published | cursor.com · archive | |
| D-ID Studio | Media generation | $0.1475–$0.49 | None | d-id.com · archive | |
| Descript | Media generation | $0.04333–$0.06 | In-app only | descript.com · archive | |
| Devin | Coding / agents | — | In-app only | devin.ai · archive | |
| Dream Machine (Luma) | Media generation | $0.002–$0.003 | Published | lumalabs.ai · archive | |
| ElevenLabs | Media generation | $0.00016–$0.0002 | Published | elevenlabs.io · archive | |
| Emergent | Coding / agents | $0.2–$0.26667 | Published | emergent.sh · archive | |
| Figma AI credits | Incumbents adding meters | $0.00533–$0.02118 | Published | figma.com · archive | |
| Fin | Support / CX | — | Published | intercom.com · archive | |
| Gamma | Content / marketing | $0.00333–$0.01 | Published | gamma.app · archive | |
| Genspark | General agents | $0.002–$0.0025 | Published | genspark.ai · archive | |
| GitHub Copilot | Coding / agents | $0.005–$0.00667 | Published | github.com · archive | |
| HeyGen | Media generation | $0.04833–$0.09933 | In-app only | heygen.com · archive | |
| HubSpot Credits (Breeze) | Incumbents adding meters | — | Published | legal.hubspot.com · archive | |
| Hugging Face Hub † | Dev platforms | $4.50–$25 | Published | huggingface.co · archive | |
| Ideogram | Media generation | $0.01714–$0.02 | Published | ideogram.ai · archive | |
| Instantly | GTM / RevOps | $0.0194–$0.06267 | Published | instantly.ai · archive | |
| Leonardo.Ai | Media generation | $0.0008–$0.00141 | In-app only | leonardo.ai · archive | |
| Lovable | Coding / agents | $0.25–$0.5 | Published | lovable.dev · archive | |
| Magnific AI suite | Media generation | $0.00127–$0.0022 | In-app only | magnific.com · archive | |
| Make | Workflow automation | $0.0018 | Published | make.com · archive | |
| Manus | General agents | $0.005 | In-app only | help.manus.im · archive | |
| Midjourney | Media generation | $2–$3.03 | Published | docs.midjourney.com · archive | |
| monday AI (AI credits) | Incumbents adding meters | $0.007–$0.012 | Published | monday.com · archive | |
| n8n Cloud | Workflow automation | — | Published | n8n.io · archive | |
| Notion AI (Notion credits) | Incumbents adding meters | — | Published | notion.com · archive | |
| OpenArt | Media generation | $0.00226–$0.0035 | Published | openart.ai · archive | |
| PhantomBuster | Workflow automation | $1.46–$3.45 | None | phantombuster.com · archive | |
| Pika | Media generation | $0.01429–$0.01583 | In-app only | pika.art · archive | |
| Recraft | Media generation | $0.01–$0.012 | Published | recraft.ai · archive | |
| Relay.app | Workflow automation | $0.05067–$0.07867 | In-app only | relay.app · archive | |
| Replit | Coding / agents | $1 | Published | replit.com · archive | |
| Rovo (AI credits) | Incumbents adding meters | $0.01–$0.0125 | Published | support.atlassian.com · archive | |
| Runway | Media generation | $0.01–$0.024 | In-app only | runwayml.com · archive | |
| Smartlead | GTM / RevOps | $0.00076–$0.0065 | Published | smartlead.ai · archive | |
| Suno | Media generation | $0.003–$0.004 | In-app only | suno.com · archive | |
| Surfer | Content / marketing | $3.97–$7.30 | None | surferseo.com · archive | |
| Synthesia | Media generation | $0.02417–$0.02472 | In-app only | synthesia.io · archive | |
| Udio | Media generation | $0.00417–$0.005 | Published | udio.com · archive | |
| v0 | Coding / agents | $1–$3.33 | In-app only | v0.app · archive | |
| Windsurf (Devin Desktop) | Coding / agents | — | In-app only | windsurf.com · archive | |
| Zapier | Workflow automation | $0.03999–$0.05175 | In-app only | zapier.com · archive | |
| Zendesk AI agents | Support / CX | $3.80–$11.50 | In-app only | zendesk.com · archive |
† Borderline inclusion — sits near the raw-API exclusion line; captured anyway, flagged here.
Field definitions
The JSON and CSV exports share one row shape — one plan tier per row, with the product and observation
fields repeated on each row. Computed fields are marked; they are derived at build time from the published
inputs and are never stored. The same definitions are kept in the repository as
docs/ai-credit-index-data-dictionary.md.
| Field | Type | Definition |
|---|---|---|
product_slug | string | Stable product identifier (the YAML file name). Joins to /benchmarks/ai-credit-index/reviewed/<slug> where a Reviewed page exists. |
company | string | Vendor name as it appears on the pricing page. |
product | string | Product name as it appears on the pricing page. |
category | enum | One of nine panel categories (coding-agents, media-gen, incumbent-meters, workflow-automation, gtm-revops, general-agents, content-marketing, support-cx, dev-platforms). |
audience | enum | Primary go-to-market audience: consumer, prosumer or business. Editorial classification; business absorbs enterprise. |
observed_at | date (ISO) | Date the pricing page was read and archived for this observation. Every row in a given edition is dated on or before that edition’s cut-off. |
unit_name | string | What the vendor calls the metered unit (credits, tokens, tasks, actions…). Units are NOT comparable across products. |
dollar_pegged | boolean | True when one unit is defined as a fixed dollar amount (e.g. 1 credit = 1¢). |
plan | string | Plan tier name as published. |
plan_slug | string | Stable tier identifier across editions; renames are tracked in the product’s `formerly` list. |
price_usd_monthly | number | null | Published monthly price in USD (annual plans normalized to monthly where the vendor states both). Null = not publicly priced (contact us). |
included_credits | number | null | Units included per month at that price. Null = unlimited, unstated or custom. |
exhaustion_behavior | enum | null | What happens when included units run out: hard_stop, overage_opt_in, auto_overage_default, throttle_cap, unstated. |
included_expiry | enum | null | Policy for unused included units: expires, rolls_over, never_expires, unstated. (Rollover horizons and notes live in the source YAML, not in the flat export.) |
purchased_expiry | enum | null | Same convention for purchased top-up units. |
top_up_exists | enum | null | Whether the plan sells additional units: yes, no, unknown. |
top_up_disclosure | enum | null | Where the top-up price is disclosed: pricing_page, help_docs, in_app_only, none. |
effective_price_per_credit | number | null (computed) | price_usd_monthly ÷ included_credits, in USD per unit. Null when either input is null or zero — free tiers never contribute a rate. |
top_up_unit_price | number | null (computed) | Cheapest publicly disclosed top-up pack price per unit. Null unless disclosure is pricing_page or help_docs and pack prices exist. |
top_up_premium_pct | number | null (computed) | (top_up_unit_price ÷ effective_price_per_credit − 1) × 100. Positive = topping up costs more per unit than the bundle. Null unless both inputs exist. |
source_urls | string (| separated) | The vendor pages the observation was read from. |
archive_urls | string (| separated) | Wayback (or equivalent) archives of those pages at observation time. Every published observation carries at least one. |
Downloads: current view JSON · CSV · Edition 1JSON · CSV. Every export carries its view id, observation window, generation time and licence in its metadata (JSON) or response headers (CSV).
Corrections and updates
A published figure is corrected by adding a dated observation or a dated correction note — never by silently editing a record. Corrections inside an edition window are listed on that edition’s page (Edition 1); coverage and methodology changes are logged on the change log. To report an error, use the contact form with the product, the figure and the vendor page you read.