Pokékipe Public API
ポケモン競技分析を無料で。Smogon が毎月公開する利用統計をベースに、毎月更新されます。ライトな用途ならアカウント不要。アカウント設定から個人キーを発行すれば、バルク取得時のレート制限の上限を引き上げられます。
エンドポイント
100+
対応フォーマット
30+
更新
毎月
認証
任意
ライセンス
CC BY 4.0
存在理由
この API は何で、何ではないか
/api/v1/ に対してコードを 1 行書く前に、知っておくべき 4 つのこと。
この API とは
ポケモン競技データに対する読み取り専用の JSON 層。「今月の Gen 9 OU、1500+ ELO のメタは?」「このトーナメントの Top Cut でこのポケモンを止めたのは誰?」といった問いに、安定して文書化された形で 1 リクエストで答えます。
データの出どころ
Smogon の月次バトルログ (公開されている chaos JSON)、公式トーナメントのフィード (Pokémon Company、VGC、Smogon Tour)、コミュニティ運営のイベントについては Limitless TCG などのコミュニティソース。Pokékipe はその上で取り込み、正規化、エンリッチを行い、整理した結果をこの API として公開しています。
この API ではないもの
Pokémon Showdown へのライブブリッジでも、対戦シミュレーターでも、ダメージ計算機のエンドポイントでも、チームビルダーでもありません。それらのツールはサイト本体にあります。API はその下のデータレイヤーです。
出典へのクレジット
クレジットは出典に。Smogon、chaos 形式の JSON を公開してくれているエクスポーター、そして毎月実際にプレイしているコミュニティ。このデータセットが存在するのは彼らのおかげです。Pokékipe はそれをクエリ可能にしているだけで、元データを所有しているわけではありません。
はじめに
30 秒でいちばん最初の呼び出し
フォーマット一覧を取得する、コピペで動く 3 つのサンプル。APIキー不要、セットアップ不要、サインアップ不要。言語タブを選んで、貼り付けて、実行するだけ。
curl -s https://pokekipe.com/api/v1/formats \
| jq '.[0:3]'パスは下のリファレンスにあるどのエンドポイントにも置き換えられます。最初の呼び出しはキャッシュが温まっていれば 1 秒以内に返ります。
認証
認証とレート制限
匿名の呼び出しでもライトな用途には十分です。アカウント設定から発行できる個人キー (無料) は、データを大量に取得するアナリストやツール開発者向けにレート制限の上限を引き上げます。キーは新しいエンドポイントを開放するものではなく、上限を上げるだけです。
匿名 (キーなし)
デフォルトヘッダーを何も付けずに呼び出してください。バケットは IP ごとなので、セッション中に数件のリクエストを送る程度の小さなスクリプトや LLM エージェントなら、まず制限には触れません。
- アカウント不要、サインアップ不要、ヘッダー設定も不要。
- IP ごとのバケット。アドホックなスクリプトや LLM エージェントの tool-use に向きます。
- バルク取得を続けると 429 が返ります。そのときは個人キーに切り替えてください。
/ 分
60
/ 日
5,000
全レスポンスに付くヘッダー
成功レスポンスにはすべて、下記のレート制限ヘッダーが付きます。クライアントはこれを見るだけでリトライなしに自分のペースを調整できます。レスポンスごとに 1 度読み、Remaining がゼロになる前、残り数件の段階で減速してください。
| ヘッダー | 意味 |
|---|---|
| X-RateLimit-Tier | あなたが属するティア。匿名 (キーなし)、または認証済み (JWT または APIキーが解決済み)。 |
| X-RateLimit-Limit-Min | ティア別の 1 分あたりの上限 (匿名 60、認証済み 600)。 |
| X-RateLimit-Limit-Day | ティア別の 1 日あたりの上限 (匿名 5 000、認証済み 100 000)。 |
| X-RateLimit-Remaining-Min | 現在の 1 分ウィンドウで残っている呼び出し回数。ゼロが近づいたら減速してください。 |
| X-RateLimit-Remaining-Day | 現在の 1 日ウィンドウで残っている呼び出し回数。毎日同じ時刻にリセットされます。 |
| Retry-After | 429 のときだけ送信されます。リトライまでこの秒数だけ待機してください。1 分ウィンドウなら通常 60 秒未満です。 |
エラー
起こりうるエラー
標準の HTTP ステータスコードです。ボディは常に JSON で、原因を示す "detail" フィールドを含みます。4xx はリクエスト側の契約違反、5xx はこちらの問題 (バックオフしてリトライ) として扱ってください。
OK
OK。ボディはリファレンスに記載された JSON ペイロードです。空配列は「行がない」という意味であり、「欠損」ではありません。失敗ではなくデータとして扱ってください。
Not Modified
Not Modified。キャッシュヘッダーが検証されました。再パースは不要で、キャッシュ済みのボディをそのまま使えます。If-None-Match か If-Modified-Since を送ると自動で返ります。
Bad Request
Bad Request。クエリパラメータかボディの形が不正です。detail メッセージに該当のフィールド名が入っています。入力を直さずにリトライしないでください。
Unauthorized
Unauthorized。APIキーかセッションが必要なリクエストですが、いずれも提示されなかったか、認証情報が無効/失効しています。同じまま再送せず、認証情報を発行し直してください。
Not Found
Not Found。パスやリソースが存在しません。Pokémon ごとのルートでは、その Pokémon にまだ使用データがないだけのことが多く、こちらのタイポではありません。
Too Many Requests
Too Many Requests。レート制限の上限に達しました。Retry-After を読んで待ってください。指数バックオフは行儀がよいですが、ウィンドウが短いのでほぼ不要です。
Server Error
Internal Server Error。こちら側で何かが落ちました。数秒待って 1 回だけリトライしてください。続くようならリクエスト URL を添えて Discord で連絡をお願いします。
Service Unavailable
Service Unavailable。デプロイ中か一時的に過負荷です。バックオフしながらリトライしてください。状況はコミュニティ Discord で告知します。
基本ルール
利用規約
基本ルールは 4 つ。一度読んでおけば、未来の自分が Discord で質問する手間を 1 つ減らせます。
出典へのクレジット
再配布や再公開の際はクレジット表記が必要です。Pokékipe (https://pokekipe.com へのリンク)、および毎月公開元の chaos JSON を提供している Smogon にクレジットを記載してください。
ベストエフォート、SLA なし
ベストエフォート、SLA はありません。データは「現状のまま」提供され、稼働率の保証はありません。積極的にキャッシュし、エンドポイントが遅いときや 429 を返すときは穏やかにフォールバックしてください。
バージョニング
/api/v1/ 配下のスキーマは v1 のライフサイクル中、後方互換を保ちます。破壊的変更は /api/v2/ に分離し、Discord で事前告知のうえ、旧パスには sunset ヘッダーを付けます。
商用利用
商用利用は CC BY 4.0 のもとで自由に行えます。この API の上に何かを作ったら、ぜひコミュニティ Discord で教えてください。
全エンドポイントを 1 か所で
すべてのエンドポイントを、説明、パラメータ表、リクエスト/レスポンスのスキーマ、curl・JavaScript・Python のコードサンプルとセットで閲覧できます。1 つの検索ボックスから API 全体を検索でき、任意のオペレーションへのディープリンクや URL の共有もそのまま行えます。
- 100+ エンドポイント
- ·
- 3-pane ナビ・本文・サンプル
- ·
- 全文検索
- ·
- ライブのリクエストサンプル