← すべてのガイド

規約: エンベロープ、カテゴリ、ページング、エラー

すべての MotoGP API エンドポイントに共通するルール — レスポンスエンベロープ、Moto2/Moto3 カテゴリ、ページネーション、識別子、エラーボディ、キャッシュ。

6 分で読めます

このルールを一度覚えれば、どのエンドポイントも期待どおりに動作します。

レスポンスエンベロープ

成功レスポンスはすべて、2 つのキーを持つ JSON オブジェクトです。

キー内容
dataオブジェクト(単一リソース)または配列(一覧)
metatotal、page、size、total_pages — ページングされないエンドポイントでは、ページング関連のフィールドは null
{
  "data": { "year": 2026, "status": "ACTIVE" },
  "meta": { "total": 1, "page": null, "size": null, "total_pages": null }
}

フィールド名は一貫して snake_case です(rider_number、total_points、season_year)。

カテゴリ: MotoGP、Moto2、Moto3

シーズン単位のエンドポイントは、MOTOGP、MOTO2、MOTO3 のいずれかを値とするクエリパラメータ category を受け付けます。class は同じ値を取るエイリアスです。どちらか一方だけを送ってください。

GET /standings/seasons/2026/riders?category=MOTO2
GET /races/seasons/2026?category=MOTO3

結果がデフォルト値に左右されないよう、category は明示的に指定してください。

ページング

「全件取得」エンドポイント(/riders、/teams、/races、/standings)は、page(1 始まり)と size(1〜200、デフォルト 20)でページングされます。

GET /riders?page=2&size=50
"meta": { "total": 118, "page": 2, "size": 50, "total_pages": 3 }

page が total_pages に達するまでループします。

async function getAll(path) {
  const rows = [];
  for (let page = 1; ; page++) {
    const { data, meta } = await getEnvelope(`${path}?page=${page}&size=200`);
    rows.push(...data);
    if (!meta.total_pages || page >= meta.total_pages) return rows;
  }
}

/riders/seasons/{year} のようなシーズン単位の一覧は、シーズン全体を 1 回のレスポンスで返します。

並び順

順位表は position 順で返されます。カレンダーとレース結果の順序は保証されないため、自分でソートしてください。

races.sort((a, b) => a.round_number - b.round_number);
results.sort((a, b) => a.position - b.position);

識別子

リソース検索キー
ライダーレースナンバー: /riders/{rider_number}(例: 93)
チームチーム一覧から得られる不透明な ID: /teams/{id}、または名前: /teams/name/{name}
レースシーズン + ラウンド: /races/seasons/{year}/round/{round}、または不透明な ID: /races/{race_id}/results
シーズン年: /seasons/{year}

不透明な ID("82MQRdM5q7ub4OSm6Jhx")はハードコードせず、一覧レスポンスから取得してください。また、スポンサー名はシーズンごとに変わるため、チームは名前ではなく ID で照合してください。

順位表のタイプ

専用ルート(/riders、/teams、/manufacturers、/bmw-m)のほか、タイプを指定して順位表を取得することもできます。

GET /standings/seasons/2026/type/MANUFACTURER?category=MOTOGP

タイプは RIDER、TEAM、MANUFACTURER、BMW_M です。

エラー

エラーは標準の HTTP ステータスコードと JSON ボディで返されます。

{
  "timestamp": "2026-01-27T19:18:29",
  "status": 404,
  "error": "Not Found",
  "message": "Rider not found with number: 99",
  "path": "/riders/99"
}
ステータス意味対処
400無効なパラメータ(不正な年、未知のカテゴリ)リクエストを修正してください。validation_errors がある場合は問題点が一覧されます
401 / 403RapidAPI キーがない・無効、または未購読2 つのヘッダーとプランを確認してください
404ライダー、チーム、レース、シーズンが存在しない「見つかりません」の状態を表示してください
429プランのレート制限またはクォータに到達時間を置いて再試行するか、プランをアップグレードしてください
5xx一時的なサーバー障害指数バックオフで再試行し、ステータスページを確認してください

キャッシュ

結果と順位はレースウィークエンドごとに変わり、プロフィールはシーズン間で変わります。クォータを節約しページを高速に保つため、積極的にキャッシュしてください。

データ推奨キャッシュ時間
シーズン、ライダー、チーム、キャリア統計24 時間
カレンダー12 時間
結果と順位レースウィークエンドは 1 時間、それ以外は 12 時間

キーはサーバー側に置く

RapidAPI キーは課金に使われる認証情報です。API の呼び出しは、バックエンド、サーバーレス関数、ビルドステップから行ってください。キーがユーザーに配布されてしまうブラウザやモバイルのコードからは決して呼び出さないでください。順位表ガイドで、キャッシュ付きの小さなプロキシを紹介しています。

次のガイド → ライブのチャンピオンシップ順位表を作る