「API key not valid. Please pass a valid API key.」— Geminiで最も役に立たないメッセージです。キー自体は通常有効で、周辺の何かが間違っています。リファラー制限、Generative Language APIが有効化されていない、またはAI StudioのキーをVertexエンドポイントに送信している可能性があります。以下の一覧を順番に確認してください。
エラー
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [{ "reason": "API_KEY_INVALID" }]
}
}原因と対処法の概要
| 原因 | 対処法 |
|---|---|
| キーの制限(HTTPリファラー/IP)によるサーバー呼び出しのブロック | Google Cloud Console → Credentialsで、リファラー制限付きのキーはサーバー側のリクエストを拒否します。制限のないキーを使うか、API単位で制限してください。 |
| プロジェクトでGenerative Language APIが有効になっていない | AI Studio形式のキーでは「Generative Language API」を有効にしてください。 |
| AI StudioキーとVertex AIエンドポイントの不一致 | AIza…キーはgenerativelanguage.googleapis.comを呼び出します。Vertexは別のホスト上でOAuthまたはサービスアカウントを使用します。両者を混同しないでください。 |
| サポートされていないリージョン | AI Studioキーはすべての国で利用できるわけではありません。提供状況を確認するか、ゲートウェイ経由でルーティングしてください。 |
| 環境変数の受け渡し(引用符/空白/変数名の誤り) | 失敗しているプロセス内でprint(repr(key))を実行し、正しい値を再エクスポートしてください。 |
キーを単独でテストする
RESTエンドポイントに対してcurlを1回実行すれば、キー自体が正常かどうかを確認できます。
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"contents":[{"parts":[{"text":"ping"}]}]}' | head -c 400制限と有効化済みAPIを確認する
Cloud Console → APIs & Services → Credentialsでキーを開きます。Application restrictionsが「HTTP referrers」の場合、サーバー呼び出しは400になります。NoneまたはIPベースに変更してください。次に、同じプロジェクトでGenerative Language APIが有効になっていることを確認します。
いずれにしても多くのモデルで使える1つのキーが必要な場合
Gemini、Claude、GPTのキーを使い分けているなら、OpenAI互換ゲートウェイで1つの認証情報にまとめられます。同じコード、1つのbase_url、Google Cloudプロジェクトは不要です。
Kunavo経由で呼び出している場合
Kunavoは、ClaudeやGPTと同じOpenAI互換エンドポイントおよびsk-knキーでGemini 2.5 FlashとProを提供します。Google Cloudプロジェクトも、デバッグが必要なキー制限も不要で、AI Studioキーが提供されていないリージョンでも動作します。料金はGoogleの公式価格を大幅に下回り、どのOpenAI SDKでも設定は3項目です。
よくある質問
Geminiキーはローカルでは機能するのに、本番では失敗するのはなぜですか?
通常は、リファラー/IP制限(本番IPが許可されていない)、本番で別の環境変数ファイルを使っている、または本番プロジェクトでGenerative Language APIが有効になっていないことが原因です。環境間でキーのreprとプロジェクトIDを比較してください。
Gemini APIは無料ですか?
AI Studioには厳しい1分あたりのクォータを持つ無料枠があります。本番トラフィックには請求を有効化する必要があります(またはゲートウェイを使用します)。キーエラーではなくクォータエラーが発生している場合は、RESOURCE_EXHAUSTEDガイドをご覧ください。