AI Rate Card

Документация

Всё в одном месте: что такое AI Rate Card, открытые данные, API и MCP-сервер, как цитировать и как подключается провайдер.

Содержание

Что такое AI Rate Card

AI Rate Card собирает цены на AI-модели - языковые, генерации изображений, речи и другие - в том виде, в каком их публикуют провайдеры. Цены берутся с открытых страниц цен и из API самих провайдеров - а у провайдеров, чьи условия не разрешают автоматический сбор, из открытой базы models.dev - и проверяются каждый день.

Если два источника расходятся в цене, сайт не выбирает молча один из них: предложение помечается как расхождение, пока разница не будет разобрана.

Цены на сайте носят информационный характер. Решающей является страница самого провайдера: проверьте цену там перед покупкой.

Вопросы, исправления и пожелания: hello@airatecard.com.

Подробнее о том, как собираются цены →

API и MCP: как начать

Два способа получать цены не глазами, а машиной. Попробовать оба можно прямо сейчас — без регистрации и оплаты.

Спросить ИИ-ассистента (MCP)

Для тех, кто пользуется Claude, ChatGPT или Cursor. Подключаете сайт один раз — и ассистент сам смотрит актуальные цены, когда вы спрашиваете обычными словами. Программировать не нужно.

  1. Скопируйте адрес сервера: https://airatecard.com/mcp
  2. Добавьте его в ассистент как коннектор — куда нажимать в каждом приложении, написано ниже, в разделе «MCP-сервер».
  3. Спросите обычными словами, например:
    • Какая самая дешёвая модель с контекстом от 128 тысяч токенов?
    • Сравни цены Llama 3.1 8B у разных провайдеров.
    • Сколько в месяц будет стоить 10 млн токенов на вход и 2 млн на выход у GPT OSS 120B?

Получать данные программой (API)

Для разработчиков: обычные HTTP-запросы, ответ в JSON. Без ключа можно начать сразу; бесплатный личный ключ расширяет окно запросов в минуту (таблица ниже).

  1. Попробуйте запрос без ключа — скопируйте в терминал: 5 самых дешёвых предложений текстовых моделей.
    curl -s 'https://airatecard.com/v1/offers?category=llm&pricing=usage&limit=5'
  2. Нужно больше строк? Войдите, в кабинете в разделе «API-ключи» создайте ключ и передавайте его заголовком X-API-Key.
  3. Все запросы с параметрами: /openapi.json (его понимают Postman и генераторы клиентов).

Главные запросы

GET /v1/offers?category=llm&pricing=usage&limit=5предложения с ценами; фильтры те же, что на странице «Модели»
GET /v1/models?category=llmмодели и их лучшая цена
GET /v1/models/{model_id}одна модель со всеми предложениями
GET /v1/cost?model={model_id}&input_tokens=10000000&output_tokens=2000000сколько стоит ваша нагрузка у каждого провайдера модели
GET /v1/compare?models={a},{b}две–четыре модели рядом
GET /v1/analytics/cheapest?task=text&n=5самые дешёвые для задачи (текст, картинки, речь...)
GET /v1/models/{model_id}/historyистория цен модели (90 дней)
GET /v1/articlesстатьи сайта
GET /v1/metaо каталоге: когда обновлён, сколько предложений

Как собираются цены

Каждая цена на AI Rate Card берётся с открытой страницы цен или из API самого провайдера, если его условия разрешают автоматический сбор, а иначе - из models.dev, открытой базы цен моделей под лицензией MIT (Copyright (c) 2025 models.dev; текст лицензии - /static/licenses/models.dev.txt). Никаких оценок; проверяется каждый день.

«Нет данных» значит, что для этой модели у этого провайдера ещё не найдено предложение с ценой. «Бесплатно» значит, что на странице провайдера указано, что предложение ничего не стоит. «Снято» значит, что предложение раньше было на странице провайдера, но там его больше нет; оно остаётся на сайте с последней известной ценой, помеченное как снятое, чтобы не терять историю.

Каждое изменение цены сохраняется: полная история предложения и всего рынка по дням доступна на его собственной странице, а также на /market.

Данные

AI Rate Card — для того, чтобы смотреть и выбирать, а не копировать целиком: файла со всем каталогом или его историей цен нет. Чтобы процитировать, откройте карточку модели или предложения, а текущие цены постранично даёт /v1 или MCP-сервер.

Как цитировать

REST API

Публичный JSON API для агентов и скриптов: ключ не нужен для чтения, личный ключ только повышает лимит.

  • /v1
  • /openapi.json
curl -s 'https://airatecard.com/v1/offers?max_price_input=1&cur=USD'

Страницы

/v1/offers и /v1/models отдают не больше 50 строк на страницу (по умолчанию 25); листайте offset и limit или сузьте вопрос фильтрами — а весь каталог берите одним файлом из /export.

Аналитика

Текущие цены по задаче, а не по типу модели — тому, что действительно нужно покупателю: самое дешёвое, самое дорогое и медиана для embedding, image, moderation, rerank, stt, text, tts, video, vision. scope сужает до собственной категории задачи (specialized) или до мультимодальных моделей, которые ей подходят (universal); component выбирает input_tokens, output_tokens или собственную единицу задачи.

curl -s 'https://airatecard.com/v1/analytics/cheapest?task=text&n=5'
curl -s 'https://airatecard.com/v1/analytics/dearest?task=image&n=5'
curl -s 'https://airatecard.com/v1/analytics/median?task=vision&n=5'

Уровни доступа

Страницы открыты всем, любым поисковикам и ИИ-ассистентам. Машины могут начать без ключа; бесплатный личный ключ (регистрация — логин и пароль, без почты; затем кабинет → API-ключи; ключ передаётся заголовком X-API-Key) расширяет окно запросов в минуту.

Без входаFree
Страницы, статьи, фильтры, сравнение, калькуляторывсёвсё
Скачать таблицу: строк в файле, файлов в час100000 строк, 20 раз в час100000 строк, 60 раз в час
API для разработчиков: запросов в минуту (суточного лимита нет)60/min120/min
История цен через APIдо 90 дней, одна модель за запросдо 90 дней, одна модель за запрос

Ограничения и лицензия

Суточных лимитов нет: только окна в минуту против злоупотреблений (таблица выше), шире — с бесплатным личным ключом (кабинет → API-ключи, заголовок X-API-Key). В каждом ответе заголовки X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset и X-Daily-Rows-Remaining; при превышении — ответ 429 с Retry-After. Лицензия: CC BY 4.0: каталог, выгрузки, ответы API и история цен за 90 дней — можно свободно использовать, цитировать и распространять, в том числе коммерчески, с указанием AI Rate Card (airatecard.com) и ссылкой на карточку или страницу, откуда взяты цифры.

Как цитировать

В каждом ответе API и MCP есть строка «cite», каждый файл заканчивается ею: укажите AI Rate Card, ссылку на карточку или страницу модели и дату проверки цены — «Source: AI Rate Card, https://airatecard.com/c/offer:<id>, prices checked ГГГГ-ММ-ДД».

Выгрузка по фильтру

GET /export отдаёт предложения по фильтру в JSON, CSV, YAML или Excel: только текущие цены, в USD. Открытые данные (CC BY), без входа: весь каталог одним файлом, до 20 скачиваний в час с адреса (с аккаунтом больше). Параметры — как на странице «Модели»: задайте фильтр там, откройте «Скачать» и скопируйте адрес. В конце каждого файла строка «Source: AI Rate Card, ...» для цитирования.

curl -s 'https://airatecard.com/export?format=json&category=llm&r_in=0-1&r_ctx=128k-&limit=100'
curl -s 'https://airatecard.com/export?format=csv&provider=deepinfra&provider=together&sort=price_input'
curl -s 'https://airatecard.com/export?format=yaml&name_q=qwen&input_modality=image'

Попробовать

format: json | csv | yaml; диапазоны одним значением «от-до» (r_in, r_out, r_ctx, r_mo, r_params ...; можно 128k и 1m); provider, region, input_modality ... повторяются для нескольких значений; sort и desc - как на странице.

MCP-сервер

Удалённый MCP-сервер (Streamable HTTP), только для чтения. Отвечает на вопросы о ценах инструментами cheapest_for_workload (самое дешёвое под целую задачу, с готовыми сценариями: chatbot, coding_agent, rag, summarization, long_context, vision, embedding_index, trial), search_offers, get_model_prices, cheapest, compare_models, estimate_cost и get_card — у каждого результата есть ссылка на карточку для цитирования. Работает без ключа; с личным ключом (заголовок X-API-Key) отдаёт больше строк, как и API. Готовые запросы для пользователя (prompts): cheapest_for_my_job, where_is_model_cheapest, compare_models.

https://airatecard.com/mcp

Claude.ai / Claude Desktop

Настройки → Коннекторы → Добавить свой коннектор, затем вставьте этот адрес:

https://airatecard.com/mcp

Claude Code

claude mcp add --transport http ai-rate-card https://airatecard.com/mcp

ChatGPT

Настройки → Коннекторы (режим разработчика), добавьте свой коннектор с этим адресом:

https://airatecard.com/mcp

Cursor / VS Code

Добавьте это в свой mcp.json:

{
  "mcpServers": {
    "ai-rate-card": {
      "url": "https://airatecard.com/mcp"
    }
  }
}

Любой MCP-клиент

Одно сообщение JSON-RPC 2.0 по HTTP, сессия не нужна:

curl -s https://airatecard.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"cheapest","arguments":{"category":"llm"}}}'

Подключить своего агента

Любой агент, который умеет MCP, — на любом фреймворке или API — подключается к тому же серверу. Выберите вариант по нужным лимитам:

  • Без ключа: https://airatecard.com/mcp — гостевые лимиты, ничего настраивать не нужно.
  • Свой агент с вашими лимитами: https://airatecard.com/mcp и личный ключ из кабинета («API-ключи») в заголовке Authorization: Bearer <ключ> или X-API-Key: <ключ>.
  • Агент, который работает для многих людей, каждый под своим аккаунтом: https://airatecard.com/mcp/account через OAuth — см. раздел выше.

Примеры берут ключ из переменной окружения AIRATECARD_KEY — не вписывайте ключ в код и в адрес. Без ключа просто уберите строку Authorization.

Anthropic API (Messages, MCP connector)

import os, anthropic

client = anthropic.Anthropic()
resp = client.beta.messages.create(
    model="claude-opus-5-5", max_tokens=1000,
    messages=[{"role": "user", "content": "Cheapest model with 128K context?"}],
    mcp_servers=[{"type": "url", "url": "https://airatecard.com/mcp", "name": "airatecard",
                  "authorization_token": os.environ["AIRATECARD_KEY"]}],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "airatecard"}],
    betas=["mcp-client-2025-11-20"],
)
print(resp.content)

OpenAI API (Responses, remote MCP)

import os
from openai import OpenAI

resp = OpenAI().responses.create(
    model="YOUR_MODEL",
    input="Cheapest model with 128K context?",
    tools=[{"type": "mcp", "server_label": "airatecard", "server_url": "https://airatecard.com/mcp",
            "authorization": os.environ["AIRATECARD_KEY"], "require_approval": "never"}],
)
print(resp.output_text)

Claude Agent SDK (Python)

import asyncio, os
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

options = ClaudeAgentOptions(
    mcp_servers={"airatecard": {"type": "http", "url": "https://airatecard.com/mcp",
                                "headers": {"Authorization": "Bearer " + os.environ["AIRATECARD_KEY"]}}},
    allowed_tools=["mcp__airatecard__*"],
)

async def main():
    async for m in query(prompt="Cheapest model with 128K context?", options=options):
        if isinstance(m, ResultMessage):
            print(m.result)

asyncio.run(main())

OpenAI Agents SDK (Python)

import asyncio, os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(name="airatecard", params={"url": "https://airatecard.com/mcp",
            "headers": {"Authorization": "Bearer " + os.environ["AIRATECARD_KEY"]}}) as prices:
        agent = Agent(name="buyer", instructions="Answer with AI Rate Card prices and cite them.",
                      mcp_servers=[prices])
        print((await Runner.run(agent, "Cheapest model with 128K context?")).final_output)

asyncio.run(main())

LangChain / LangGraph (langchain-mcp-adapters)

import asyncio, os
from langchain_mcp_adapters.client import MultiServerMCPClient

async def main():
    client = MultiServerMCPClient({"airatecard": {
        "url": "https://airatecard.com/mcp", "transport": "streamable_http",
        "headers": {"Authorization": "Bearer " + os.environ["AIRATECARD_KEY"]}}})
    tools = await client.get_tools()      # give them to your agent, e.g. create_react_agent(model, tools)
    print([t.name for t in tools])

asyncio.run(main())

MCP SDK (Python, official)

import asyncio, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    headers = {"Authorization": "Bearer " + os.environ["AIRATECARD_KEY"]}
    async with streamablehttp_client("https://airatecard.com/mcp", headers=headers) as (read, write, _):
        async with ClientSession(read, write) as s:
            await s.initialize()
            res = await s.call_tool("cheapest", {"category": "llm", "limit": 3})
            print(res.content[0].text)

asyncio.run(main())

MCP SDK (TypeScript, official)

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(new URL("https://airatecard.com/mcp"), {
  requestInit: { headers: { Authorization: `Bearer ${process.env.AIRATECARD_KEY}` } },
});
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);
console.log(await client.callTool({ name: "cheapest", arguments: { category: "llm", limit: 3 } }));

HTTP (curl, JSON-RPC)

curl -s https://airatecard.com/mcp \
  -H "Authorization: Bearer $AIRATECARD_KEY" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"cheapest","arguments":{"category":"llm","limit":3}}}'

Полезно знать

Один ключ на агента: тогда его можно отозвать, не останавливая остальных. При превышении лимита сервер отвечает 429 с Retry-After — подождите столько секунд, не меняйте ключи. В каждом ответе инструмента есть строка cite и card_url — пусть агент их цитирует. Инструменты: search_offers, get_model_prices, cheapest, compare_models, estimate_cost, get_card, cheapest_models, dearest_models, median_models, list_articles.

Ваш аккаунт в ИИ-ассистентах и агентах (OAuth)

У MCP-сервера два адреса. https://airatecard.com/mcp работает для всех без входа, с гостевыми лимитами. https://airatecard.com/mcp/account работает от имени вашего аккаунта AI Rate Card: ваши лимиты (Free или Pro), а доступ видно и можно отозвать в кабинете. Вы входите один раз, на этом сайте, — ассистент вашего пароля не видит.

Claude.ai / Claude Desktop

Settings → Connectors → Add custom connector, вставьте адрес ниже. В выборе OAuth client оставьте «Register automatically». Claude откроет страницу входа этого сайта: войдите и нажмите «Разрешить».

https://airatecard.com/mcp/account

ChatGPT

Settings → Connectors (режим разработчика) → создайте коннектор с адресом ниже и аутентификацией OAuth. ChatGPT откроет страницу входа этого сайта: войдите и нажмите «Разрешить».

https://airatecard.com/mcp/account

Claude Code

Добавьте сервер, затем в Claude Code наберите /mcp и выберите Authenticate: откроется страница входа этого сайта.

claude mcp add --transport http ai-rate-card-account https://airatecard.com/mcp/account

Cursor / VS Code

Cursor, VS Code и другие MCP-клиенты с поддержкой OAuth: укажите адрес в mcp.json — при первом обращении клиент откроет страницу входа этого сайта.

{
  "mcpServers": {
    "ai-rate-card-account": {
      "url": "https://airatecard.com/mcp/account"
    }
  }
}

Скрипты и консольные агенты: код вместо браузера

Программа без браузера использует вход по коду (RFC 8628): она запрашивает код, вы открываете показанный адрес на любом устройстве, входите, проверяете код и нажимаете «Разрешить» — программа получает токен. Четыре запроса:

# 1. register your program once - keep the client_id
curl -s -X POST https://airatecard.com/oauth2/register -H 'Content-Type: application/json' \
  -d '{"client_name":"my script","token_endpoint_auth_method":"none","scope":"api offline_access",
       "grant_types":["urn:ietf:params:oauth:grant-type:device_code","refresh_token"]}'

# 2. ask for a code; open verification_uri_complete, sign in, press Allow
curl -s -X POST https://airatecard.com/oauth2/device/auth -d 'client_id=<client_id>&scope=api%20offline_access'

# 3. every few seconds until access_token comes
curl -s -X POST https://airatecard.com/oauth2/token -d 'grant_type=urn:ietf:params:oauth:grant-type:device_code' \
  -d 'device_code=<device_code>&client_id=<client_id>'

# 4. use it
curl -s https://airatecard.com/v1/meta -H 'Authorization: Bearer <access_token>'

Токены, лимиты и отзыв доступа

Передавайте токен в заголовке Authorization: Bearer <токен> на /v1 и /mcp/account. Он живёт час; обновляйте его через grant_type=refresh_token (токен обновления живёт 30 дней, пока вы не отзовёте доступ). Он работает с лимитами вашего аккаунта, как личный ключ. Все приложения, которым вы дали доступ, видны в кабинете в разделе «Подключённые приложения» — там доступ и его токены отзываются одной кнопкой.

Для агентов: /auth.md. Стандартные описания: /.well-known/oauth-authorization-server и /.well-known/oauth-protected-resource/mcp/account. Нужен постоянный ключ? Создайте его в кабинете в разделе «API-ключи» и передавайте в заголовке X-API-Key.

llms.txt

Текстовое руководство для AI-агентов по соглашению llmstxt.org: что такое сайт, API и MCP-сервер, как цитировать — /llms.txt (также /.well-known/llms.txt). Самое дешёвое текущее предложение самых продаваемых моделей, по строке на модель — /llms-full.txt.

Как цитировать

CC BY 4.0: каталог, выгрузки, ответы API и история цен за 90 дней — можно свободно использовать, цитировать и распространять, в том числе коммерчески, с указанием AI Rate Card (airatecard.com) и ссылкой на карточку или страницу, откуда взяты цифры.

Для AI-агентов есть /llms.txt и публичный API /v1 — смотреть, сравнивать и цитировать, а не копировать каталог или его историю целиком.

Source: AI Rate Card, https://airatecard.com/ru/c/offer:<id>

Для провайдеров

Бесплатное размещение, которое вы делаете сами в кабинете. Порядок во всех списках — только по цене; деньги никого не поднимают.

Как подключиться: шесть шагов, минут 15

Размещение бесплатное, и вы делаете его сами, в кабинете, минут за 15 — без писем и ожидания нас:

  1. Создайте аккаунт на сайте — логин и пароль, без почты.
  2. Нажмите «Добавить нового провайдера» и введите название и сайт компании.
  3. Подтвердите, что домен ваш: файл из одной строки в /.well-known/, TXT-запись DNS или meta-тег — и нажмите «Проверить сейчас».
  4. Впишите модели и цены в форму — она сделает ваш models.yaml.
  5. Положите этот файл на сайт по адресу /.well-known/airatecard-models.yaml и нажмите «Проверить файл».
  6. Нажмите «Опубликовать»: сборщик подключит вас автоматически, обычно в течение 10 минут.

Дальше файл читается раз в сутки: меняете в нём цену — каталог меняет её на следующий день. Ваши модели появляются на сайте, в API (/v1) и в MCP-сервере для ИИ-ассистентов, со ссылками на ваши страницы.

Добавить нового провайдера Пошагово, с примерами

Откуда берутся ваши цены

Цены берутся только из одного места — с вашего собственного сайта, чтобы не было двух версий правды:

  • ваша публичная страница цен (или API цен) — наш робот читает её каждый день;
  • или два файла на вашем домене — тогда мы читаем только их: seller.yaml, models.yaml (models.min.yaml)

В кабинете подтверждённый провайдер меняет только оформление своих карточек, смотрит аналитику и просит перепроверить свою страницу; цены вручную или через API не вводятся.

Вы уже есть в каталоге?

Многие провайдеры уже есть в каталоге: мы читаем их публичные страницы цен. Откройте свою карточку в «Провайдерах» и нажмите «Это моя компания» — подтвердите домен, и карточкой управляете вы: оформление, аналитика, перепроверка цен. Хотите вместо страницы цен отдавать файл? Опубликуйте models.yaml так же, как в пути выше.

Для ИИ-агентов: весь путь через API и MCP

Каждый шаг мастера в кабинете есть и как вызов: агент, работающий на провайдера, может начать размещение, подтвердить домен, проверить файлы, опубликовать, а потом смотреть свои предложения и просить перепроверку — с теми же проверками и теми же текстами. Цены через API не передаются: провайдер публикует models.yaml на своём сайте, API только ведёт по шагам. В каждом ответе — next_action (что делать дальше), а при ошибке — problems[] с файлом, строкой, моделью, полем, значением, кодом, сообщением и подсказкой.

Как агент подписывает вызовы

Публичным вызовам (check-domain, validate) ничего не нужно. Остальные действуют от аккаунта человека — одним из двух способов: личный ключ, который человек создаёт в кабинете (API-ключи) и отдаёт агенту — X-API-Key: <ключ> или Authorization: Bearer <ключ>; или OAuth с областью `provider` (страница согласия говорит человеку, что агент сможет делать; токен только с `api` получает 403). Агент действует только за организации, в которых состоит человек.

Вызовы по порядку

RESTMCP (/mcp/account)
GET /v1/provider/check-domain?domain=public: the key, whether the catalog lists a seller on the domain (then claim_url), what to publishprovider_start tells the same
POST /v1/provider/validatepublic: body = models.yaml text, or JSON {"models": ..., "seller": ..., "domain": ...} -> ok, problems[], previewvalidate_provider_files
GET /v1/methe account: organizations, verified sellers, applications and their next_actionprovider_whoami
POST /v1/provider/applications{name, domain, org_id?, verification: file|dns|meta} -> 201 the application (200 when the domain was started before); 409 with the claim link for a listed domainprovider_start
GET /v1/provider/applications/{id}steps (company, domain, files, publish) with status and problems, verification (token and where it goes), files.models_url, urls, next_actionprovider_status
POST /v1/provider/applications/{id}/verify-domain[{verification}] -> result verified | not_found, looked_at, expectedprovider_verify_domain
POST /v1/provider/applications/{id}/check-files[{models_url}] -> ok, fetched, problems[], preview[]provider_check_files
POST /v1/provider/applications/{id}/publishreads the file again, queues the provider -> 202 {status: queued, eta_s, poll}; 409 with why when not verified or the file has problemsprovider_publish
GET /v1/provider/sellers/{key}a verified seller as the cabinet shows it: the file and its last read, policy, services, last recheckprovider_seller
GET /v1/provider/sellers/{key}/offersits offers: prices, context, max output, status (active | pending | rejected | problem), card urlprovider_offers
POST /v1/provider/sellers/{key}/recheckread the source now, once a day (429 + Retry-After before that)provider_recheck
GET /v1/provider/sellers/{key}/analytics?days=&format=json|csvthe premium analytics-

То же через MCP

Сервер аккаунта https://airatecard.com/mcp/account (OAuth или личный ключ как Bearer) даёт те же шаги инструментами; открытый сервер https://airatecard.com/mcp — validate_provider_files. Сначала provider_whoami, дальше по next_action.

Полный пример на вымышленном домене

# 0. before anything: does the catalog know the domain, and is the file right?
curl -s 'https://airatecard.com/v1/provider/check-domain?domain=newco.example'
curl -s -X POST https://airatecard.com/v1/provider/validate?domain=newco.example --data-binary @models.yaml

# 1. start (the person's key K; the same domain again returns the same application)
curl -s -X POST https://airatecard.com/v1/provider/applications -H 'X-API-Key: am_...' -H 'Content-Type: application/json' \
  -d '{"name": "NewCo", "domain": "newco.example", "verification": "file"}'
# -> data.id = 42, data.verification = {file_url: https://newco.example/.well-known/airatecard-verify.txt,
#    file_body: airatecard-verify=...}, data.files.models_url = https://newco.example/.well-known/airatecard-models.yaml,
#    data.next_action = {action: verify_domain, how: 'put a text file at ... with the line ...'}

# 2. the provider publishes the file with that line; then:
curl -s -X POST https://airatecard.com/v1/provider/applications/42/verify-domain -H 'X-API-Key: am_...'
# -> data.result = verified (or not_found with looked_at and expected)

# 3. the provider publishes models.yaml at files.models_url; then:
curl -s -X POST https://airatecard.com/v1/provider/applications/42/check-files -H 'X-API-Key: am_...'
# -> data.ok = false, data.problems = [{file: models.yaml, line: 11, model: t1, path: prices[0].amount,
#    value: abc, code: number, message: "amount 'abc' - a number, without a currency sign", hint: 0.59}]
# fix the file, call again -> data.ok = true, data.preview = the models as the catalog will show them

# 4. publish, then poll
curl -s -X POST https://airatecard.com/v1/provider/applications/42/publish -H 'X-API-Key: am_...'
# -> 202 {status: queued, eta_s: 300, poll: .../applications/42}
curl -s https://airatecard.com/v1/provider/applications/42 -H 'X-API-Key: am_...'
# -> data.status = published, data.urls.card = https://airatecard.com/en/providers/newco

# 5. from then on: the daily run reads the file. The agent reads what the site has, or asks for a read now
curl -s https://airatecard.com/v1/provider/sellers/newco/offers -H 'X-API-Key: am_...'
curl -s -X POST https://airatecard.com/v1/provider/sellers/newco/recheck -H 'X-API-Key: am_...'

Провайдер, который уже в каталоге

check-domain отвечает in_catalog: true и claim_url — человек от компании подтверждает домен там («Это моя компания»); после этого агент читает продавца, его предложения и просит перепроверку через /v1/provider/sellers/{key}... (MCP: provider_seller, provider_offers, provider_recheck).

OpenAPI: /openapi.json (tag provider) · /auth.md · /llms.txt

Спонсорство

Размещение и все цены бесплатны и одинаковы для всех. Спонсорство — это пожертвование: оно добавляет значок и никогда не меняет порядок.

Спонсорство

Любой посетитель может поддержать сайт: в кабинете кнопка «Поддержать проект». Каждые $5 - месяц золотой плашки SPONSOR у логина в шапке, у ника в обсуждениях и место на странице спонсоров (если согласны). $15 - три месяца, $60 - год; новый взнос продлевает срок.

Провайдер: золотая надпись SPONSOR рядом с названием и золотая полоса слева на строках всех его моделей во вкладках «Модели» и «Провайдеры», место на странице спонсоров. $29 в месяц - цена запуска; первые спонсоры сохранят её и после повышения.

Правила

  • Спонсорство никогда не меняет порядок карточек, сортировку, цены и выводы сравнения - только значок.
  • Данные сайта открыты всем и бесплатны; спонсоры помогают им такими оставаться.

Как подключить

  1. Зарегистрируйтесь (логин и пароль, почта не нужна).
  2. Человек: кабинет, «Поддержать проект», срок. Провайдер: создайте организацию, подтвердите домен, раздел «Услуги» → «Спонсорство».

Онлайн-оплата пока не подключена: мы напишем вам, как перевести взнос, и включим плашку вручную. Вопросы - hello@airatecard.com.

Наш робот

Обновлено: 2026-10-10

AIRateCardBot — робот AI Rate Card (https://airatecard.com). Он поддерживает каталог цен на ИИ-модели в актуальном состоянии.

Что он делает

  • Читает публичные страницы и публичные адреса со списками моделей и цен, примерно раз в сутки на провайдера.
  • Представляется как AIRateCardBot/1.0 (+https://airatecard.com/bot).
  • Соблюдает robots.txt: правила для AIRateCardBot или для всех роботов (*) проверяются перед каждым запросом.
  • Делает мало запросов.
  • Читает только то, что открыто без входа; закрытое не читает.

Что мы показываем

В карточке провайдера — цены и ссылка на сайт провайдера или страницу модели. Адреса страниц, которые читает робот, мы не публикуем.

Провайдерам: как управлять

  • Запретить: добавьте в robots.txt User-agent: AIRateCardBot Disallow: / Робот остановится при следующем визите. Карточка останется со ссылкой на ваш сайт, без собранных цен.
  • Присылать цены самим: опубликуйте цены в нашем формате, и мы будем читать только этот файл. См. как добавить или обновить провайдера.
  • Вопросы и исправления: providers@airatecard.com или hello@airatecard.com.

Как формируется порядок

Последнее обновление: 2026-10-10

Здесь объясняется, как AI Rate Card упорядочивает модели, предложения и провайдеров и как показываются платные размещения. Страница следует требованиям прозрачности Регламента ЕС о платформах для бизнеса (2019/1150) и Закона ЕС о цифровых услугах (DSA).

1. Откуда берутся цены

Мы берём цены только с собственных сайтов провайдеров: с их открытых страниц цен и открытых API или из файлов seller.yaml/models.yaml, которые провайдер публикует на своём домене. У каждой цены указаны источник и дата проверки. Цены проверяются каждый день. Если два источника одного провайдера расходятся, предложение помечается как расхождение, пока разница не будет разобрана.

2. Порядок по умолчанию

Списки упорядочены по цене от меньшей к большей — по цене входа (для языковых моделей — цена за 1 миллион входных токенов). Предложения с одинаковой ценой стоят в постоянном порядке по провайдеру и идентификатору модели, поэтому порядок не меняется от визита к визиту. Список провайдеров упорядочен по числу моделей у провайдера.

В конец списка независимо от цены уходят:

  • предложения, цену которых мы не нашли («нет данных»);
  • цены, похожие на ошибку, — например, далёкие от всех остальных провайдеров той же модели; до проверки они помечены ⚠.

Цена 0 показывается, только если провайдер действительно предлагает модель бесплатно; ноль, не помеченный провайдером как бесплатный, считается «нет данных».

Порядок можно изменить в любой момент, нажав на заголовок столбца: цена, контекстное окно, провайдер, дата проверки и другие. Повторное нажатие меняет направление. Фильтры применяются ко всему списку, а не только к открытой странице.

3. «Лучшая цена»

Лучшая цена модели — самая низкая цена среди её действующих предложений, не помеченных как сомнительные и не являющихся пробными тарифами. Она считается одинаково для всех провайдеров.

4. Что может и чего не может изменить оплата

Оплата никогда не меняет порядок списков, лучшую цену, фильтры и результаты поиска.

Что могут получить провайдеры:

  • Проверенный (бесплатно): провайдер подтвердил, что управляет своей страницей, например через свой домен. Страница получает значок «Проверено», а провайдер может менять оформление своих карточек и просить перепроверить свою страницу цен. Значок говорит о том, кто управляет страницей, а не о том, что цена лучше.
  • Реклама (платно, когда будет предложено): предложение провайдера может показываться с его картинкой, цветами и более длинным описанием, а также в отмеченных рекламных местах. Такие материалы всегда помечены «Реклама» и называют рекламодателя. Они никогда не ставятся на место в списке, которого они не заслужили ценой.

Платные размещения пока не предлагаются.

5. Ссылки на провайдеров

Ссылки на провайдеров проходят через наш адрес /go/…, чтобы мы могли посчитать интерес к каждому предложению. Мы не получаем комиссию за эти переходы. Если это изменится, мы скажем об этом на этой странице и рядом со ссылками.

6. Вопросы и жалобы

Если вы считаете, что предложение стоит не на своём месте или цена неверна, воспользуйтесь страницей «Сообщить о проблеме» или напишите на hello@airatecard.com. Провайдеры также могут исправить свои данные в кабинете провайдера.

Частые вопросы

Насколько свежие цены?

Проверяются каждый день, прямо со страницы цен или API провайдера.

Что значит цена с предупреждением?

Она выглядит ошибочной по сравнению с тем, как эта страница обычно читается, но всё равно показана, помеченная как сомнительная — проверьте её на странице провайдера, прежде чем доверять ей.

Что значит «через X»?

Предложение подаётся через инфраструктуру другой компании (роутер), а не продаётся прямо создателем модели; X — через кого оно продаётся.

Что такое регионы?

Где провайдер обслуживает это предложение (резидентность данных) — EU, US, Global... Другой регион — это другое предложение со своей ценой.

Почему нет какого-то провайдера?

Мы его ещё не собрали — расскажите о нём на /join, и мы добавим.