Embed live prices on your site
You can show UberLLM's current prices on your blog, docs or README. The prices update by themselves, and you need no API key and no account. There are four ways:
| You want | Use |
|---|---|
| A price table on a web page | The script tag |
| The same table where scripts are not allowed | A plain iframe |
| A price badge in a README | The price badge |
| The numbers, to build your own table | The JSON price API |
The pricing pages on uberllm.dev have an Embed a live price table link, and each model page has Embed this price. Both give you this code ready to paste.
The script tag
Paste this where the table should appear:
<script async src="https://uberllm.dev/embed.js"
data-models="anthropic/claude-sonnet-4.5,openai/gpt-5.5,deepseek/deepseek-v4-flash"></script>
The script puts the table right after itself and keeps its height equal to the table's, so there is no empty space and no scrollbar.
With no options you get the 10 chat models at the top of the uberllm.dev board:
<script async src="https://uberllm.dev/embed.js"></script>
Options
All options are optional.
| Attribute | What it does |
|---|---|
data-models |
The models to show, as ids separated by commas, in the order you want. An id is what you send as model in a request, for example openai/gpt-5.5. |
data-type |
Show text, image, video or audio models. Without data-models and without this, the table shows chat models (text). |
data-limit |
How many models to show when you do not name them. From 1 to 50. The default is 10. |
data-theme |
light, dark or auto. auto is the default and follows the reader's system setting. Set light or dark to match your page. |
data-lang |
The language of the column names: en, fr, es, de, pt, it, nl, zh, vi, ja, ko or id. auto uses the reader's browser language. The default is en. |
data-max-width |
The widest the table gets, for example 600px or 100%. The default is 720px. |
data-title |
The name screen readers announce for the table. |
A video table in a dark page:
<script async src="https://uberllm.dev/embed.js"
data-type="video" data-limit="5" data-theme="dark"></script>
A plain iframe
Some sites remove script tags. Use an iframe there. The options are the same,
written in the address without data-:
<iframe src="https://uberllm.dev/embed/prices?models=anthropic/claude-sonnet-4.5,openai/gpt-5.5"
title="AI model API prices" width="100%" height="178" loading="lazy"
style="border:0;max-width:720px"></iframe>
An iframe cannot change its own height, so set it yourself: 76 px plus 51 px for each model. Two models need 178, five need 331 and ten need 586.
What the table shows
- Chat models: the price for 1 million input tokens and 1 million output tokens.
- Image, video and audio models: the price for one unit, for example one second of video or one image.
- Below list price: how far the price is below the model maker's list price. The column is left out when no model in the table has a list price above ours.
These are the same numbers as on each model's page: the lowest seller price right now. A request can cost more when the cheapest sellers are busy. See Pricing.
Each model name links to its page on uberllm.dev, and the table has a small "Prices by UberLLM" link.
The table is built with the prices of the last hour and then reads the current ones from the price API. If that read fails, it keeps the prices it has. A model that nobody serves at the moment is left out, and so are models made for adult content. A model id that does not exist is skipped.
The price badge
A small picture with a model's name and its price now, for a README:
[](https://uberllm.dev/models/anthropic/claude-sonnet-4.5?utm_source=embed&utm_medium=referral&utm_campaign=price-badge)
Put the model id in the address as it is, slashes included, and end it with .svg.
Price API and price badge has the HTML form and the
other options.
The JSON price API
To draw your own table, read the prices as JSON. Any web page can call it from the browser:
const res = await fetch("https://api.uberllm.dev/api/v1/public/prices?type=text&limit=10");
const { models } = await res.json();
for (const m of models) console.log(m.name, m.price_text);
Price API and price badge lists every parameter and field.
Privacy and speed
- The table is one small file. It loads no fonts, no analytics and no other scripts.
- It sets no cookies and reads nothing from your page. The only thing it sends your page is its own height.
- Links from the table carry
utm_source=embedand the name of your site, so we can see which sites send visitors. - Search engines are told not to index the table itself, so it does not compete with your page.
Limits
The price API allows 300 requests a minute from one IP address. A table makes up to four small requests when it opens, and again every 5 minutes while it is on screen.