Buy vs Build
The agentic AI question every team is asking in 2026: should you pay an outcome-priced vendor (Intercom Fin, Sierra, Anthropic Managed Agents), or build it yourself on a token-priced API? This calculator answers with real V2.1 vendor data, three time horizons, and engineering cost included.
This calculator is live — full usage guide coming soon.
- Quick estimate for this specific AI cost question
- Shareable URL captures your inputs
New to this calculator? Start with the ⚡ Playground — a few sliders, instant ballpark. Then switch to the 🧮 Calculator for your exact number.
Two ways to use this: visualize in the Playground, then get your number in the Calculator.
Vendor price vs the all-in cost of building: FTEs, ramp, and opportunity cost. Shown monthly; ramp fixed at 6 months.
💡Cheaper isn’t everything: building wins when it’s core and you can staff it; buying wins when speed and focus matter more.
Buy an outcome-priced vendor, or build on a token-priced API?
This estimates your monthly cost at a given outcome volume both ways — buy = the vendor’s per-outcome rate; build = your API tokens + runtime + tool calls + amortized engineering — then compares them across month 1, 6, and 24 so you can see the break-even.
✅ Buying usually wins when…
- Volume is low or spiky (engineering can’t amortize)
- You need value in days, not a build cycle
- You have no ML/platform engineers to spare
- The vendor’s success rate beats what you’d build
🔧 Building usually wins when…
- Volume is high and steady (amortizes the build)
- You need control, data residency, or custom logic
- The per-outcome vendor rate is high for your volume
- You already run the infra and have the team
👇 Now try the calculator below with your own AI workloads
1. Your workload
2. The decision factors
Cost is only part of it. Answer these the way a manager would; the verdict updates live.
Per-outcome resource estimates (build track)
Engineering cost (build track only)
Track-by-track
Three time horizons
Top 5 build-track vendors
| Plan | Vendor | Monthly cost (API only) |
|---|
- ⚖️ Get an honest verdict — Buy, Build, or Tie based on your numbers, math decides
- 📅 Know the break-even month — when build pays for itself vs paying a vendor
- 📊 Justify to leadership — side-by-side 3-year TCO with reasoning
- 🔌 Integrate with your AI agents — MCP available for procurement and build planning
Counted
- Buy: vendor per-outcome rate × your volume (+ any plan minimum)
- Build: API input/output tokens, runtime, web/tool calls per outcome
- Build: engineering — initial build amortized over the horizon + monthly maintenance
Not counted
- Vendor seat/platform add-ons & data-prep / compliance
- The cost of unresolved outcomes still reaching humans
- Negotiated discounts & annual commitments
📖 Data sources & methodology
Methodology
- All prices are USD per 1 million tokens, current as of 2026-07-28.
- Vendor-published values have no mark. Inferred/extrapolated values are marked with * and listed below.
- Batch API discounts are 50% off standard rates across providers that offer Batch mode.
- Prompt caching discounts vary by provider (typically 80-90% off cached input tokens).
- Regional data-residency surcharges (Anthropic 1.1x, OpenAI 1.1x, Google regional tiers) are NOT included in base rates.
- Long-context pricing tiers apply when input exceeds model threshold.
- Embedding prices are input-only (no output tokens generated).
Primary sources
Last-verified date is the most recent successful daily snapshot
(aicost_pricing_snapshots) or, when no snapshot exists yet,
the latest successful crawler run (aicost_crawler_runs).
10 of 10
vendors are currently verified. Aggregator services (TokenCost, AI Pricing Guru, etc.)
are not listed.
Inferred values (marked with * in calculator tables)
Derived from industry conventions, not directly published by the vendor. Typical conventions: cached input = 10% of base (90% off), Batch API = 50% of base (50% off).
| Vendor / Model | Field | Why it’s inferred |
|---|---|---|
| Anthropic — Claude Sonnet 4.6 | cachedInput |
Derived at 10% of input rate — Anthropic publishes 90% cache-hit discount on this tier. |
| Anthropic — Claude Sonnet 4.5 | cachedInput |
Derived at 10% of input rate; same 90% cache-hit convention as Sonnet 4.6. |
| Anthropic — Claude Sonnet 4.5 | batchInput |
Derived at 50% of standard input — Anthropic documents uniform 50% Batch discount. |
| Anthropic — Claude Sonnet 4.5 | batchOutput |
Derived at 50% of standard output — Anthropic documents uniform 50% Batch discount. |
| Anthropic — Claude Haiku 4.5 | cachedInput |
Derived at 10% of input rate — Anthropic 90% cache-hit discount convention. |
| OpenAI — GPT-5.4 Mini | cachedInput |
Derived at 10% of input — OpenAI documents automatic 90% discount on cache hits across GPT-5.x tier. |
| OpenAI — GPT-5.4 Nano | cachedInput |
Derived at 10% of input — OpenAI 90% cache-hit convention. |
| OpenAI — GPT-5.4 Nano | batchInput |
Derived at 50% of input — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.4 Nano | batchOutput |
Derived at 50% of output — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.4 Pro | cachedInput |
Derived at 10% of input — OpenAI 90% cache-hit convention. |
| OpenAI — GPT-5.4 Pro | batchInput |
Derived at 50% of input — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.4 Pro | batchOutput |
Derived at 50% of output — OpenAI Batch API uniform 50% discount. |
| OpenAI — GPT-5.2 | cachedInput |
Derived at 10% of input; no residency uplift. |
| OpenAI — GPT-5.2 | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.2 | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5 | cachedInput |
Derived at 10% of input. |
| OpenAI — GPT-5 | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5 | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5.5 Pro | cachedInput |
Derived at 10% of input — OpenAI does not publish a cached rate for *-pro models; using the family convention. |
| OpenAI — GPT-5.5 Pro | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.5 Pro | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5.2 Pro | cachedInput |
Derived at 10% of input — pro-tier convention. |
| OpenAI — GPT-5.2 Pro | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.2 Pro | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5.1 | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5.1 | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5 Pro | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5 Pro | batchOutput |
Derived at 50% of output. |
| OpenAI — GPT-5 Nano | cachedInput |
Derived at 10% of input. |
| OpenAI — GPT-5 Nano | batchInput |
Derived at 50% of input. |
| OpenAI — GPT-5 Nano | batchOutput |
Derived at 50% of output. |
| Google — Gemini 3 Flash | cachedInput |
Derived at 10% of input — Google caching discount convention ~90%. |
| Google — Gemini 3.1 Flash-Lite | cachedInput |
Derived at 10% of input — Google caching convention. |
| Google — Gemini 3.1 Flash-Lite | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 3.1 Flash-Lite | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| Google — Gemini 2.5 Pro | cachedInput |
Derived at 10% of input. |
| Google — Gemini 2.5 Flash | cachedInput |
Derived at 10% of input. |
| Google — Gemini 2.5 Flash-Lite | cachedInput |
Derived at 10% of input — Google caching convention. |
| Google — Gemini 2.5 Flash-Lite | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 2.5 Flash-Lite | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash | cachedInput |
Derived at 25% of input per Google 2.0 family caching rates. |
| Google — Gemini 2.0 Flash | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash-Lite | cachedInput |
Derived at 10% of input — Google caching convention. |
| Google — Gemini 2.0 Flash-Lite | batchInput |
Derived at 50% of input — Google Batch API uniform 50% discount. |
| Google — Gemini 2.0 Flash-Lite | batchOutput |
Derived at 50% of output — Google Batch API uniform 50% discount. |
| xAI — Grok 4 (legacy) | cachedInput |
Extrapolated at 25% of base. |
Pricing is cross-verified against the
LiteLLM community registry
when available. Daily snapshots are kept in aicost_pricing_snapshots;
every change is logged to aicost_price_changelog with old & new
values for full audit trail. Read the full methodology →