Documentación
Qwen Code
Qwen Code guarda sus endpoints en un solo archivo. Declara Kunavo una sola vez en modelProviders, establece selectedType en openai y usa el selector /model para cambiar entre Claude y GPT con una sola clave.
Qwen Code lee sus endpoints desde modelProviders en ~/.qwen/settings.json — una entrada con baseUrl y envKey coloca Claude y GPT en su selector /model.
{
"modelProviders": {
"openai": [
{
"id": "claude-sonnet-5",
"name": "Claude Sonnet 5 (Kunavo)",
"baseUrl": "https://api.kunavo.com/v1",
"description": "Kunavo, OpenAI-compatible",
"envKey": "KUNAVO_API_KEY"
}
]
},
"env": {
"KUNAVO_API_KEY": "sk-kn-..."
},
"security": {
"auth": {
"selectedType": "openai"
}
},
"model": {
"name": "claude-sonnet-5"
}
}/v1. La documentación de referencia de proveedores de modelos lo aclara en una frase: al dirigir una entrada a una pasarela alojada compatible con OpenAI, configura baseUrl con la «/v1 de la API» en lugar de la ruta /v1/chat/completions completa; «el SDK añade la ruta de solicitud por su cuenta». Todos los ejemplos de OPENAI_BASE_URL en la página de autenticación terminan igual. Si la URL base ya incluye la ruta, obtendrás un 404, no un error de autenticación.realtimeOnly sea un endpoint de DashScope, por lo que esa función sigue usando su propia clave, independientemente de dónde dirijas el modelo de chat./auth.sk-kn-) y añade crédito desde $10; las llamadas se pagan con ese saldo y las llamadas fallidas no se facturan. El panel se abre entonces en la configuración de Qwen Code.Paso a paso
- Cree una clave en
/app/keysy cópiela: se muestra una sola vez. - Abra
~/.qwen/settings.json(créelo si no existe) e incorpore los cuatro bloques anteriores. La documentación recomienda declararmodelProvidersen el archivo de ámbito de usuario «para evitar conflictos de combinación entre la configuración del proyecto y la del usuario». - Si puede, guárdela en un lugar más seguro que
env. Qwen Code la lee desdeprocess.env[envKey], y la documentación ordena las fuentes de mayor a menor prioridad: unaexportde shell, luego un archivo.env, y después el bloqueenvensettings.json, que identifica como almacenamiento en texto sin formato. El bloqueenvanterior es lo mínimo para que funcione, no el mejor lugar para guardarla. - Ejecute
qwen. Consecurity.auth.selectedTypeestablecido enopenaiymodel.namecoincidiendo con unidque haya declarado, no se necesita ningún paso interactivo de/auth; la documentación lo dice explícitamente después del ejemplo de un solo archivo. - Asígnele una tarea que lea y edite un archivo, no un saludo. Qwen Code es un agente: la llamada a herramientas y la transmisión en flujo son lo que debería probar una primera ejecución, y son precisamente lo primero que fallaría ante un endpoint solo parcialmente compatible.
- Añada más entradas en
modelProviders.openaipara cambiar de modelo durante la ejecución con/model. Esos cambios se recargan en caliente en una sesión activa;providerProtocolse lee una sola vez al inicio y requiere reiniciar.
Comprobado con Página de autenticación de Qwen Code, opción 4: clave de API (flexible) el 21 de septiembre de 2026. La configuración de terceros puede cambiar; si el nombre de un campo ya no coincide con lo que ves, esa página es la autoridad, no esta.
Verifica antes de depurar el cliente
Una solicitud determina si el fallo está en el endpoint, la clave o el archivo de configuración. Si devuelve JSON, la misma URL base y la misma clave funcionan en Qwen Code.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Qué ID de modelo introducir en el campo
Todos los modelos de texto están disponibles mediante un ID de modelo; la lista activa está en GET /v1/models, y el catálogo con precios está en la página de modelos. Las tarifas son USD por 1M de tokens, entrada / salida.
| ID de modelo | Entrada / salida de Kunavo | Dónde encaja en Qwen Code |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | el modelo de trabajo predeterminado: establézcalo como model.name |
claude-opus-5 | $3.50 / $17.50 | un plan en el que equivocarse resultaría caro |
claude-haiku-4-5 | $0.70 / $3.50 | turnos económicos: clasificación inicial, resúmenes y el ciclo que se ejecuta todo el día |
gpt-5-6-sol | $2.00 / $12.00 | una segunda opinión de otra familia, con la misma clave y el mismo baseUrl |
gpt-5-6-terra | $0.70 / $4.20 | lectura de contexto largo, todavía mediante la clave del protocolo openai |
Tres aspectos que la documentación aclara y que suelen suponerse mal
Estos datos provienen de la página de autenticación y de la referencia de proveedores de modelos enlazadas arriba; dar algo por sentado en vez de leerlo cuesta tiempo real de depuración.
- Una entrada
modelProviderstiene prioridad sobre las opciones de la CLI. El orden documentado, de mayor a menor prioridad, es: las anulaciones realizadas mediante/authen la sesión activa, luego elenvKeydel proveedor de modelos seleccionado, después argumentos de CLI como--openai-api-key, luego las variables de entorno y, por último,security.auth.apiKeyen la configuración. La mayoría espera que prevalezca la opción de línea de comandos. No es así, y por eso--openai-base-urlpuede parecer que se ignora. security.auth.apiKeyysecurity.auth.baseUrlestán obsoletos. La referencia así lo indica y recomienda migrar amodelProviders. Si un tutorial antiguo le indica editar esas dos claves, le está haciendo modificar la ruta que está a punto de desaparecer.wireApidetermina el formato de la solicitud, y nada detecta una incompatibilidad. Si se omite, se usa Chat Completions, que es lo que utiliza el bloque anterior. Establecer"wireApi": "responses"requiere un endpoint realmente compatible con Responses, y la documentación afirma claramente que no se detectan endpoints ni se recurre automáticamente a otra opción cuando falla una solicitud. Kunavo responde tanto a/v1/responsescomo a/v1/chat/completions, pero esta página no ha probado ninguna de las dos combinaciones, así que empiece con la predeterminada.
Si llegó aquí buscando el nivel gratuito
Gran parte de lo que aún se escribe sobre Qwen Code describe un inicio de sesión OAuth de Qwen con una asignación gratuita diaria. Esa opción ya no existe: la documentación registra la interrupción de su nivel gratuito el 15 de abril de 2026 e indica que Qwen OAuth ya no aparece como opción seleccionable en el cuadro de diálogo /auth. Ahora enumera estas tres: Alibaba ModelStudio, con Coding Plan, Token Plan y Standard API Key en su submenú; Third-party Providers; y Custom Provider, descrito como conexión con «un servidor local, un proxy o un proveedor no compatible». Kunavo es la tercera opción. Tenga en cuenta también que las opciones del submenú de ModelStudio no son tres maneras de pagar una misma factura: cada una tiene su propio host y su propia clave, y una clave de Coding Plan no funcionará con un host de Token Plan.
Preguntas frecuentes
¿Cómo configuro Qwen Code para usar un endpoint de API personalizado?
Declare el endpoint en ~/.qwen/settings.json, bajo modelProviders. Use la clave «openai» para cualquier host compatible con OpenAI, asigne a la entrada del modelo un id, un baseUrl y un envKey que indique el nombre de la variable de entorno que contiene su clave de API; luego establezca security.auth.selectedType en «openai» y model.name en ese id. Ejecute qwen y se iniciará con esa configuración, sin ningún paso interactivo de /auth. La alternativa mediante variables de entorno es OPENAI_API_KEY, OPENAI_BASE_URL y OPENAI_MODEL, pero la documentación recomienda el archivo de configuración porque se conserva entre shells y admite varios endpoints a la vez.
¿El baseUrl de Qwen Code debe terminar en /v1?
Sí, para un endpoint compatible con OpenAI. La referencia de proveedores de modelos de Qwen Code indica que baseUrl debe apuntar a la raíz /v1 de la API, por ejemplo, https://gateway.example.com/v1, y no a la ruta completa /v1/chat/completions, ya que el SDK añade la ruta de solicitud por su cuenta. Para Kunavo, el valor es https://api.kunavo.com/v1. Si se deja la ruta al final, se produce un error 404 en vez de un error de autenticación; así suele manifestarse este problema.
¿Sigue disponible el nivel gratuito de Qwen Code?
No. La documentación de Qwen Code registra que el nivel gratuito de Qwen OAuth se interrumpió el 15 de abril de 2026, y Qwen OAuth ya no aparece como opción seleccionable en el cuadro de diálogo /auth. La documentación también señala que los modelos de Qwen OAuth están codificados de forma fija y no se pueden reemplazar mediante modelProviders, por lo que no basta con redirigir la ruta antigua a otro lugar. Las opciones disponibles son Alibaba ModelStudio, un proveedor externo integrado o un endpoint personalizado que configure usted mismo.
¿Puede Qwen Code ejecutar modelos Claude o GPT en vez de Qwen?
Sí. La tabla de protocolos de Qwen Code indica que la clave de proveedor openai acepta cualquier endpoint compatible con OpenAI, y que el id del modelo en una entrada de modelProviders se transmite directamente al baseUrl configurado, por lo que se resuelve en ese endpoint y no dentro del cliente. Por tanto, los id de Claude o GPT funcionan siempre que el endpoint los ofrezca. Kunavo ofrece id de Claude y GPT a través de su interfaz compatible con OpenAI, y ha publicado esta configuración a partir de la documentación del proveedor, no de una prueba ejecutada.
¿Por qué Qwen Code ignora --openai-base-url?
Porque una entrada de modelProviders tiene prioridad sobre esa opción. La precedencia documentada de credenciales sitúa primero las anulaciones introducidas mediante /auth en la sesión activa, segundo el baseUrl y el envKey del proveedor de modelos seleccionado, y tercero los argumentos de CLI; después vienen las variables de entorno y la configuración. Si hay una entrada de proveedor seleccionada, prevalece su baseUrl sobre la opción. Edite esa entrada —los cambios en modelProviders se recargan en caliente en una sesión activa— o elimínela si quería que surtiera efecto la opción de línea de comandos.