Qwen
Llame a los modelos Qwen 3.8 y 3.7 con OpenAI Chat Completions, OpenAI Responses o Anthropic Messages.
| Elemento | Valor |
|---|---|
| Base URL | https://api.hop-base.com/v1 |
| Chat | POST /v1/chat/completions |
| Responses | POST /v1/responses |
| Anthropic Messages | POST /v1/messages |
Autentíquese con una clave Bearer y tome el ID de modelo exacto de GET /v1/models. En /v1/messages también funciona la cabecera x-api-key.
curl https://api.hop-base.com/v1/chat/completions \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.8-max",
"messages": [{
"role": "user",
"content": "Resuma los riesgos de este trimestre en cinco puntos."
}]
}'Modelos
| ID de modelo | Contexto | Entrada de imagen y video |
|---|---|---|
qwen3.8-max | 1M | Sí |
qwen3.8-flash | 1M | Sí |
qwen3.7-max | 1M | Solo texto |
qwen3.7-plus | 1M | Sí |
qwen3.7-flash | 1M | Sí |
Los cinco exponen una ventana de contexto de 1.000.000 de tokens y hasta 131.072 tokens de salida por solicitud.
Los cinco están en el grupo Serie Qwen 3.8/3.7 (oficial de Alibaba), así que una sola clave llega a todos. Una clave de Qwen no llega a otras familias, y las claves de otras familias no llegan a Qwen. Los modelos de video Wan y HappyHorse están en los grupos Wan 3.0 oficial y HappyHorse 1.1 oficial, y cada uno necesita su propia clave.
Endpoint y parámetros de la solicitud
POST /v1/chat/completions, POST /v1/responses y POST /v1/messages funcionan en los cinco modelos, y el streaming funciona con normalidad en todos. Codex CLI y otros clientes que solo usan Responses se conectan directamente; Claude Code también, como se explica en Claude Code y Anthropic Messages. Ninguno necesita el enrutamiento de CC Switch.
La tabla cubre POST /v1/chat/completions. La pasarela solo rechaza messages vacío; los campos propios de Qwen pasan sin validar, y el resto de límites son del servicio del modelo.
| Parámetro | Obligatorio | Tipo y límites | Predeterminado | Descripción |
|---|---|---|---|---|
model | Obligatorio | Uno de los cinco ID de arriba | — | Coincidencia exacta |
messages | Obligatorio | Array no vacío; lados de imagen mayores que 10 px | — | Imágenes y video según la tabla de arriba |
max_tokens | Opcional | Entero, hasta 131.072 (límite oficial) | Del servicio | Limita la longitud de la salida |
enable_thinking | Opcional | Booleano | Del servicio | Propio de Qwen, se transmite |
thinking_budget | Opcional | Entero | Del servicio | No se combina con reasoning_effort |
reasoning_effort | Opcional | low / high / max funcionan en las pruebas | Del servicio | No se combina con thinking_budget |
enable_search | Opcional | Booleano | Del servicio | Propio de Qwen, se transmite |
tools, tool_choice | Opcional | Como en OpenAI | auto | Restringido en modo de razonamiento; vea abajo |
response_format | Opcional | Modo JSON, igual que en la API oficial | Texto | {"type": "json_object"} devuelve JSON |
stream | Opcional | Booleano | false | Con true responde con eventos SSE |
stream_options.include_usage | Opcional | Booleano | false | true para recibir usage en streaming |
messagesausente o vacío: 400 de la pasarela.- Combinar
thinking_budgetyreasoning_effortdevuelve 400. - En modo de razonamiento,
tool_choiceno puede serrequiredni una función concreta; devuelve 400. - Con
response_format, pida JSON también en el prompt. stream_options.include_usageno afecta a la facturación.- En
/v1/responses, las partes de contenido solo admiteninput_text,input_imageeinput_file: sin video. Envíe el video por Chat Completions.
En qwen3.8-max el techo de entrada medido es 991.808 tokens. Por encima devuelve (texto de error tomado de registros de producción):
400 Range of input length should be [1, 991808]Para todos los parámetros, consulte la referencia de la API de Chat Completions y elija la familia de modelos Qwen.
Lo que la pasarela cambia en su solicitud
Conviene conocer estas dos reescrituras antes de construir un agente de larga duración sobre Qwen.
| Comportamiento | Efecto en su solicitud |
|---|---|
previous_response_id | Se elimina si está presente |
store | Se fuerza a false |
Las solicitudes se balancean entre cuentas y un ID emitido por una no es válido en otra, por eso se elimina previous_response_id. Envíe el input completo en cada turno.
Claude Code y Anthropic Messages
POST /v1/messages acepta solicitudes estándar de Anthropic Messages para los cinco modelos y las pasa a la interfaz compatible con Anthropic del propio modelo, así que Claude Code y el SDK de Anthropic se conectan directamente. En el SDK, el Base URL es https://api.hop-base.com, sin /v1.
Con CC Switch, abra el menú ··· de la clave en la consola, seleccione Importar CCS y luego Claude Code. La importación rellena el modelo; mantenga el formato predeterminado de Anthropic, sin enrutamiento local. Para configurarlo a mano:
export ANTHROPIC_BASE_URL="https://api.hop-base.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-key"
export ANTHROPIC_MODEL="qwen3.8-max"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="qwen3.8-flash"
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000
claudeClaude Code no conoce estos ID, así que CLAUDE_CODE_MAX_CONTEXT_TOKENS le indica la ventana de contexto real; sin ella, Claude Code compacta la conversación al llegar a 200K tokens. Más opciones en Claude Code.
- El razonamiento llega en bloques
thinkingy cuenta enoutput_tokens.thinking: {"type": "disabled"}lo desactiva. qwen3.7-maxsolo admite texto: una solicitud con imagen devuelve400antes de llegar al modelo. Los otros cuatro leen imágenes.- Forzar una herramienta (
tool_choiceenanyo con una herramienta concreta) requiere el razonamiento desactivado. Con razonamiento,qwen3.8-max,qwen3.8-flashyqwen3.7-plusdevuelven400.qwen3.7-maxyqwen3.7-flashignoran la herramienta forzada en ambos casos y pueden responder con texto. - Un
max_tokenspor encima de 131.072 devuelve400en los tres modelos 3.7; los modelos 3.8 no lo rechazan. - Los puntos de corte
cache_controlse eliminan antes del envío, así que la caché explícita no está disponible; la caché de prefijo automática sigue funcionando. En pruebas del 2026-10-03, a partir del segundo turno Claude Code leyó de la caché entre el 89 % y el 97 % del prompt. - Claude Code envía en cada solicitud un prompt de sistema y una lista de herramientas largos: unos 15.000 tokens medidos antes de su primer mensaje. En un modelo con un umbral de tramo bajo, como
qwen3.7-flash, una sesión de Claude Code lo cruza pronto; consulte la siguiente sección.
400 Range of max_tokens should be [1, 131072]
400 Model qwen3.7-max does not accept image input. Remove the image from the request, including earlier turns of the conversation, or use a model that supports images.
400 The tool_choice parameter does not support being set to required or object in thinking modeAl conciliar Anthropic Messages, input_tokens excluye la parte en caché y coincide con Tokens de entrada del registro de uso; cache_read_input_tokens coincide con Tokens de entrada en caché.
Facturación y uso
Algunos modelos Qwen cambian de nivel cuando la entrada de una solicitud supera cierta longitud.
- El umbral cuenta todo el prompt: la parte en caché y la que no lo está.
- Al superarlo, toda la solicitud pasa a ese nivel, no solo los tokens que exceden el umbral.
- La caché no le mantiene por debajo del umbral: cambia qué tarifa se aplica a la parte almacenada, no la longitud del prompt que decide el nivel.
- La única forma de mantenerse por debajo es enviar un prompt más corto.
Qué modelos tienen niveles y dónde están los umbrales aparece en el catálogo de modelos con la sesión iniciada.
completion_tokens ya incluye los tokens de razonamiento, así que no los sume otra vez. completion_tokens_details.reasoning_tokens es un subconjunto de la salida, informado solo a título orientativo.
Su registro de uso de HopBase y el cuerpo de la respuesta cuentan la entrada de forma distinta, lo cual importa al conciliar:
| Campo | Significado |
|---|---|
prompt_tokens de la respuesta | Todo el prompt, incluida la parte en caché |
| Tokens de entrada del registro | El prompt menos la parte en caché |
| Tokens de entrada en caché del registro | La parte en caché, por separado |
Es decir, la entrada más la entrada en caché del registro equivalen al prompt_tokens de la respuesta.
Manejo de errores
Las respuestas 4xx del propio modelo se transmiten con los prefijos de código de error propios del fabricante eliminados, así que el texto de message es legible pero no estable. Ramifique según el estado HTTP y el campo code, nunca según la cadena del mensaje.
Un nombre de modelo que no esté en su grupo devuelve 404 model_not_found. Los ID de modelo son exactos: léalos de GET /v1/models en lugar de adivinarlos.
Próximos pasos
- OpenAI SDK: el patrón general de Chat Completions
- Codex CLI: conexión directa por Responses
- Claude Code: conexión directa por Anthropic Messages
- Códigos de error y reintentos
- Concurrencia, tiempos de espera y facturación