Free tool

Embeddable LLM cost badges

Drop a live cost-per-request SVG badge into your README, blog post, docs, or changelog. The number updates automatically whenever model pricing changes.

Configure your badge

Preview

Calcis cost badge
Markdown
![cost](https://www.calcis.dev/api/badge?model=claude-opus-4-7&tokens=1000&output=500&style=flat&label=cost)
HTML
<img src="https://www.calcis.dev/api/badge?model=claude-opus-4-7&tokens=1000&output=500&style=flat&label=cost" alt="cost" />
Direct URL
https://www.calcis.dev/api/badge?model=claude-opus-4-7&tokens=1000&output=500&style=flat&label=cost

Parameters

ParamDefaultDescription
modelrequiredPricing-table id. E.g. gpt-5.4, claude-opus-4-7, gemini-2.5-pro.
tokens1000Input tokens per request.
output500Output tokens per request.
styleflatflat or plastic. Controls the shields.io-style look.
labelcostLeft-hand text. Capped at 32 characters.

Caching

Badge responses are served with Cache-Control: public, max-age=86400, s-maxage=86400. That means every badge embed is served from your CDN or the viewer's browser for 24 hours before hitting the Calcis origin. Safe to embed anywhere — no rate-limit risk.

Frequently asked

Does the badge update when pricing changes?

Yes — badges re-render from the live PRICING table on every origin request. With the 24h CDN cache, existing embeds pick up the new price within a day of a pricing change.

Is it free?

Yes, and there's no authentication. Embed as many as you want.

What happens if I use an unknown model id?

You get a 400 response with a human-readable error badge saying "unknown model". Double-check the id on /models — the dots-to-hyphens slug form used for page URLs isn't the same as the pricing-table id.

Can I use this in GitHub README?

Yes — use the Markdown snippet from the live preview above. GitHub's image proxy handles the SVG rendering and caching. The badge updates whenever a viewer visits your README after the CDN TTL expires.