NewHow we catch a seller listing the wrong model, and refund you if one does.
UberLLM

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:

[![Claude Sonnet 4.5 API price on UberLLM](https://api.uberllm.dev/api/v1/public/badge/anthropic/claude-sonnet-4.5.svg)](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=embed and 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.