OpenAI API の auth はもう project-first です。多くの開発者にとって、API を呼ぶために本当に必要な secret は OPENAI_API_KEY です。Organization ID と Project ID もまだ存在しますが、すべての request に当然のように添える固定ペアではありません。必要になるのは、scope を明示的に選ぶ必要がある時です。典型的には、複数の organizations に所属している、legacy user-key flow を扱っている、あるいは通常の model inference ではなく management endpoints を呼んでいる時です。
この区別が重要なのは、いまでもウェブ上で三つの層が混ざって語られているからです。request を認証する secret key、projects と billing を持つ organization、そして members・budgets・permissions・日常的な API keys の範囲を決める project。この三つを同列の setup fields として扱い続けると、すでに動いているコードに不要な headers を貼り足すことになり、本当に scope が問題のケースをかえって見失います。
このガイドは 2026 年 4 月 2 日時点の OpenAI API docs、help center の projects 文書、API key safety guidance、そして公式 Python SDK の現行ソースをもとに確認しました。
TL;DR
- OpenAI API の基本 credential は secret API key のままです。
- 現在の多くの setup では、通常の model calls に project-scoped key だけで足ります。
- OpenAI の auth docs では、
OpenAI-OrganizationとOpenAI-Projectは、複数 organizations に属している場合や legacy user API key 経由で projects にアクセスする場合の明示的 scope 選択として扱われています。 - Project-scoped personal key と service-account key は最初から一つの project に結びついているので、多くの requests では追加の scope headers が不要です。
OPENAI_ADMIN_KEYは通常の inference key とは別物です。organization / project management endpoints 用です。- Key はあるのに所属 org が分からない時は、
GET /v1/meでその key に関連づく organizations を確認できます。
クイックアンサー: 実際に何が必要か
一番短い答えだけ先に欲しいなら、この表で足ります。
| 状況 | 必要なもの | 理由 |
|---|---|---|
| 実際に使う project の中で作成した key で普通の API call をする | OPENAI_API_KEY | Key がすでにその project に scoped されているので、request を最小構成にできる |
| 複数 organizations に所属している、または legacy user-key flow で明示的に scope を選ぶ必要がある | OPENAI_API_KEY に加えて OpenAI-Organization、必要に応じて OpenAI-Project | OpenAI の auth docs がこれらを明示的な organization / project 選択のための headers として定義している |
| Project keys など org レベルのリソースを一覧・管理する | OPENAI_ADMIN_KEY | これは通常の inference ではなく management endpoints だから |
混乱を減らす一番早い方法は、「API key と organization ID はセットで必要か」と考えるのをやめることです。もっと正確な問いはこうです。いま使っているのはどの種類の key で、この request はすでに自分の project を知っているのか。
OpenAI の現在の auth モデル

現在の OpenAI platform は、次の階層として理解すると最も自然です。
- 最上位に organization がある。
- その中に一つ以上の projects を作る。
- Project の中で project-scoped keys と service accounts を作る。
- その横に、organization / project management endpoints 用の admin keys がある。
だからこそ、昔ながらの「API key と org ID を全部に設定する」という advice は今の感覚からずれています。現在の help center docs は、project members がその project とその resources に限定された personal API key を生成できると明記しています。一方で current auth reference は、OpenAI-Organization と OpenAI-Project を、複数 organizations や legacy user-key access などの明示的 scope 選択が必要な時にだけ使うと説明しています。この二つを合わせると、いまの platform は通常の project-key path を意図的に簡素化している、と読むのが自然です。
ここでもう一つ大事な点があります。OpenAI は service accounts もサポートしていて、これも project-scoped です。これは個人ではなく system access 向けです。作成時にはその場で secret key が発行され、あとからその secret を再表示できないと OpenAI は警告しています。つまり service-account key は automation のための project-bound credential として振る舞い、top-level org credential のようには扱えません。
そして admin key の道があります。もし project management の API reference で OPENAI_ADMIN_KEY を使う例を見ているなら、それは management plane の話です。responses.create、model listing、通常の application calls に使う credential と同じではありません。
いつ OPENAI_API_KEY だけで足りるか
多くの開発者にとっては、これがほぼ全てです。
Secret key が実際に使いたい project で作られたものなら、request は Bearer authentication だけで足りることが普通です。古い snippets に org / project headers が載っていたからといって、それを足すことで request が「より正しい」わけではありません。多くの場合、それは安全性ではなくノイズを増やします。
OpenAI の current docs はこの考え方を二つの方向から支えています。第一に、API keys を primary auth mechanism として定義していること。第二に、OpenAI-Organization と OpenAI-Project を every request の default ではなく、explicit scope selection のためのものとして残していることです。公式 Python SDK も同じです。OPENAI_API_KEY は自動で読み込み、OPENAI_ORG_ID や OPENAI_PROJECT_ID を設定した時だけ対応する headers を送ります。
これが重要なのは、今の integration failures の多くが、実は非常に普通の思い込みから起きているからです。最小構成で動く request を見て、「これでは情報が足りないはずだ」と考え、あり得る identifiers を全部足してしまう。現在の OpenAI project model では、むしろ逆の習慣が健全です。自分の key type に合った最小 request から始める。本当に scenario が必要とする時だけ explicit scope selection を足す。
いつ Organization ID や Project ID も必要になるか
Organization ID と Project ID は今でも本物で、今でも重要です。ただし、検索結果が見せるよりずっと狭い用途の tools です。
現在もっとも分かりやすい use case は、OpenAI 自身が docs で書いているケースです。複数 organizations に属している、あるいは legacy user API key を通して projects にアクセスしている場合です。その時 platform は、この request をどの organization / project に向けるべきかを明示してほしいことがあります。その時に OpenAI-Organization と OpenAI-Project が必要になります。
もう一つ、これらの値をよく見るのが third-party connectors です。ある tool が API key、org ID、project ID を要求するのは、その tool 自身の account model、usage tracking、multi-tenant routing のために explicit routing を欲しがっているからかもしれません。それは「すべての direct OpenAI API requests にその三つが必要だ」という意味ではありません。Connector がそういう fields を exposed している、という意味です。
実務上のルールは簡単です。Key がすでに欲しい project scope を持っているなら、通常の request は小さいままでよい。Platform や tool が scope の曖昧さを解消するよう求める時だけ、org / project identifiers が必要になる。
逆にやってはいけないのは、この二つの現実を「OpenAI は API key と organization ID が必要だ」という一文に平坦化してしまうことです。今の platform には広すぎます。
それぞれの値はどこで確認するか

値が別々の場所にあるのは、それぞれが別の問題を解いているからです。
Secret API Key
OpenAI の help center は、secret API key を API key page で確認できるとしています。API request をまず通したいなら、最初に気にすべきなのはこれです。
Organization ID
Auth reference では、organization IDs は organization settings ページにあると説明されています。別の help-center article では、organization name は変更できても organization ID 自体は固有で変更できないことも明記されています。
Project ID
同じ auth reference では、project IDs は選択した project の general settings ページにあると説明されています。OpenAI や connector に「この request はどの project のものか」を伝える必要がある時に使う identifier です。
Key しかない場合
これは current source set の中でもかなり便利な rescue path です。OpenAI の help center は、API key を Bearer token として /v1/me を呼び、その key に紐づく user と organizations を確認できると説明しています。
bashcurl https://api.openai.com/v1/me \ -H "Authorization: Bearer $OPENAI_API_KEY"
これは dashboard の確認をすべて置き換えるものではありませんが、known key はあるのに org mapping が分からない、という時には最速の確認手段です。
実践例
どの example が正しいかは、上で見分けた auth path に依存します。
1. 通常の project-scoped request
Key が使いたい project に属しているなら、request は最小に保ちます。
bashcurl https://api.openai.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY"
これが baseline です。これで動くなら、scope headers を足しても改善にはなりません。
2. 明示的に organization / project を選ぶ
本当に scope を選ぶ必要がある場合だけ、OpenAI docs が示す headers を使います。
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"
使う理由は「より公式っぽいから」ではなく、「自分の situation が docs の条件に合っているから」です。
3. Python SDK と environment variables
公式 Python client は今も次の environment variables を自動で読みます。
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)
大事なのは、SDK が OPENAI_ORG_ID と OPENAI_PROJECT_ID をサポートしていることだけではありません。それらを optional として扱っていることです。設定しなければ、client は勝手にその headers を付けません。
4. Admin key の例
Project-management endpoints を触るなら、それは別の plane です。
bashcurl "https://api.openai.com/v1/organization/projects/$OPENAI_PROJECT_ID/api_keys" \ -H "Authorization: Bearer $OPENAI_ADMIN_KEY"
これは人が混乱しやすい理由のよい例です。確かに official OpenAI example ですが、通常の model inference example ではありません。Management plane の credential pattern を日常的な application code に持ち込むと、別の問題を解いてしまいます。
Auth の次にやりたいことが real model call のテストなら、GPT-5.4 free API ガイドを参照してください。Consumer surface と developer surface を混同していたことが原因なら、OpenAI Sora API ガイドのほうが route map として分かりやすいです。
よくあるミスと troubleshooting

Auth の混乱の大半は、次の四つの箱に入ります。
1. 401 invalid API key
もっとも直接的なケースです。Secret が違う、壊れている、rotation でもう無効になっている、あるいはコピー時に空白などのゴミが混じっている。ここでは OpenAI の API key safety guidance に戻るのが正解です。Key は environment variables に置く、client-side に出さない、leak を疑ったらすぐ rotate する。
2. 同じ key が一方では動き、別の場所では動かない
それは secret-string の問題より、scope の問題であることが多いです。Connector が org / project を明示的に選ばせているのかもしれないし、legacy user-key flow が project-scoped key には不要な headers を求めているのかもしれません。Credentials を作り直す前に、その環境が別 organization、別 project、あるいは古い auth pattern を使っていないか確認したほうがいいです。
3. 403 permission denied や capability 不足
OpenAI は現在、project level で All、Restricted、Read Only の permissions をサポートしています。Request 自体は認証されたのに resource access や capability で失敗するなら、その key が restricted か、user 側に必要な project role が足りていない可能性があります。
4. Key を漏らした、またはもう見えない
OpenAI の safety guidance は明快です。Key を rotate して、環境の値を置き換えてください。Service accounts では secret が作成時に一度しか表示されないことも忘れないでください。失われた後に dashboard の hidden value を探すのが正解ではありません。新しい secret を作るのが正解です。
もう一つ時間を無駄にしやすいミスがあります。API Platform の org / project IDs と、他の OpenAI products の identifiers を混同しないことです。開発者は同じ debugging session の中で API Platform docs、ChatGPT Enterprise setup docs、connector docs、community answers を同時に見ることがありますが、それぞれが同じ layer を話しているわけではありません。
覚えておきたい実務ルール
Key は credential、IDs は scope selector と考える。
小さな違いに見えて、これでほぼ全体が解けます。このモデルを採用すると、現在の OpenAI platform は重なった fields の山ではなくなります。Project-scoped key は通常の application calls の default path になり、org と project IDs は本当に必要な時だけ使う explicit routing controls になります。そして admin keys は本来の位置に戻ります。Management plane の credential であって、OpenAI auth の万能解ではありません。
この記事から一文だけ覚えるなら、これです。2026 年の多くの OpenAI API setup は OPENAI_API_KEY から始まり、organization ID 探しから始まるわけではありません。
