AIのサービスやWordPressのプラグインを使っていると、「APIキーを入力してください」という欄に出会います。
APIキーって、そもそも何なのか。
自分は、WordPressのAI連携でAPIキーを入れたことがあって、自分のGitHubにキーが漏れていないかも点検しました。
その経験と一緒に、APIキーの基本をまとめます。
APIキーって、パスワードみたいなもの?
近い。「どこからの呼び出しか」を伝える合言葉。だから人に見せちゃだめ。
APIキーとは?(一言で)
APIキーは、プログラムからサービスを呼び出すときに、一緒に送る長い文字列です。
サービスは、このキーを見て、どの契約やプロジェクトに結びつく呼び出しかを見分けます。
キーだけで、操作している本人まで確かめるわけではありません。
APIは、プログラム同士がやり取りするための窓口のこと。
その窓口で見せる会員証が、APIキー、みたいなイメージです。
Google Cloudの公式ドキュメントでは、APIキーは呼び出しをプロジェクトに結びつけて、料金や利用上限の集計に使うもの、と説明されています。
キーで呼び出した分は、キーを作ったプロジェクトの利用量として数えられる、ということです。
どんなときに出てくる?
- AIのサービス(Anthropic・OpenAI・Geminiなど)を、自分のプログラムやプラグインから使うとき
- WordPressのプラグインで、外部のサービスとつなぐとき(AI連携、地図、翻訳など)
- 自分で書いたスクリプトから、Googleなどのサービスのデータを取るとき
APIキーの基本
漏れると、他人に使われる
キーは、知った人にも使われるおそれがあります。
特に、使える場所やAPIを制限していないキーが漏れると、他人に使われて、自分のプロジェクトの利用量や請求に影響することがあります。
漏れるって、どこから?
よくあるのは、コードにキーを書いたまま、GitHubに上げちゃうパターン。
使える範囲をしぼれる
Google Cloudでは、キーごとに「どのAPIに使えるか」「どのサイトやアプリから使えるか」を制限できます。
公式ドキュメントでも、制限のないキーは安全ではないとして、制限をかけることがすすめられています。
APIキーとOAuthの違い
APIキーは、どの契約やプロジェクトに結びつく呼び出しかを見分けるものです。
一方で、YouTubeへの動画アップロードのように「本人として操作する」ときは、OAuthという仕組みを使います。
OAuthは、本人がGoogleにログインして「このアプリに許可する」を押すと、アプリにトークンが渡される仕組みです。
自分のYouTubeのアップロードも、APIキーではなく、このOAuthのトークンで動かしています。
自分が試したこと・点検したこと
WordPressのAI連携に、AnthropicのAPIキーを入れた
WordPressのAI連携を、ローカルの環境で試したことがあります。
プラグインの設定画面に「APIキーを入力してください」という欄があって、Anthropicのキーを入れたら、すぐ「接続済み」になりました。
ただ、機能を試したらエラー。
コンソールには「Your credit balance is too low to access the Anthropic API」と出ていて、原因は、APIを呼び出すためのクレジット残高が足りないことでした。
「接続済み」の表示と、機能を実際に使えることは別だったんです。
キーが通っても、使った分を払える状態になっていないと動きません。
GitHubにキーが漏れていないか、全履歴まで点検した
Xで「GitHubでAPIキーを検索すると、公開されたキーが大量に見つかる」という投稿を見て、自分のリポジトリも点検しました。
点検はClaude Codeにやらせてます。
cat’s handのリポジトリは4つで、どれも非公開(private)です。
今のファイルだけでなく、過去の全コミットまで、キーの形の文字列を探してもらいました。
調べた4つのリポジトリでは、キーのパターンに一致するものは0件でした。
YouTubeの認証情報のファイルも、.gitignore(Gitに入れないファイルの一覧)に入っていて、一度もコミットされていませんでした。
今のファイルだけじゃ、だめなの?
Gitは昔の版も残る。今消しても、前のコミットに残ってたら見えちゃう。
APIキーやトークンでハマった例
- WordPress公式のAI連携を試したら、またクレジット残高で止まった話 … APIキーは通ったのに、残高不足で機能が動かなかった
- YouTube APIのinvalid_grant … APIキーではなくOAuthのトークンが、7日で切れる設定だった
迷ったときの確認ポイント
- 入力欄が出たら、まず、そのプラグインがどのサービスのキーを求めているかを確認する
- キーは、使うサービスの公式の管理画面で作る。有料のサービスなら、料金の設定を確認してから、プラグインやツールの入力欄に入れる
- キーは、コードに直接書かず、別のファイルや設定に分けて、Gitに入れない
- GitHubに上げる前に、キーが入っていないか確かめる。過去のコミットも含めて
- 使えるAPIや、使える場所を制限できるサービスなら、制限をかける
- 漏れたかもと思ったら、そのキーを無効にして、新しいキーを作り直す