Modelos de chat
Llama a Claude, Gemini, DeepSeek, GLM, Grok y Kimi a través de la API de PopNow con el SDK de OpenAI, Anthropic o Gemini que ya usas. Una clave de API, precio por token en USD.
La API de PopNow también ejecuta modelos de chat: Claude, Gemini, DeepSeek, GLM, Grok y Kimi. Los llamas a través de los protocolos que tu código ya usa —OpenAI Chat Completions y Responses, Anthropic Messages y Gemini generateContent—, así que los SDK oficiales funcionan en cuanto cambias la URL base. Usan la misma clave sk-popnow- y el mismo saldo independiente de la API en USD que las imágenes, el video y el audio de la API. Empieza en $0; añade fondos en API billing. Los créditos de la web no pueden financiar estas llamadas.
Las llamadas de chat son síncronas: recibes la respuesta (o un stream) en la misma respuesta. No hay ninguna tarea que consultar.
De un vistazo
| URL base de OpenAI | https://api.popnow.ai/v1 (Chat Completions, Responses, lista de modelos) |
| URL base de Anthropic | https://api.popnow.ai (el SDK añade /v1/messages) |
| Gemini | POST https://api.popnow.ai/v1beta/models/{model}:generateContent |
| Clave | Authorization: Bearer sk-popnow-…; las cabeceras x-api-key del SDK de Anthropic y x-goog-api-key de Google también funcionan |
| IDs de modelo | publisher/model/chat, por ejemplo anthropic/claude-haiku-5.5/chat. La lista completa está más abajo |
| Precio | Por token, en USD, sin mínimo por solicitud. Las solicitudes fallidas y las rechazadas se reembolsan |
| Streaming | stream: true en todos los protocolos (:streamGenerateContent?alt=sse para Gemini) |
Tu primera solicitud de chat
curl https://api.popnow.ai/v1/chat/completions \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-5.5/chat",
"messages": [
{ "role": "system", "content": "You are a concise, friendly assistant." },
{ "role": "user", "content": "Suggest three names for a kite shop by the sea." }
],
"max_tokens": 512
}'La respuesta es un objeto chat.completion estándar con choices[0].message.content y usage. La cabecera de respuesta X-PopNow-Task-Id indica la tarea que registró el cargo.
SDK de OpenAI
Apunta el cliente a https://api.popnow.ai/v1 y pasa tu clave de PopNow. Nada más cambia.
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.popnow.ai/v1", api_key=os.environ["POPNOW_API_KEY"])
reply = client.chat.completions.create(
model="anthropic/claude-haiku-5.5/chat",
messages=[{"role": "user", "content": "Write a haiku about kites."}],
max_tokens=200,
)
print(reply.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.popnow.ai/v1', apiKey: process.env.POPNOW_API_KEY });
const reply = await client.chat.completions.create({
model: 'google/gemini-3.7-flash/chat',
messages: [{ role: 'user', content: 'Write a haiku about kites.' }],
max_tokens: 200,
});
console.log(reply.choices[0].message.content);La API de Responses (client.responses.create) también funciona, en su forma sin estado: envía toda la conversación en input cada vez. previous_response_id devuelve 400.
SDK de Anthropic
El SDK de Anthropic añade /v1/messages por su cuenta, así que la URL base no lleva /v1.
import os
import anthropic
client = anthropic.Anthropic(base_url="https://api.popnow.ai", api_key=os.environ["POPNOW_API_KEY"])
message = client.messages.create(
model="anthropic/claude-sonnet-5.5/chat",
max_tokens=512,
messages=[{"role": "user", "content": "Explain idempotency keys in two sentences."}],
)
print(message.content[0].text)Cualquier modelo de chat funciona en este endpoint, no solo Claude. Los errores llegan con la forma de Anthropic {"type": "error", "error": {...}}.
Gemini generateContent
Pon el ID completo del modelo en la ruta; puede contener barras.
curl "https://api.popnow.ai/v1beta/models/google/gemini-3.7-flash/chat:generateContent" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{ "role": "user", "parts": [{ "text": "Name three colours of a sunset." }] }],
"generationConfig": { "maxOutputTokens": 256 }
}'Usa :streamGenerateContent?alt=sse para un stream. Los errores usan la forma de Google {"error": {"code", "message", "status"}}.
Streaming
Define stream: true y lee los Server-Sent Events. En Chat Completions cada fragmento es un chat.completion.chunk y el stream termina con data: [DONE]. Como con OpenAI, un stream no trae usage salvo que lo pidas con stream_options: { "include_usage": true }; el uso llega entonces en un último fragmento con un array choices vacío.
stream = client.chat.completions.create(
model="anthropic/claude-haiku-5.5/chat",
messages=[{"role": "user", "content": "Count from one to five."}],
max_tokens=100,
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")Herramientas, salida JSON y parámetros
Cada modelo declara los campos de la solicitud que acepta: tools, tool_choice, response_format, temperature, reasoning_effort y demás. La columna Parameters de la tabla de modelos los enumera, y GET /v1/models los devuelve en supported_parameters.
- Un ajuste de muestreo que el modelo no admite (
temperature,top_p,frequency_penalty…) se descarta en lugar de fallar, y se indica en la cabecera de respuestaX-PopNow-Ignored-Params. - Un valor fuera del rango del modelo se lleva al valor aceptado más cercano y se indica en
X-PopNow-Adjusted-Paramscomoname=value. - Cualquier otro campo que el modelo no declara devuelve
400concode: unsupported_parameteryparamcon el nombre del campo, por ejemplo una parte de imagen enviada a un modelo solo de texto.
Modelos y precios
Usa precios en USD por 1 millón de tokens, de entrada y de salida por separado; la entrada en caché es más barata en los modelos que la cachean. Algunos modelos cobran una tarifa más alta cuando una solicitud supera un umbral de contexto largo, que se muestra debajo del nombre del modelo.
| Modelo | ID del modelo | Contexto | Entrada por millón de tokens (USD) | Salida por millón de tokens (USD) | Parámetros |
|---|---|---|---|---|---|
| Claude Fable 5Anthropic | anthropic/claude-fable-5/chat | 1MSalida máx. 128K | $9caché $0.9escritura de caché $11 | $45 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Haiku 5.5AnthropicEntrada > 100K tokens por solicitud: $0.5 / $2.5 · caché $0.1 | anthropic/claude-haiku-5.5/chat | 1MSalida máx. 128K | $0.1escritura de caché $0.1 | $0.5 | max_tokensparallel_tool_callstool_choicetools |
| Claude Opus 4.5Anthropic | anthropic/claude-opus-4.5/chat | 198KSalida máx. 33K | $4.5caché $0.45escritura de caché $5.5 | $22.5 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p |
| Claude Opus 4.6Anthropic | anthropic/claude-opus-4.6/chat | 1MSalida máx. 128K | $5caché $0.5escritura de caché $6.25 | $25 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p |
| Claude Opus 5Anthropic | anthropic/claude-opus-5/chat | 1MSalida máx. 128K | $4.5caché $0.45escritura de caché $5.5 | $22.5 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Opus 5.5Anthropic | anthropic/claude-opus-5.5/chat | 1MSalida máx. 128K | $3.6caché $0.18escritura de caché $4.5 | $18 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Sonnet 4.5Anthropic | anthropic/claude-sonnet-4.5/chat | 198KSalida máx. 64K | $2.7caché $0.27escritura de caché $3.3 | $13.5 | max_tokensparallel_tool_callsstoptemperaturetool_choicetoolstop_ktop_p |
| Claude Sonnet 4.6Anthropic | anthropic/claude-sonnet-4.6/chat | 1MSalida máx. 64K | $3caché $0.3escritura de caché $3.75 | $15 | max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_ktop_p |
| Claude Sonnet 5Anthropic | anthropic/claude-sonnet-5/chat | 1MSalida máx. 64K | $1.9caché $0.19escritura de caché $2.375 | $9.5 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| Claude Sonnet 5.5Anthropic | anthropic/claude-sonnet-5.5/chat | 1MSalida máx. 128K | $2caché $0.2escritura de caché $2.5 | $10 | max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools |
| DeepSeek V4.1 FlashDeepSeek | deepseek/v4.1-flash/chat | 1MSalida máx. 384K | $0.3caché $0.006 | $1.2 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
| DeepSeek V4 FlashDeepSeek | deepseek/v4-flash/chat | 1MSalida máx. 66K | $0.44caché $0.014 | $1.32 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
| DeepSeek V4 ProDeepSeek | deepseek/v4-pro/chat | 1MSalida máx. 384K | $1.32caché $0.044 | $3.96 | max_tokensparallel_tool_callsreasoning_effortresponse_formatstoptool_choicetools |
| Gemini 2.5 FlashGoogle | google/gemini-2.5-flash/chat | 1MSalida máx. 66K | $0.285caché $0.0285 | $2.375 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.1 Pro PreviewGoogleEntrada > 200K tokens por solicitud: $3.8 / $17.1 · caché $0.38 | google/gemini-3.1-pro-preview/chat | 1MSalida máx. 33K | $1.9caché $0.19 | $11.4 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.5 Flash-LiteGoogle | google/gemini-3.5-flash-lite/chat | 1MSalida máx. 66K | $0.3caché $0.03 | $2.5 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3.7 FlashGoogle | google/gemini-3.7-flash/chat | 1MSalida máx. 66K | $0.675caché $0.0675 | $3.375 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| Gemini 3 Flash PreviewGoogle | google/gemini-3-flash-preview/chat | 256KSalida máx. 66K | $0.45caché $0.045 | $2.7 | max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| GLM 5.2Z.ai | zai/glm-5.2/chat | 1MSalida máx. 131K | $0.98caché $0.182 | $3.08 | max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p |
| GLM 5.3Z.ai | zai/glm-5.3/chat | 1MSalida máx. 131K | $1.05caché $0.195 | $3.3 | max_tokensparallel_tool_callsreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p |
| GLM 5.3 FlashZ.ai | zai/glm-5.3-flash/chat | 1MSalida máx. 131K | $0.1275caché $0.0255 | $0.425 | max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p |
| Grok 4.3xAIEntrada ≥ 200K tokens por solicitud: $2.5 / $5 · caché $0.4 | xai/grok-4.3/chat | 1MSalida máx. 900K | $1.25caché $0.2 | $2.5 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.5xAIEntrada ≥ 200K tokens por solicitud: $4 / $12 · caché $0.6 | xai/grok-4.5/chat | 500KSalida máx. 450K | $2caché $0.3 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.6xAIEntrada ≥ 200K tokens por solicitud: $4 / $12 · caché $1 | xai/grok-4.6/chat | 500KSalida máx. 450K | $2caché $0.5 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Grok 4.7xAIEntrada ≥ 200K tokens por solicitud: $4 / $12 · caché $1 | xai/grok-4.7/chat | 500KSalida máx. 450K | $2caché $0.5 | $6 | max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p |
| Kimi K3Moonshot AI | moonshot/kimi-k3/chat | 1MSalida máx. 1M | $2.7caché $0.3 | $13.5 | max_tokensreasoning_effortresponse_formatstoptool_choicetools |
La misma lista está disponible en la API, con precios, longitud de contexto y parámetros admitidos:
curl "https://api.popnow.ai/v1/models?modality=text" \
-H "Authorization: Bearer $POPNOW_API_KEY"Cómo se cobra una solicitud de chat
- Retención. Cuando se acepta la solicitud, se aparta de tu saldo lo máximo que podría costar, calculado a partir de la entrada y de
max_tokens. Si omitesmax_tokens, se usa la salida máxima del modelo, así que define un valor para que las retenciones sean pequeñas. - Cargo. Cuando termina la respuesta pagas los tokens realmente usados, en USD y sin mínimo por solicitud. El resto de la retención se libera.
- Reembolso. Una solicitud que falla, o que el modelo rechaza, se reembolsa por completo.
Un saldo menor que la retención, o un tope de gasto de la clave que se superaría, devuelve 402 antes de enviar nada al modelo. Para ver el cargo exacto, lee la tarea indicada en X-PopNow-Task-Id con GET /api/v1/jobs/recordInfo: costUsd es la cadena decimal en USD que debes mostrar y usar para la contabilidad. También pueden aparecer campos antiguos de créditos; no redondees los cargos en USD a créditos enteros.
Respuestas largas y errores
- Llamadas largas sin streaming. Si una respuesta tarda más de unos 30 segundos, primero se envían el estado
200y una cabeceraX-PopNow-Keepalive: 1, después un salto de línea cada 15 segundos y por último el cuerpo JSON. Un fallo posterior a ese punto llega como el objeto de error habitual del protocolo dentro del cuerpo200, así que busca una claveerrorcuando esté esa cabecera. El streaming evita esto. 404model_not_found. El ID del modelo no existe. El error indica el modelo de chat disponible más parecido.400conparam: model. El ID pertenece a un modelo de imagen, video o audio; esos se ejecutan como tareas.400content_rejected. La propia política de contenido del modelo rechazó la solicitud. No se cobra nada.402. USD insuficientes en la API para la retención, o un límite de gasto de la clave. Consulta Facturación de la API.
Privacidad
Las solicitudes se envían al modelo tal como las escribiste; PopNow no añade ningún prompt de sistema propio. Se aplica la política de uso de cada modelo. El texto de los mensajes no se conserva después de que se liquide el cargo.

