La auth de OpenAI API ahora es project-first. Para la mayoria de los desarrolladores, el unico secreto que realmente necesitas para llamar la API es OPENAI_API_KEY. Organization ID y Project ID siguen existiendo, pero ya no son el acompanante por defecto de cada request. Importan cuando debes elegir scope de forma explicita, normalmente porque perteneces a varias organizations, porque sigues en un flujo legacy con user key, o porque estas llamando endpoints de administracion y no inferencia de modelos.
Esa distincion importa porque la web sigue mezclando tres capas distintas: la secret key que autentica la request, la organization que posee proyectos y billing, y el project que define miembros, presupuestos, permisos y la mayoria de las API keys del dia a dia. Si sigues tratando las tres como si fueran campos iguales de setup, vas a seguir pegando headers innecesarios en codigo que ya funcionaba y te costara mas depurar los casos en los que el scope de verdad si importa.
Esta guia se verifico contra la documentacion actual de OpenAI API, la documentacion de projects del help center, la guia de seguridad para API keys y el codigo fuente actual del SDK oficial de Python el 2 de abril de 2026.
TL;DR
- La credencial de auth por defecto en OpenAI API sigue siendo una secret API key.
- En la mayoria de setups actuales, una key scoped al project basta para las llamadas normales de modelos.
- La documentacion actual de auth de OpenAI solo pide
OpenAI-OrganizationyOpenAI-Projectcuando perteneces a varias organizations o accedes a projects a traves de una legacy user API key. - Las personal keys scoped al proyecto y las service-account keys ya pertenecen a un project concreto, por eso muchas requests no necesitan headers extra.
OPENAI_ADMIN_KEYno es lo mismo que la key normal de inferencia. Se usa para endpoints de administracion de organization y project.- Si tienes una key pero no sabes a que org pertenece,
GET /v1/mepuede mostrar las organizations asociadas a esa key.
Respuesta Rapida: que necesitas realmente
Si solo quieres la respuesta mas corta posible, usa esta matriz:
| Situacion | Que necesitas | Por que |
|---|---|---|
| Llamada normal a la API con una key creada dentro del project que vas a usar | OPENAI_API_KEY | La key ya esta scoped a ese project, asi que la request puede mantenerse simple |
| Perteneces a varias organizations o estas en un flujo legacy con user key y debes elegir scope explicitamente | OPENAI_API_KEY, mas OpenAI-Organization y, a veces, OpenAI-Project | La documentacion de auth de OpenAI define esos headers para seleccionar organization o project de forma explicita |
| Estas listando o administrando project keys y otros recursos a nivel de org | OPENAI_ADMIN_KEY | Son endpoints de gestion, no requests normales de inferencia |
La forma mas rapida de evitar confusion es dejar de preguntar "necesito API key y organization ID?" como si fueran siempre una pareja. La mejor pregunta es: que tipo de key estoy usando y este request ya sabe a que project pertenece?
El modelo actual de auth de OpenAI

La plataforma actual de OpenAI se entiende mejor como una jerarquia:
- Arriba del todo esta la organization.
- Dentro de ella creas uno o varios projects.
- Dentro de cada project creas project-scoped keys y service accounts.
- En paralelo, OpenAI expone admin keys para endpoints de administracion de organization o project.
Por eso el consejo antiguo de "pon tu API key y tu org ID en todas partes" hoy suena desajustado. La documentacion actual del help center dice que los miembros de un project pueden generar una personal API key limitada a ese project y a sus recursos. La referencia actual de auth, mientras tanto, dice que solo pasas OpenAI-Organization y OpenAI-Project cuando necesitas seleccionar scope explicitamente, sobre todo en escenarios de multiples organizations o acceso a projects mediante legacy user keys. Juntas, esas dos piezas describen una plataforma en la que la ruta normal del project key esta pensada para ser mas simple que el patron viejo cargado de headers.
Aqui hay otra distincion importante. OpenAI tambien soporta service accounts, y tambien son project-scoped. Estan pensadas para acceso de sistema, no para una persona concreta. Cuando creas una, OpenAI genera la secret key en ese momento y advierte que despues ya no podras volver a verla. En la practica, eso significa que las service-account keys se comportan como credenciales ligadas a un project para automatizacion, no como una credencial universal a nivel de organization.
Y luego esta la ruta de admin key. Si estas leyendo paginas de referencia para gestion de proyectos y ves ejemplos con OPENAI_ADMIN_KEY, ya estas en el management plane. No es la misma credencial que usas para responses.create, para listar modelos ni para otras llamadas normales de aplicacion.
Cuando OPENAI_API_KEY es suficiente
Para la mayoria de desarrolladores, esta es toda la historia.
Si la secret key se creo en el mismo project que realmente quieres usar, lo normal es que la request solo necesite autenticacion Bearer. No haces la request mas correcta por anadir org y project headers solo porque algun snippet antiguo los muestre. En muchos casos, esa configuracion extra aporta ruido, no seguridad.
La documentacion actual de OpenAI respalda este modelo de dos formas. Primero, define las API keys como el mecanismo principal de auth. Segundo, reserva OpenAI-Organization y OpenAI-Project para la seleccion explicita de scope, no para cada request por defecto. El SDK oficial de Python refuerza exactamente la misma idea: lee OPENAI_API_KEY automaticamente y solo envia los headers OpenAI-Organization o OpenAI-Project si tu configuras OPENAI_ORG_ID o OPENAI_PROJECT_ID.
Eso importa porque muchas integraciones fallan hoy por una razon muy corriente: el desarrollador asume que una configuracion minima que ya funciona esta incompleta si no incluye todos los identificadores posibles. En el modelo actual de projects de OpenAI, el habito sano es el contrario. Empieza con la request mas pequena que encaje con tu tipo de key. Anade seleccion explicita de scope solo si el escenario lo exige de verdad.
Cuando tambien necesitas Organization ID o Project ID
Organization ID y Project ID siguen siendo reales, y siguen importando. Simplemente son herramientas mas estrechas de lo que parecen en muchos resultados de busqueda.
El caso de uso mas claro hoy es el que OpenAI documenta de forma directa: perteneces a varias organizations o estas accediendo a projects mediante una legacy user API key. En esa situacion, la plataforma puede necesitar que digas que organization o que project debe recibir la request. Ahí es cuando OpenAI-Organization y OpenAI-Project se vuelven el movimiento correcto.
Otro lugar donde veras esos valores con frecuencia es en conectores de terceros. Una herramienta puede pedir API key, org ID y project ID porque quiere routing explicito para su propio modelo de cuenta, seguimiento de uso o setup multi-tenant. Eso no significa automaticamente que todas las requests directas a OpenAI API necesiten el mismo trio. Significa que el conector ha decidido exponer esos campos.
La regla practica es simple. Si la key ya lleva el project scope que quieres usar, la request normal puede mantenerse pequena. Si la plataforma o la herramienta necesita que desambigues el scope, ahi es cuando los identificadores de org o project hacen falta.
Lo que no deberias hacer es aplastar esas dos realidades en una frase demasiado ancha como "OpenAI requiere API key y organization ID". Para la plataforma actual, eso ya no es preciso.
Donde encontrar cada valor

Los valores viven en sitios distintos porque resuelven problemas distintos.
Secret API Key
El help center de OpenAI dice que tu secret API key se encuentra en la API key page. Esa es la credencial que debes priorizar si tu objetivo es hacer que una request a la API funcione.
Organization ID
La referencia de auth de OpenAI dice que los organization IDs se encuentran en la pagina de organization settings. Otro articulo del help center tambien aclara que el nombre de la organization puede cambiar, pero el organization ID es unico y no puede modificarse.
Project ID
La misma referencia de auth dice que los project IDs se encuentran en la pagina de general settings del project seleccionado. Ese es el identificador que usas cuando debes decirle a OpenAI o a un conector que project debe ser el propietario de la request.
Si solo tienes la key
Este es uno de los mejores trucos de rescate del conjunto actual de fuentes. El help center de OpenAI dice que puedes llamar a /v1/me usando la API key como Bearer token para descubrir el usuario y las organizations asociadas a esa key.
bashcurl https://api.openai.com/v1/me \ -H "Authorization: Bearer $OPENAI_API_KEY"
No sustituye todas las comprobaciones del dashboard, pero si estas depurando un conector o limpiando un entorno viejo y solo tienes una key conocida, suele ser la forma mas rapida de recuperar el mapeo de org.
Ejemplos practicos
El ejemplo correcto depende del camino de auth que hayas identificado arriba.
1. Request normal con project-scoped key
Si tu key ya pertenece al project que quieres usar, manten la request al minimo:
bashcurl https://api.openai.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY"
Esa es la linea base. Si esto funciona, no lo mejoras anadiendo headers de scope solo porque un blog te lo dijo.
2. Seleccion explicita de organization o project
Si de verdad necesitas elegir el scope, usa los headers que documenta OpenAI:
bashcurl https://api.openai.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "OpenAI-Organization: $OPENAI_ORG_ID" \ -H "OpenAI-Project: $OPENAI_PROJECT_ID"
Usa esto porque tu situacion encaja con la condicion documentada, no porque parezca mas oficial.
3. SDK de Python con variables de entorno
El cliente oficial de Python lee estas variables de entorno automaticamente:
bashexport OPENAI_API_KEY="sk-..." export OPENAI_ORG_ID="org-..." export OPENAI_PROJECT_ID="proj_..."
pythonfrom openai import OpenAI client = OpenAI() response = client.responses.create( model="gpt-5.2", input="Say hello in one sentence." ) print(response.output_text)
El detalle importante no es solo que el SDK soporte OPENAI_ORG_ID y OPENAI_PROJECT_ID. Lo importante es que los trata como opcionales. Si no los defines, no inventa esos headers por su cuenta.
4. Ejemplo con admin key
Si trabajas con endpoints de gestion de projects, ya estas en otro plano:
bashcurl "https://api.openai.com/v1/organization/projects/$OPENAI_PROJECT_ID/api_keys" \ -H "Authorization: Bearer $OPENAI_ADMIN_KEY"
Este es un buen ejemplo de por que la gente se confunde. Es un ejemplo oficial de OpenAI, pero no es un ejemplo de inferencia normal de modelos. Si copias el patron de credenciales del management plane dentro del codigo diario de tu aplicacion, estas resolviendo el problema equivocado.
Si tu siguiente paso despues de aclarar auth es probar una llamada real a modelos, consulta nuestra guia de GPT-5.4 free API, que hoy solo esta disponible en ingles. Si la confusion viene de mezclar superficies para consumidores con superficies para desarrolladores, nuestra guia de OpenAI Sora API es la ruta mas limpia.
Errores comunes y troubleshooting

La mayoria de la confusion de auth cae en una de estas cuatro categorias.
1. 401 invalid API key
Esta es la mas directa. El secreto es incorrecto, esta mal formado, dejo de ser valido tras una rotacion o se copio con espacios u otros caracteres basura. La guia de seguridad para API keys de OpenAI sigue siendo la base correcta aqui: guarda la key en variables de entorno, evita exponerla en el cliente y rota rapido si sospechas una filtracion.
2. La key funciona en un sitio pero no en otro
Eso suele ser un problema de scope, no del string secreto. Un conector puede pedirte elegir org o project de forma explicita. Un flujo legacy con user key tambien puede necesitar headers que una project-scoped key no necesita. Revisa si el entorno esta usando otra organization, otro project o un patron de auth antiguo antes de empezar a regenerar credenciales.
3. 403 permission denied o falta de capacidad
OpenAI soporta ahora permisos All, Restricted y Read Only a nivel de project. Si la request autentica pero sigue fallando por acceso a recursos o capacidades, la key puede estar restringida o el usuario puede no tener el project role necesario para esa accion.
4. Filtraste la key o ya no puedes verla
La guia de seguridad de OpenAI es clara: rota la key y sustituyela en tu entorno. En service accounts, recuerda que el secreto solo se muestra una vez en el momento de creacion. Si ya no esta, la solucion correcta no es intentar redescubrir un valor oculto en el dashboard. La solucion correcta es generar un secret nuevo.
Hay un error mas que merece mencion aparte porque hace perder mucho tiempo: no confundas los org / project IDs de API Platform con otros identificadores de otros productos de OpenAI. En una misma sesion de debugging, muchos desarrolladores terminan mezclando docs de API Platform, configuracion de ChatGPT Enterprise, docs de conectores y respuestas de la comunidad, pero esas paginas no hablan todas de la misma capa.
La regla practica que conviene recordar
Trata la key como la credencial y los IDs como selectores de scope.
Parece una diferencia pequena, pero resuelve casi todo este tema. Cuando adoptas ese modelo, la plataforma actual de OpenAI deja de sentirse como un monton de campos solapados. La project-scoped key pasa a ser la ruta por defecto para llamadas normales de aplicacion. Los org y project IDs se convierten en controles de routing explicitos para los casos que de verdad lo necesitan. Y las admin keys vuelven al lugar que les corresponde: credenciales del management plane, no la respuesta universal a la autenticacion de OpenAI.
Si te quedas con una sola frase de este articulo, que sea esta: la mayoria de setups de OpenAI API en 2026 empiezan por OPENAI_API_KEY, no por una caza del organization ID.
