AI Rate Card

Documentación

Todo en un lugar: qué es AI Rate Card, los datos abiertos, la API y el servidor MCP, cómo citarlo y cómo se une un proveedor.

Contenido

Qué es AI Rate Card

AI Rate Card recoge los precios de modelos de IA – de lenguaje, imagen, voz y otros – tal como los publican sus proveedores. Los precios se toman de las páginas públicas de precios y las API de los proveedores – o, cuando sus condiciones no permiten la recogida automática, del conjunto de datos abierto models.dev – y se comprueban a diario.

Cuando dos fuentes discrepan sobre un precio, el sitio no elige una en silencio: la oferta se marca como conflicto hasta resolver la diferencia.

Los precios son solo informativos. Manda la página del proveedor: comprueba el precio allí antes de comprar.

Preguntas, correcciones y solicitudes: hello@airatecard.com.

Cómo se recogen los precios →

API y MCP: cómo empezar

Dos formas de obtener los precios con una máquina en lugar de a ojo. Puede probar las dos ahora mismo, sin registrarse ni pagar.

Preguntar a su asistente de IA (MCP)

Para quien usa Claude, ChatGPT o Cursor. Conecta el sitio una vez y el asistente consulta él mismo los precios actuales cuando pregunta con sus palabras. Sin programar.

  1. Copie la dirección del servidor: https://airatecard.com/mcp
  2. Añádala a su asistente como conector: dónde hacer clic en cada aplicación se indica más abajo, en la sección Servidor MCP.
  3. Pregunte con sus palabras, por ejemplo:
    • ¿Cuál es el modelo más barato con un contexto de al menos 128K tokens?
    • Compara los precios de Llama 3.1 8B en distintos proveedores.
    • ¿Cuánto costarán al mes 10 M de tokens de entrada y 2 M de salida con GPT OSS 120B?

Obtener los datos en un programa (API)

Para desarrolladores: peticiones HTTP normales, respuesta en JSON. Puedes empezar ya sin clave; una clave personal gratuita amplía la ventana por minuto (tabla de abajo).

  1. Pruebe una solicitud sin clave, cópiela en un terminal: las 5 ofertas más baratas de modelos de texto.
    curl -s 'https://airatecard.com/v1/offers?category=llm&pricing=usage&limit=5'
  2. ¿Necesita más filas? Inicie sesión, cree una clave en su cuenta, apartado Claves API, y envíela en la cabecera X-API-Key.
  3. Todas las solicitudes con sus parámetros: /openapi.json (lo leen Postman y los generadores de clientes).

Las solicitudes principales

GET /v1/offers?category=llm&pricing=usage&limit=5ofertas con precios; los mismos filtros que la página Modelos
GET /v1/models?category=llmmodelos y su mejor precio
GET /v1/models/{model_id}un modelo con todas sus ofertas
GET /v1/cost?model={model_id}&input_tokens=10000000&output_tokens=2000000lo que cuesta su volumen en cada proveedor de un modelo
GET /v1/compare?models={a},{b}de dos a cuatro modelos lado a lado
GET /v1/analytics/cheapest?task=text&n=5los más baratos para una tarea (texto, imagen, voz...)
GET /v1/models/{model_id}/historyel historial de precios de un modelo (90 días)
GET /v1/articleslos artículos del sitio
GET /v1/metasobre el catálogo: cuándo se actualizó, cuántas ofertas

Cómo se recogen los precios

Cada precio de AI Rate Card viene de la página pública de precios o la API del proveedor, cuando sus condiciones permiten la recogida automática, y si no de models.dev – un conjunto de datos abierto de precios de modelos publicado bajo licencia MIT (Copyright (c) 2025 models.dev; texto de la licencia en /static/licenses/models.dev.txt). Nunca una estimación; comprobado a diario.

«Sin datos» significa que aún no se ha encontrado una oferta con precio para ese modelo en ese proveedor. «Gratis» significa que la página del proveedor indica que la oferta no cuesta nada. «Retirada» significa que la oferta estaba en la página del proveedor pero ya no aparece; sigue en el sitio con su último precio conocido, marcada como retirada, para no perder su historial.

Se guarda cada cambio de precio: el historial completo de una oferta, y del mercado entero día a día, está en su página y en /market.

Datos

AI Rate Card sirve para mirar y elegir, no para copiar en masa: no hay un archivo con todo el catálogo ni su historial de precios. Abre la ficha de un modelo u oferta para citarla, o pide a /v1 o al servidor MCP los precios actuales, página a página.

Cómo citar

API REST

La API JSON pública para agentes y scripts: no hace falta clave para leer; una clave personal solo sube el límite.

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

Paginación

/v1/offers y /v1/models devuelven como máximo 50 filas por página (25 por defecto); pagina con offset y limit o acota con filtros; el catálogo completo está en un solo archivo en /export.

Analítica

Precios actuales por tarea, no por tipo de modelo – lo que un comprador quiere hacer: el más barato, el más caro y la mediana para embedding, image, moderation, rerank, stt, text, tts, video, vision. scope limita a la categoría propia de una tarea (specialized) o a los modelos multimodales que sirven (universal); component elige input_tokens, output_tokens o la unidad propia de la tarea.

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'

Niveles de acceso

Las páginas están abiertas a todos, a cualquier buscador y asistente de IA. Las máquinas pueden empezar sin clave; una clave personal gratuita (registro con usuario y contraseña, sin correo, luego cuenta → claves API; se envía en el encabezado X-API-Key) amplía la ventana por minuto.

Sin iniciar sesiónFree
Páginas, artículos, filtros, comparación, calculadorastodotodo
Descargar una tabla: filas por archivo, archivos por hora100000 filas, 20 por hora100000 filas, 60 por hora
API para desarrolladores: solicitudes por minuto (sin límite diario)60/min120/min
Historial de precios por la APIhasta 90 días, un modelo por solicitudhasta 90 días, un modelo por solicitud

Límites y licencia

No hay límites diarios: solo ventanas por minuto contra el abuso (tabla de arriba), más amplias con una clave personal gratuita (cuenta → claves API, encabezado X-API-Key). Cada respuesta trae X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset y X-Daily-Rows-Remaining; al superarlo, respuesta 429 con Retry-After. Licencia: CC BY 4.0: el catálogo, las descargas, las respuestas de la API y el historial de precios de 90 días pueden usarse, citarse y redistribuirse libremente, también con fines comerciales, con atribución a AI Rate Card (airatecard.com) y un enlace a la ficha o página de la que proceden las cifras.

Cómo citar

Cada respuesta de la API y del MCP lleva una línea «cite» y cada descarga termina con una: nombra AI Rate Card, enlaza la ficha o la página del modelo que usaste y da la fecha en que se comprobó el precio: «Source: AI Rate Card, https://airatecard.com/c/offer:<id>, prices checked AAAA-MM-DD».

Exportar por filtro

GET /export devuelve las ofertas de un filtro como JSON, CSV, YAML o Excel: solo precios actuales, en USD. Datos abiertos (CC BY), sin iniciar sesión: todo el catálogo en un archivo, hasta 20 descargas por hora y dirección (más con una cuenta). Los parámetros son los de la página «Modelos»: cree un filtro allí, abra «Descargar» y copie la dirección. Cada archivo termina con la línea «Source: AI Rate Card, ...» para citar.

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'

Probar

format: json | csv | yaml; rangos como un solo valor «desde-hasta» (r_in, r_out, r_ctx, r_mo, r_params …; se admiten 128k y 1m); repite provider, region, input_modality … para varios valores; sort y desc como en la página.

Servidor MCP

Un servidor MCP remoto (Streamable HTTP), solo lectura. Responde preguntas de precios con las herramientas cheapest_for_workload (lo más barato para una tarea completa, con escenarios listos: chatbot, coding_agent, rag, summarization, long_context, vision, embedding_index, trial), search_offers, get_model_prices, cheapest, compare_models, estimate_cost y get_card: cada resultado lleva la URL de la ficha para citar. Funciona sin clave; con una clave personal (cabecera X-API-Key) devuelve más filas, como la API. Prompts listos para el usuario: cheapest_for_my_job, where_is_model_cheapest, compare_models.

https://airatecard.com/mcp

Claude.ai / Claude Desktop

Settings → Connectors → Add custom connector y pega esta URL:

https://airatecard.com/mcp

Claude Code

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

ChatGPT

Settings → Connectors (modo desarrollador), añade un conector personalizado con esta URL:

https://airatecard.com/mcp

Cursor / VS Code

Añade esto a tu mcp.json:

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

Cualquier cliente MCP

Un mensaje JSON-RPC 2.0 por HTTP, sin sesión:

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

Conectar tu propio agente

Cualquier agente que hable MCP, con cualquier framework o API, se conecta al mismo servidor. Elige según los límites que necesites:

  • Sin clave: https://airatecard.com/mcp, límites de invitado, nada que configurar.
  • Tu agente con tus límites: https://airatecard.com/mcp y una clave personal de tu cuenta (Claves API), enviada como Authorization: Bearer o X-API-Key: .
  • Un agente para muchas personas, cada una con su cuenta: https://airatecard.com/mcp/account con OAuth, ver la sección anterior.

Los ejemplos leen la clave de la variable de entorno AIRATECARD_KEY: nunca pongas una clave en el código ni en una URL. Sin clave, quita la línea 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_offers", {"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_offers", 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}}}'

Conviene saber

Una clave por agente: así puedes revocar una sin detener las demás. Por encima de un límite el servidor responde 429 con Retry-After: espera esos segundos, no cambies de clave. Cada resultado de herramienta lleva una línea cite y un card_url: que el agente los cite. Las herramientas: search_offers, get_model_prices, cheapest, compare_models, estimate_cost, get_card, cheapest_models, dearest_models, median_models, list_articles.

Tu cuenta en asistentes y agentes de IA (OAuth)

El servidor MCP tiene dos direcciones. https://airatecard.com/mcp funciona para todos sin iniciar sesión, con los límites de invitado. https://airatecard.com/mcp/account funciona con tu cuenta de AI Rate Card: tus límites (Free o Pro), y ves y revocas el acceso en tu cuenta. Inicias sesión una vez, en este sitio: el asistente nunca ve tu contraseña.

Claude.ai / Claude Desktop

Settings → Connectors → Add custom connector, pega la dirección de abajo. Deja el cliente OAuth en “Register automatically”. Claude abre la página de acceso de este sitio: inicia sesión y pulsa Permitir.

https://airatecard.com/mcp/account

ChatGPT

Settings → Connectors (modo desarrollador) → crea un conector con la dirección de abajo y autenticación OAuth. ChatGPT abre la página de acceso de este sitio: inicia sesión y pulsa Permitir.

https://airatecard.com/mcp/account

Claude Code

Añade el servidor, luego escribe /mcp en Claude Code y elige Authenticate: el navegador abre la página de acceso de este sitio.

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

Cursor / VS Code

Cursor, VS Code y otros clientes MCP con OAuth: pon la dirección en mcp.json; en la primera llamada el cliente abre la página de acceso de este sitio.

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

Scripts y agentes de terminal: un código en lugar del navegador

Un programa sin navegador usa el device flow (RFC 8628): pide un código, abres la dirección que muestra en cualquier dispositivo, inicias sesión, compruebas el código y pulsas Permitir, y el programa obtiene su token. Las cuatro peticiones:

# 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>'

Tokens, límites y revocación

Envía el token en la cabecera Authorization: Bearer <token> a /v1 y /mcp/account. Dura una hora; renuévalo con grant_type=refresh_token (el token de actualización dura 30 días, hasta que lo revoques). Cuenta con los límites de tu cuenta, como una clave personal. Cada aplicación autorizada aparece en tu cuenta en Aplicaciones conectadas, donde un clic la revoca junto con sus tokens.

Para agentes: /auth.md. Metadatos estándar: /.well-known/oauth-authorization-server y /.well-known/oauth-protected-resource/mcp/account. ¿Prefieres una clave fija? Créala en tu cuenta en Claves API y envíala como X-API-Key.

llms.txt

Una guía en texto plano para agentes de IA, según la convención de llmstxt.org: qué es el sitio, la API y el servidor MCP, y cómo citarlo – en /llms.txt (también /.well-known/llms.txt). La oferta actual más barata de los modelos más ofrecidos, una línea cada uno, está en /llms-full.txt.

Cómo citar

CC BY 4.0: el catálogo, las descargas, las respuestas de la API y el historial de precios de 90 días pueden usarse, citarse y redistribuirse libremente, también con fines comerciales, con atribución a AI Rate Card (airatecard.com) y un enlace a la ficha o página de la que proceden las cifras.

Para los agentes de IA están /llms.txt y la API pública en /v1: mirar, comparar y citar, nunca una copia masiva del catálogo ni de su historial de precios.

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

Para proveedores

Inclusión gratuita, hecha por usted en su cuenta. El orden de todas las listas es solo por precio: el dinero no sube a nadie.

Cómo unirse: seis pasos, unos 15 minutos

La inclusión es gratuita y la hace usted mismo, en su cuenta, en unos 15 minutos, sin cartas ni esperas:

  1. Cree una cuenta: usuario y contraseña, sin correo.
  2. Pulse «Añadir un proveedor nuevo» y escriba el nombre y el sitio de la empresa.
  3. Demuestre el dominio: un archivo de una línea en /.well-known/, un registro DNS TXT o una etiqueta meta, y pulse «Comprobar ahora».
  4. Escriba modelos y precios en el formulario; genera su models.yaml.
  5. Coloque ese archivo en /.well-known/airatecard-models.yaml y pulse «Comprobar el archivo».
  6. Pulse «Publicar»: el recolector le activa automáticamente, normalmente en menos de 10 minutos.

Después el archivo se lee una vez al día: cambie un precio y el catálogo lo sigue al día siguiente. Sus modelos aparecen en el sitio, en la API (/v1) y en el servidor MCP para asistentes de IA, con enlaces a sus páginas.

Añadir un proveedor nuevo Paso a paso, con ejemplos

De dónde salen sus precios

Sus precios salen de un solo lugar, su propio sitio web, para que nunca haya dos versiones de la verdad:

  • su página pública de precios (o API de precios): nuestro robot la lee cada día;
  • o dos archivos en su propio dominio: entonces leemos solo esos: seller.yaml, models.yaml (models.min.yaml)

En la cuenta, un proveedor confirmado solo cambia el aspecto de sus fichas, ve su analítica y pide una nueva comprobación de su página; los precios nunca se escriben a mano ni se envían por API.

¿Ya está en el catálogo?

Muchos proveedores ya están: leemos sus páginas públicas de precios. Abra su ficha en «Proveedores» y pulse «Esta es mi empresa»: demuestre el dominio y gestiona la ficha: aspecto, analítica, nueva comprobación de precios. ¿Prefiere un archivo a su página de precios? Publique models.yaml como arriba.

Para agentes de IA: todo el camino por la API y MCP

Cada paso del asistente existe también como llamada: un agente del proveedor puede iniciar el listado, verificar el dominio, comprobar los archivos, publicar y luego leer sus ofertas y pedir una recomprobación, con las mismas comprobaciones y textos. Los precios nunca pasan por la API: el proveedor publica models.yaml en su sitio. Cada respuesta lleva next_action y, si hay problema, problems[] (archivo, línea, modelo, campo, valor, código, mensaje, pista).

Cómo firma el agente sus llamadas

Las llamadas públicas (check-domain, validate) no necesitan nada. Las demás actúan por la cuenta de la persona: una clave personal creada en la cuenta (claves API), enviada como X-API-Key o Bearer, u OAuth con el alcance `provider` (la página de consentimiento dice qué podrá hacer el agente; un token solo con `api` recibe 403).

Las llamadas, en orden

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-

Lo mismo por MCP

El servidor de cuenta https://airatecard.com/mcp/account (OAuth o clave personal como Bearer) ofrece los mismos pasos como herramientas; el servidor abierto https://airatecard.com/mcp tiene validate_provider_files. Llama primero a provider_whoami y sigue next_action.

Un ejemplo completo con un dominio inventado

# 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_...'

Un proveedor ya listado

check-domain responde in_catalog: true con claim_url: una persona de la empresa prueba allí el dominio; después el agente lee el vendedor, sus ofertas y pide recomprobaciones con /v1/provider/sellers/{key}...

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

Patrocinio

La presencia en el catálogo y cada precio son gratis e iguales para todos. El patrocinio es una donación: añade una insignia y nunca cambia el orden.

Patrocinio

Cualquier visitante puede apoyar el sitio: el botón «Apoyar el sitio» en la cuenta. Cada 5 $ es un mes de la insignia dorada SPONSOR junto a tu usuario en la cabecera y a tu apodo en los debates, y un lugar en la página de patrocinadores (si lo aceptas). 15 $ son tres meses, 60 $ un año; una nueva aportación amplía el periodo.

Un proveedor: un SPONSOR dorado junto a su nombre y un borde izquierdo dorado en las filas de todos sus modelos en las pestañas «Modelos» y «Proveedores», un lugar en la página de patrocinadores. 29 $ al mes es el precio de lanzamiento; los primeros patrocinadores lo conservan cuando suba.

Reglas

  • El patrocinio nunca cambia el orden de las tarjetas, la ordenación, los precios ni los resultados de las comparaciones: solo la insignia.
  • Los datos del sitio son abiertos y gratuitos para todos; los patrocinadores ayudan a que sigan así.

Cómo unirse

  1. Regístrate (usuario y contraseña, sin e-mail).
  2. Una persona: cuenta, «Apoyar el sitio», un periodo. Un proveedor: crea una organización, verifica el dominio, «Servicios» -> «Patrocinio».

El pago en línea aún no está conectado: te escribimos cómo enviar la aportación y activamos la insignia a mano. Preguntas: hello@airatecard.com.

Nuestro rastreador

Última actualización: 2026-10-10

AIRateCardBot es el rastreador de AI Rate Card (https://airatecard.com). Mantiene actualizado el catálogo de precios de modelos de IA.

Qué hace

  • Lee páginas públicas y puntos de acceso públicos que listan modelos y precios, aproximadamente una vez al día por proveedor.
  • Se identifica con el User-Agent AIRateCardBot/1.0 (+https://airatecard.com/bot).
  • Respeta robots.txt: las reglas para AIRateCardBot o para todos los rastreadores (*) se comprueban antes de cada solicitud.
  • Mantiene bajo su ritmo de solicitudes.
  • Solo lee lo que es público sin iniciar sesión; no lee contenido privado.

Qué mostramos

En la ficha de un proveedor mostramos los precios y un enlace al sitio o a la página del modelo del propio proveedor. No publicamos las direcciones de las páginas o puntos de acceso que lee el bot.

Proveedores: cómo controlarlo

Cómo funciona el orden

Última actualización: 2026-10-10

Esta es una traducción. En caso de discrepancia, prevalece la versión en inglés.

Esta página explica cómo AI Rate Card ordena los modelos, las ofertas y los proveedores, y cómo se muestran las ubicaciones de pago. Sigue las normas de transparencia del Reglamento europeo sobre plataformas y empresas (2019/1150) y del Reglamento de Servicios Digitales.

1. De dónde vienen los precios

Tomamos los precios solo de los propios sitios de los proveedores: sus páginas públicas de precios y API públicas, o los archivos seller.yaml/models.yaml que un proveedor publica en su propio dominio. Cada precio muestra su fuente y la fecha de comprobación. Los precios se comprueban cada día. Cuando dos fuentes del mismo proveedor no coinciden, la oferta se marca como conflicto hasta que se resuelve la diferencia.

2. El orden por defecto

Las listas se ordenan por precio, del más bajo al más alto, según el precio de entrada (para modelos de lenguaje, el precio por 1 millón de tokens de entrada). Las ofertas con el mismo precio mantienen un orden fijo por proveedor e identificador de modelo, de modo que el orden no cambia entre visitas. La lista de proveedores se ordena por el número de modelos que ofrece cada proveedor.

Algunas ofertas se mueven al final de la lista, sea cual sea su precio:

  • las ofertas cuyo precio no pudimos encontrar («sin datos»);
  • los precios que parecen erróneos — por ejemplo, muy alejados de todos los demás proveedores del mismo modelo —, marcados con ⚠ hasta comprobarse;

Una oferta solo se muestra con precio 0 cuando el proveedor realmente la ofrece gratis; un cero que el proveedor no marcó como gratuito se trata como «sin datos».

Puedes cambiar el orden en cualquier momento haciendo clic en el encabezado de una columna: precio, ventana de contexto, proveedor, fecha de comprobación y otros. Un segundo clic invierte el orden. Los filtros se aplican a toda la lista, no solo a la página que ves.

3. «Mejor precio»

El mejor precio de un modelo es el precio más bajo entre sus ofertas que están vigentes, no marcadas como dudosas y que no son planes de prueba gratuitos. Se calcula igual para todos los proveedores.

4. Lo que el pago puede y no puede cambiar

El pago nunca cambia el orden de ninguna lista, el mejor precio, los filtros ni los resultados de búsqueda.

Lo que pueden obtener los proveedores:

  • Verificado (gratis): el proveedor ha confirmado que controla su ficha, por ejemplo mediante su dominio. La ficha recibe una insignia «Verificado» y el proveedor puede gestionar el aspecto de sus fichas y pedir una nueva comprobación de su página de precios. La insignia indica quién gestiona la ficha, no que el precio sea mejor.
  • Publicidad (de pago, cuando se ofrezca): la oferta del proveedor puede mostrarse con su propia imagen, colores y una descripción más larga, y aparecer en espacios publicitarios marcados. Ese contenido siempre lleva la etiqueta «Anuncio» y nombra al anunciante. Nunca se coloca en una posición de la lista que no haya ganado por precio.

Las ubicaciones de pago aún no se ofrecen.

5. Enlaces a proveedores

Los enlaces a proveedores pasan por nuestra dirección /go/… para que podamos contar el interés en cada oferta. No recibimos ninguna comisión por estos clics. Si eso cambia algún día, lo diremos en esta página y junto a los enlaces.

6. Preguntas y reclamaciones

Si crees que una oferta aparece en el lugar equivocado o que un precio es erróneo, usa la página «Informar de un problema» o escribe a hello@airatecard.com. Los proveedores también pueden corregir sus propios datos desde la cuenta de proveedor.

Preguntas frecuentes

¿Qué tan actuales son los precios?

Comprobados a diario, directamente de la página de precios o la API del proveedor.

¿Qué significa un precio con aviso?

Parece erróneo frente a cómo se lee normalmente esa página, pero se muestra igualmente marcado como dudoso: comprueba la página del proveedor antes de fiarte.

¿Qué significa «vía X»?

La oferta se sirve a través de la infraestructura de otra empresa (un enrutador), no la vende directamente el creador del modelo; X es a través de quién se vende.

¿Qué son las regiones?

Dónde sirve el proveedor esa oferta (residencia de datos): UE, EE. UU., Global… Otra región es otra oferta con su propio precio.

¿Por qué falta un proveedor?

Aún no lo hemos recogido: cuéntanoslo en /join y lo añadiremos.