本文へスキップ
RandNext
Esc

RandNext API

48種類のRandNextツールに対応する無料の読み取り専用JSONエンドポイントです。APIキーなしで、数字、色、日付、サイコロ、厳選項目などを生成できます。バージョン1のベースパスは /api/v1 です。

クイックスタート

curl https://randnext.com/api/v1/jokes/random
curl "https://randnext.com/api/v1/tools/random-number?min=1&max=100&count=5&unique=true"
const res = await fetch("https://randnext.com/api/v1/quotes/random?category=wisdom");
const quote = await res.json();
console.log(`“${quote.text}” — ${quote.author}`);

エンドポイント

厳選コンテンツには一覧、ランダム、ID指定の各エンドポイントがあります。生成ツールはツールのslugに基づく統一エンドポイントを使用します。

リクエスト戻り値
GET /api/v1/{type}/randomランダムな項目を1件
GET /api/v1/{type}?limit=1..20{ data: Item[], count } — 重複しないランダム項目(既定10件)
GET /api/v1/{type}/{id}IDで指定した項目を1件(キャッシュ可能)
GET /api/v1/tools/{slug}対応する44種類のユーティリティツールから結果を生成
GET /api/v1/draws/{id}抽選ピッカーの抽選記録。コミットメント、応募者リストのハッシュ、抽選時刻後に公開されるシードと当選者を含みます。期限を迎えた抽選を読み取ると結果が公開されます。
GET /api/v1/draws/{id}/entriesロック済みの応募者リストを text/plain でバイト単位までそのまま返します。SHA-256は entries_hash です。非公開リストには主催者の管理トークンが必要です。
POST /api/v1/draws/{id}/cancel主催者のみ:抽選時刻前に抽選をキャンセルします。記録はキャンセル済みとして公開されたままです。
PATCH /api/v1/draws/{id}主催者のみ:listed を true または false に設定するか、purge_entries を true にして抽選後に保存済みリストを削除します。
GET /api/v1/healthサービス状態
GET /api/v1/openapi.jsonOpenAPI 3.1記述

抽選主催者の操作では Authorization: Bearer <管理トークン> を送信します。randnext.comまたはサーバー側コードからのみ受け付け、他のウェブサイトからは利用できません。抽選の再計算にはrandnext-draw-v1仕様を使用してください。

クエリパラメータ

  • category — ジョーク:general, programming, dad, pun, animal、引用:inspirational, life, work, humor, wisdom、質問:icebreaker, classroom, friends, deep, would-you-rather、単語:noun, verb, adjective, adverb。
  • safety — family(ファミリー向けのみ)または general(既定:ファミリー向けと一般向け)。成人向けコンテンツは返されません。
  • 単語のみ: min_length, max_length (1~30)、starts_with(1文字)。
  • 生成パラメータはツールごとに異なります。一般的なオプションは count, min, max, group, unique, sort. 各ツールページに実行可能なリクエスト例があります。
  • 不明なパラメータや許容範囲外の値には 400 INVALID_PARAMETER が返されます。

対応ツール

現在48種類のツールに公開エンドポイントがあります。ツールページでパラメータを確認し、そのまま実行できるcurlリクエストをコピーできます。

レスポンス

ユーティリティ生成ツールは統一された形式で返します:

{
  "tool": "random-number",
  "data": [
    { "value": "18" },
    { "value": "72" }
  ],
  "count": 2,
  "permalink": "https://randnext.com/random-number"
}

厳選コンテンツのエンドポイントでは、より詳しい出典とライセンス情報も返します:

{
  "id": "qt_000001",
  "type": "quote",
  "text": "Well done is better than well said.",
  "author": "Benjamin Franklin",
  "category": "wisdom",
  "tags": [],
  "language": "en",
  "safety_level": "family",
  "source_url": null,
  "license": "public-domain",
  "attribution": "Poor Richard’s Almanack (1737)",
  "permalink": "https://randnext.com/random-quote?id=qt_000001"
}

attribution が null でない場合は、コンテンツの横に必ず表示してください。

エラー

{ "error": { "code": "RATE_LIMITED", "message": "Too many requests. Please try again later." } }
400INVALID_PARAMETERパラメータが無効です。例:不明なカテゴリ、範囲外のlimit。
401UNAUTHORIZED抽選主催者の操作のみ:管理トークンがないか、正しくありません。
404NOT_FOUND種類またはIDが不明、項目が削除済み、または条件に一致する項目がありません。
409CONFLICT抽選主催者の操作のみ:現在の抽選状態では操作できません。
429RATE_LIMITEDリクエストが多すぎます。Retry-Afterに示された秒数だけ待ってください。
500INTERNAL_ERRORサーバー側で問題が発生しました。
503SERVICE_UNAVAILABLE一時的に利用できないか、メンテナンス中です。

制限とキャッシュ

  • IPアドレスごとに1分あたり60件、1日あたり1,000件です。すべてのレスポンスに X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset が含まれます。
  • ランダムエンドポイントはキャッシュされません。ID指定のレスポンスと確定済み抽選記録は最大1時間キャッシュされる場合があります。
  • 任意のオリジンからのGETリクエストでCORSを利用できます。

利用条件

  • 無料利用には、randnext.comへの「Powered by RandNext」リンクを見える場所に表示する必要があります。
  • attribution フィールドがある場合は必ず表示してください。
  • コンテンツライブラリ全体をダウンロードして再公開または再販売しないでください。
  • SLAはありません。制限の変更や、不正利用トラフィックの遮断を行う場合があります。

サポート

公開APIは現在48種類のツールに対応しています。パスワード、PIN、秘密トークンなどセキュリティ上重要な生成ツールはブラウザ内のみで動作し、生成された秘密情報がサーバーに届くことはありません。APIに関する質問や問題の報告は、support@randnext.comまでエンドポイントとレスポンス状態を添えてメールしてください。