PopNowDocs de la API
Chat y API compatibles
Contenido principal

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 OpenAIhttps://api.popnow.ai/v1 (Chat Completions, Responses, lista de modelos)
URL base de Anthropichttps://api.popnow.ai (el SDK añade /v1/messages)
GeminiPOST https://api.popnow.ai/v1beta/models/{model}:generateContent
ClaveAuthorization: Bearer sk-popnow-…; las cabeceras x-api-key del SDK de Anthropic y x-goog-api-key de Google también funcionan
IDs de modelopublisher/model/chat, por ejemplo anthropic/claude-haiku-5.5/chat. La lista completa está más abajo
PrecioPor token, en USD, sin mínimo por solicitud. Las solicitudes fallidas y las rechazadas se reembolsan
Streamingstream: 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.

Python
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)
JavaScript (Node.js 18+)
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.

Python
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.

Python
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 respuesta X-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-Params como name=value.
  • Cualquier otro campo que el modelo no declara devuelve 400 con code: unsupported_parameter y param con 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.

ModeloID del modeloContextoEntrada por millón de tokens (USD)Salida por millón de tokens (USD)Parámetros
Claude Fable 5Anthropicanthropic/claude-fable-5/chat1MSalida máx. 128K$9caché $0.9escritura de caché $11$45max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Haiku 5.5AnthropicEntrada > 100K tokens por solicitud: $0.5 / $2.5 · caché $0.1anthropic/claude-haiku-5.5/chat1MSalida máx. 128K$0.1escritura de caché $0.1$0.5max_tokensparallel_tool_callstool_choicetools
Claude Opus 4.5Anthropicanthropic/claude-opus-4.5/chat198KSalida máx. 33K$4.5caché $0.45escritura de caché $5.5$22.5max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p
Claude Opus 4.6Anthropicanthropic/claude-opus-4.6/chat1MSalida máx. 128K$5caché $0.5escritura de caché $6.25$25max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_p
Claude Opus 5Anthropicanthropic/claude-opus-5/chat1MSalida máx. 128K$4.5caché $0.45escritura de caché $5.5$22.5max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Opus 5.5Anthropicanthropic/claude-opus-5.5/chat1MSalida máx. 128K$3.6caché $0.18escritura de caché $4.5$18max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Sonnet 4.5Anthropicanthropic/claude-sonnet-4.5/chat198KSalida máx. 64K$2.7caché $0.27escritura de caché $3.3$13.5max_tokensparallel_tool_callsstoptemperaturetool_choicetoolstop_ktop_p
Claude Sonnet 4.6Anthropicanthropic/claude-sonnet-4.6/chat1MSalida máx. 64K$3caché $0.3escritura de caché $3.75$15max_tokensparallel_tool_callsreasoning_effortstoptemperaturetool_choicetoolstop_ktop_p
Claude Sonnet 5Anthropicanthropic/claude-sonnet-5/chat1MSalida máx. 64K$1.9caché $0.19escritura de caché $2.375$9.5max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
Claude Sonnet 5.5Anthropicanthropic/claude-sonnet-5.5/chat1MSalida máx. 128K$2caché $0.2escritura de caché $2.5$10max_tokensparallel_tool_callsreasoning_effortstoptool_choicetools
DeepSeek V4.1 FlashDeepSeekdeepseek/v4.1-flash/chat1MSalida máx. 384K$0.3caché $0.006$1.2max_tokensreasoning_effortresponse_formatstoptool_choicetools
DeepSeek V4 FlashDeepSeekdeepseek/v4-flash/chat1MSalida máx. 66K$0.44caché $0.014$1.32max_tokensreasoning_effortresponse_formatstoptool_choicetools
DeepSeek V4 ProDeepSeekdeepseek/v4-pro/chat1MSalida máx. 384K$1.32caché $0.044$3.96max_tokensparallel_tool_callsreasoning_effortresponse_formatstoptool_choicetools
Gemini 2.5 FlashGooglegoogle/gemini-2.5-flash/chat1MSalida máx. 66K$0.285caché $0.0285$2.375max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.1 Pro PreviewGoogleEntrada > 200K tokens por solicitud: $3.8 / $17.1 · caché $0.38google/gemini-3.1-pro-preview/chat1MSalida máx. 33K$1.9caché $0.19$11.4max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.5 Flash-LiteGooglegoogle/gemini-3.5-flash-lite/chat1MSalida máx. 66K$0.3caché $0.03$2.5max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3.7 FlashGooglegoogle/gemini-3.7-flash/chat1MSalida máx. 66K$0.675caché $0.0675$3.375max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
Gemini 3 Flash PreviewGooglegoogle/gemini-3-flash-preview/chat256KSalida máx. 66K$0.45caché $0.045$2.7max_tokensreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
GLM 5.2Z.aizai/glm-5.2/chat1MSalida máx. 131K$0.98caché $0.182$3.08max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p
GLM 5.3Z.aizai/glm-5.3/chat1MSalida máx. 131K$1.05caché $0.195$3.3max_tokensparallel_tool_callsreasoning_effortresponse_formatseedstoptemperaturetool_choicetoolstop_p
GLM 5.3 FlashZ.aizai/glm-5.3-flash/chat1MSalida máx. 131K$0.1275caché $0.0255$0.425max_tokensreasoning_effortresponse_formatstoptemperaturetool_choicetoolstop_p
Grok 4.3xAIEntrada ≥ 200K tokens por solicitud: $2.5 / $5 · caché $0.4xai/grok-4.3/chat1MSalida máx. 900K$1.25caché $0.2$2.5max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.5xAIEntrada ≥ 200K tokens por solicitud: $4 / $12 · caché $0.6xai/grok-4.5/chat500KSalida máx. 450K$2caché $0.3$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.6xAIEntrada ≥ 200K tokens por solicitud: $4 / $12 · caché $1xai/grok-4.6/chat500KSalida máx. 450K$2caché $0.5$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Grok 4.7xAIEntrada ≥ 200K tokens por solicitud: $4 / $12 · caché $1xai/grok-4.7/chat500KSalida máx. 450K$2caché $0.5$6max_tokensparallel_tool_callsreasoning_effortresponse_formattemperaturetool_choicetoolstop_p
Kimi K3Moonshot AImoonshot/kimi-k3/chat1MSalida máx. 1M$2.7caché $0.3$13.5max_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

  1. 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 omites max_tokens, se usa la salida máxima del modelo, así que define un valor para que las retenciones sean pequeñas.
  2. 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.
  3. 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 200 y una cabecera X-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 cuerpo 200, así que busca una clave error cuando esté esa cabecera. El streaming evita esto.
  • 404 model_not_found. El ID del modelo no existe. El error indica el modelo de chat disponible más parecido.
  • 400 con param: model. El ID pertenece a un modelo de imagen, video o audio; esos se ejecutan como tareas.
  • 400 content_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.

En esta página