iceFetch は、Minecraft Bedrock の NetherNet サーバーのステータス確認と、サーバーが提示する ICE candidate の取得ができる、小さな無料の JSON API を公開しています。サイト上のツールと同じことを行えます。
| エンドポイント | できること |
|---|---|
GET /api/info?host=&port=&tls= | サーバーの /v1/join ステータス JSON(名前・バージョン・人数など)を返します。 |
POST /api/offer | シグナリングの offer を送信し、{ candidates[], answer, iceUfrag, … } を返します。 |
# ステータス
curl "https://icefetch.tools.kt04.com/api/info?host=play.example.net&port=19132"
# candidate
curl -X POST https://icefetch.tools.kt04.com/api/offer \
-H 'content-type: application/json' \
-d '{"host":"play.example.net","port":19132}'
/api/offer のボディ: host(必須)、port(既定 19132)、networkId(任意・10 進 uint64)、tls(自動判定。true/false で強制)、fresh(120 秒キャッシュを無視)。
// GET /api/info — クエリ文字列
host : string // 必須 — ホスト名または IP
port : number // 任意、既定 19132
tls : "true" | "false" // 任意 — 省略時は自動判定
// 200 →
{ ok: boolean, status: number, tls: boolean, info: object | null }
// POST /api/offer — Content-Type: application/json
{
host : string, // 必須
port? : number, // 既定 19132
networkId?: string, // 10進 uint64(1〜20桁)。省略時はランダム
tls? : boolean, // 省略時は自動判定
fresh? : boolean // true = 120 秒キャッシュを無視
}
// 200 →
{
ok: boolean,
answer: string, // 生の SDP answer
candidates: Candidate[],
answerFingerprint: string,
iceUfrag: string,
exhausted: boolean, // 200 だが candidate 0 件 = サーバーの UDP ポートプール枯渇
cached?: boolean, stale?: boolean
}
Candidate = {
raw: string, foundation: string, component: number, transport: string,
priority: number, address: string, port: number, type: string,
relatedAddress?: string, relatedPort?: number
}
エラー時はどちらのエンドポイントも { ok: false, error: … }(error は文字列、または { httpStatus, body } 等のオブジェクト)を 4xx/5xx ステータスで返します。
制限は 3 種類あり、それぞれ独立して適用されます。
429 を返します。急なスパイクをならすためのもので、月間クォータとは別です。host:port)はキャッシュミス時に 1 分あたり最大 2 回しか probe しません。これにより /api/offer がサーバーの NetherNet UDP ポートプールを枯渇させることはありません。同じサーバーへの繰り返しの照会は、120 秒の間キャッシュから返されます。スロットル中でキャッシュもない場合は { ok: false, error: "target throttled …" } を返します(fresh:true は本当にライブ probe が必要なときだけ)。| キーなし(IP ごと) | API キーあり | |
|---|---|---|
/api/info | 月 2,000 回 | 月 20,000 回 |
/api/offer | 月 200 回 | 月 2,000 回 |
すべての応答に、現在のクォータがヘッダで含まれます。
X-RateLimit-Scope: ip | key
X-RateLimit-Limit: <月間の上限>
X-RateLimit-Remaining: <今月の残り回数>
X-RateLimit-Reset: <クォータがリセットされる unix 時刻>
クォータを使い切ると、API は HTTP 429 を Retry-After ヘッダとともに返します。
次のいずれかのヘッダでキーを送ります。
X-API-Key: ice_xxxxxxxx
# または
Authorization: Bearer ice_xxxxxxxx
read:user)で、リポジトリにはアクセスせず、こちらから何かを投稿することもありません。GitHub でサインインすると、無料アカウントが作成され API キーを取得できます。
GitHub でサインインツール解説記事APIプライバシー規約 · iceFetch は Mojang および Microsoft とは無関係です。