db

Invalid API key

La petición ha llegado a Supabase, que la ha mirado y ha dicho que no. A diferencia de otros errores, aquí la conexión funciona: lo que no le vale es la credencial que le estás enseñando.

Revisado en agosto de 2026

De paso

Ya de paso: ¿tu app está exponiendo datos?

Analízala gratis mientras lees. Tarda treinta segundos y no toca nada.

Solo leemos lo que tu app ya le entrega a cualquier visitante.

Diagnóstico

Por qué te pasa

La causa más habitual es de las que dan rabia: la clave está copiada a medias. Son cadenas larguísimas y al seleccionarlas con el ratón es fácil dejarse el final, o arrastrar un espacio o un salto de línea al pegarlas. Supabase la recibe distinta y la rechaza sin más explicación.

La segunda es tener claves y proyecto cruzados. Pasa mucho después de duplicar un proyecto o de crear uno nuevo para producción: la dirección apunta a un proyecto y la clave es del otro. Cada clave solo vale para su proyecto.

Las otras tres: que la clave se regenerara en el panel y tu app siga usando la vieja; que estés usando una clave del formato antiguo después de haber migrado el proyecto al nuevo sistema de claves; o que la variable de entorno llegue vacía y la app esté mandando literalmente la palabra undefined como si fuera la clave.

Y hay una quinta que conviene mirar antes que ninguna: que al copiar cogieras la clave que no era. Si en el código de tu app acabó la service_role en vez de la pública, no tienes un error de configuración, tienes la llave maestra de tu base de datos publicada en internet. El análisis gratuito de arriba te lo dice en treinta segundos, y merece la pena descartarlo antes de seguir.

Lo que este error no significa

  • No significa que te hayan hackeado ni que alguien haya tocado tu proyecto. Es tu propia app la que se está identificando mal.
  • No has perdido datos. Supabase rechaza la petición entera antes de ejecutar nada, así que no queda nada a medias.
  • No hace falta regenerar las claves para arreglarlo, y si lo haces sin actualizar la app en el mismo movimiento, lo único que consigues es tumbarla del todo.

Solución

Arréglalo tú, gratis

Se arregla en dos paneles y sin tocar código. Hazlo en este orden, porque el primer paso descarta el caso urgente.

  1. 01Antes de nada, analiza tu app con el escáner de arriba. Si te dice que hay una clave service_role publicada, para aquí: eso se arregla en un orden concreto y merece su propio rato.
  2. 02En Supabase, entra en Project Settings y luego Data API. Comprueba que la URL del proyecto que aparece ahí es exactamente la que tiene tu app configurada. Si no coincide, tienes las claves cruzadas entre dos proyectos.
  3. 03En API Keys, usa el botón de copiar de la propia interfaz en vez de seleccionar con el ratón. Es la diferencia entre copiar la clave entera y copiar casi toda.
  4. 04Ve al panel de tu hosting, borra el valor anterior por completo y pega el nuevo. Comprueba que no queda ningún espacio al principio ni al final.
  5. 05Vuelve a desplegar y prueba. Las variables se leen al construir la app: sin desplegar de nuevo seguirás viendo el error aunque el valor ya esté bien.

Si el mensaje aparece solo en algunas partes de la app y en otras no, no es la clave: es que hay más de un sitio en el código creando la conexión con Supabase, y uno de ellos usa una variable distinta.

Y esto para la parte de código

Pégaselo tal cual al agente que escribió tu app. Está redactado para que te diga lo que ha hecho, no solo para que lo haga.

Prompt para tu agente

Mi app da el error "Invalid API key" al llamar a Supabase.

Necesito que hagas esto:
1. Busca todos los sitios del proyecto donde se crea un cliente de Supabase y dime cuántos hay y qué variables de entorno lee cada uno. Si hay más de uno, unifícalos en un único módulo compartido.
2. Comprueba que en ningún punto se está usando la clave service_role en código que se ejecuta en el navegador. Si la encuentras, dímelo de forma destacada y no la borres sin avisarme: hay que rotarla en un orden concreto.
3. Añade una comprobación al arrancar que verifique que la clave no llega vacía ni con el valor literal "undefined", y que falle con un mensaje claro si eso pasa.
4. Comprueba que la clave no se está recortando ni transformando en ningún sitio del código antes de usarse.

No escribas ninguna clave directamente en el código: todas tienen que seguir viniendo de variables de entorno.

Si no sale

¿Lo has intentado y sigue sin salir?

O el escáner de arriba ha encontrado algo y prefieres no tocarlo solo. En cualquiera de los dos casos esto ya es de los gordos y merece un humano: no es que no hayas sabido, es que has llegado al punto en que hace falta alguien que entre y lo vea por dentro.

Las 10 primeras apps son gratis. Estoy empezando y necesito casos reales. A cambio te pido permiso para contar después qué me encontré, sin decir de quién era la app ni enseñar tus datos. Sin tarjeta y sin suscripción: cuando se acaben las plazas empezaré a cobrar y lo diré aquí.

Cita a partir de mañana

Agendar revisión

Gratis

durante el lanzamiento

Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.

  • Sesión de trabajo en directo contigo
  • Diagnóstico del error y del riesgo real
  • Te quedas con el arreglo aplicado

Hoy, en cola prioritaria

Rescate exprés

Gratis

durante el lanzamiento

Entras en la cola de hoy. Reservas hueco y lo dejamos resuelto en el día.

  • Hueco el mismo día
  • Prioridad sobre las revisiones agendadas
  • Mismo trabajo, antes

Quién

Marc Sala

IT Manager

  • Analista de ciberseguridad certificado por Google

No es un rating anónimo de un marketplace: es la persona que va a entrar en tu app. Reviso el código, encuentro qué falla y lo arreglo contigo delante, explicándote qué ha pasado sin jerga.