このメッセージはGoogleの包括的なエラーです。送信したキーをこの呼び出しに使用できなかったという意味です。キーそのものが間違っている場合とは異なり、5つの原因のうち4つではキー自体は完全に有効です。そのため、キーを再コピーしても通常は解決しません。
エラー
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [{ "reason": "API_KEY_INVALID" }]
}
}原因と対処法の概要
| 原因 | 対処法 |
|---|---|
| キーのプロジェクトでGenerative Language APIが有効になっていない | そのプロジェクトで有効化してから1分待ってください。有効化直後のAPIは短時間、リクエストを拒否します。 |
| Vertex AIの認証情報をAI Studioエンドポイントに送信している | Vertexはリージョナルホストに対してOAuthを使用します。generativelanguage.googleapis.comが要求するのはAI Studio APIキーです。両者は互換性がありません。 |
| キーにHTTPリファラーまたはIP制限が設定されている | サーバー側の呼び出しにはリファラーがありません。IPで制限するか、バックエンド用に制限のないキーを発行してください。 |
| キーを間違った場所に送っている | Geminiは`x-goog-api-key`または`?key=`を読み取ります。`Authorization: Bearer`ヘッダーは無視されるため、リクエストはキーなしで到着します。 |
| キーが削除された、または想定とは異なるGoogleアカウントのキーである | 再発行で解決する唯一の原因です。AI Studioにログインしているアカウントを確認してください。 |
まずキー単体で検証する
アプリケーションを変更する前に、単純なリクエストでキーを試してください。これが成功してアプリが失敗するなら、キーは正常で、問題はアプリがキーを送信する方法にあります。これにより、最も一般的な3つの原因を一度に排除できます。
curl -s -H "x-goog-api-key: $GEMINI_API_KEY" \
"https://generativelanguage.googleapis.com/v1beta/models" \
| head -20
# 200 + a model list -> the key is valid; look at your client
# 400 API_KEY_INVALID -> the key really cannot call this APIクライアントが実際に送信するヘッダーを確認する
多くのOpenAI形式SDKは認証情報を`Authorization: Bearer`に入れます。GeminiのネイティブAPIはこのヘッダーを読み取らないため、OpenAIクライアントをgenerativelanguage.googleapis.comに直接向けると、完全に有効なキーでもこのエラーが発生します。GoogleのSDKを使うか、ベアラー形式を要求するOpenAI互換エンドポイントを呼び出してください。
from openai import OpenAI
# Bearer auth, OpenAI request shape, Gemini model names.
client = OpenAI(
api_key=KUNAVO_API_KEY,
base_url="https://api.kunavo.com/v1",
)
print(client.chat.completions.create(
model="gemini-2-5-flash",
messages=[{"role": "user", "content": "ping"}],
).choices[0].message.content)400と403を切り分ける
キーが正しく送信されるようになった後に理由がPERMISSION_DENIEDへ変わった場合、キーは読み取られており、スコープ上の理由で拒否されています。これは別の問題で、解決方法も異なります(キー形式ではなくプロジェクト権限)。400から403になったのは後退ではなく進展です。
Kunavo経由で呼び出している場合
KunavoのGeminiカタログは、他のすべてと同じOpenAI形式のエンドポイントと同じ`sk-kn-`キーの背後にあり、通常のベアラートークンとして送信されます。そのため、上記のヘッダー不一致やVertexとAI Studioの違いは、そもそも発生しません。有効化すべきGoogleプロジェクトも、抵触するキー単位のリファラーポリシーもありません。利用者側で確認すべきなのは、キーが有効で、ウォレットに残高があることです。拒否されたリクエストには課金されません。 Geminiのトークン単位の料金は、 Gemini 料金ガイド.
よくある質問
キーを作成したばかりなのに、まだ無効と表示されます。
有効化したばかりのAPIや新しく作成したキーを使うと、最大で1~2分ほどリクエストが拒否されることがあります。それを過ぎても続く場合は、キーが不正なのではなく、プロジェクトにGenerative Language APIがないことがほぼ確実です。
これはクォータを使い切ったという意味ですか?
いいえ。クォータ超過は429 RESOURCE_EXHAUSTED、請求の問題は403として表れます。400 API_KEY_INVALIDがクレジット切れを意味することはありません。
同じキーがAI Studioでは機能するのに、コードでは機能しないのはなぜですか?
AI Studioの呼び出しはGoogle独自のオリジンから行われます。リファラー制限付きキーはそれを許可しますが、リファラーをまったく送信しないサーバーは拒否します。