Inicio → Ayuda

401 invalid API key: cuando la clave parece correcta pero sigue fallando

Un 401 significa que la petición llegó a la API y que la clave fue rechazada, lo cual es una buena noticia. La URL es correcta; solo falla la credencial.

Lo que ves

Por qué ocurre

Conviene distinguir esto del caso de HTML en lugar de JSON. Recibir un 401 limpio en JSON demuestra que tu base URL es correcta y que la petición se enruta bien. Estás a un pequeño arreglo de distancia, no depurando la capa equivocada.

La causa más frecuente no es una clave errónea: es un carácter invisible. Al copiar desde un terminal o una interfaz web a menudo se cuela un salto de línea final o un espacio de no separación, y la comparación falla con una clave que en pantalla parece idéntica.

Comprueba si es esta la causa

Imprime la longitud de la clave y compárala con la que muestra el panel. Un carácter de más lo delata:

# Python
import os
k = os.environ["API_KEY"]
print(len(k), repr(k[-4:]))

# shell
printf '%s' "$API_KEY" | wc -c

Si repr() muestra '\n' o la longitud es uno más de lo esperado, ahí tienes la respuesta.

Cómo solucionarlo

  1. Elimina los espacios en blancoRecorta la clave al leerla de una variable de entorno o de un archivo. Un salto de línea final es invisible en cualquier interfaz y rompe cualquier comparación.
  2. Revisa el nombre de la cabeceraLos endpoints estilo OpenAI esperan Authorization: Bearer KEY. Los endpoints estilo Anthropic esperan x-api-key. Enviar la clave correcta en la cabecera equivocada devuelve 401 sin ninguna pista sobre cuál fue el error.
  3. Comprueba a qué tiene acceso la claveEn pasarelas donde las claves están limitadas a un plan o grupo, una clave válida puede ser rechazada para un modelo fuera de su ámbito. Algunas devuelven 401 en lugar de un error más claro. Lista los modelos que ve tu clave antes de suponer que la clave en sí está mal.
  4. Confirma que la clave sigue existiendoLas claves eliminadas o rotadas suelen fallar con 401 y no con 404. Si rotaste hace poco, asegúrate de que el proceso en ejecución se reinició: un proceso de larga duración conserva el valor antiguo en memoria.
En APICLAN puedes listar a qué tiene acceso una clave con curl https://apiclan.us/v1/models -H "Authorization: Bearer YOUR_KEY". Cada clave pertenece a un grupo, así que una clave creada para un plan no funcionará en otro.

Relacionado

Unexpected token '<' al llamar a una API compatible con OpenAI404 en /v1/chat/completions cuando el endpoint claramente existe

Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela compatible con OpenAI en producción, no recopilado de otras webs.