{
  "lang": "ja",
  "ページ": "https://x402-catalog-history.ai-business-surface.workers.dev/ja/secure-random-api",
  "title": "secure random api — 0.001 USDC の /random を無料プレビューで確かめる（12通り実測）",
  "h1": "secure random api を払う前に — /random の 402・400・無料プレビューを実測",
  "description": "secure random api を探している買い手向けに、2026-10-19 の /random を支払いなしで測りました。402 はパラメータを4通り変えても本文 16,788 B・同一 SHA-256 で、宣言価格は 0.001 USDC。bytes=0・1025・abc・format=nope は課金前に 400（本文 210〜260 B）。無料の preview=1 は 12通りすべて 200・1,418 B で同一本文でしたが、value と sha256 は含まれず「not_in_a_preview」に明記されていました。",
  "検索語": "secure random api",
  "読者の問い": "secure random api は、払う前に何が分かるのか。無料プレビューで乱数の値そのものを確認できるのか。",
  "実測日": "2026-10-19 JST",
  "実測": {
    "caption": "/random の無課金実測（2026-10-19 JST・公開URL・支払いなし）",
    "columns": [
      "リクエスト",
      "応答",
      "本文",
      "応答時間",
      "備考"
    ],
    "rows": [
      [
        "GET /random",
        "402",
        "16,788 B",
        "672 ms",
        "既定値（bytes=32・hex）"
      ],
      [
        "GET /random?bytes=32&format=hex",
        "402",
        "16,788 B",
        "519 ms",
        "本文 SHA は既定値と同一"
      ],
      [
        "GET /random?bytes=16&format=base64",
        "402",
        "16,788 B",
        "459 ms",
        "本文 SHA は既定値と同一"
      ],
      [
        "GET /random?bytes=16&format=uuid",
        "402",
        "16,788 B",
        "430 ms",
        "本文 SHA は既定値と同一"
      ],
      [
        "GET /random?preview=1",
        "200",
        "1,418 B",
        "434 ms",
        "value なし・12通りすべて同一"
      ],
      [
        "GET /random/sample",
        "404",
        "3,203 B",
        "525 ms",
        "サンプル経路は無い"
      ]
    ],
    "note": "402 の4通りは本文がすべて同一（SHA-256 先頭16桁 B72B7DC3A9EB1A0F）。400 は bytes=0 が 210 B、bytes=1025 が 215 B、bytes=abc が 238 B、format=nope が 260 B で、応答は 429〜533 ms。プレビュー12通りは 381〜480 ms で本文 SHA は E9D2E723E037C8BA。"
  },
  "見出し": [
    "結論",
    "実測: 402 は4通りとも同一",
    "400 で止まる境界",
    "無料プレビューは「値」を返さない",
    "納品記録は 402 とは別",
    "この実測で分からないこと",
    "次の一歩"
  ],
  "本文": [
    {
      "見出し": "結論",
      "html": "<p><code>/random</code> は <strong>0.001 USDC（1000 atomic）で 1 回 1 値を返す</strong>経路です。今回の実測で分かったのは、<strong>無料で確かめられるのは「生きている・価格・対応形式・バイト数の範囲」まで</strong>で、<strong>乱数の値そのものは無料プレビューに入っていない</strong>ことです。402 の案内文は <code>try_before_you_pay</code> で「払う前に値を見よ」と案内しますが、プレビューの <code>not_in_a_preview.value</code> は「the random bytes themselves」と明記しています。</p><p>もう一つの実測は、<strong>402 のチャレンジがパラメータに依存しない</strong>ことです。<code>bytes</code> と <code>format</code> を4通り変えても、返る本文は <strong>16,788 B で SHA-256 が同一</strong>でした。<strong>支払う前に「このパラメータで何が返るか」を 402 の本文から区別することはできません</strong>。パラメータの妥当性は、<strong>400 で止まるかどうか</strong>だけが無料の信号です。</p>"
    },
    {
      "見出し": "実測: 402 は4通りとも同一",
      "html": "<table>\n<thead><tr><th>リクエスト</th><th>応答</th><th>本文</th><th>payment-required ヘッダ</th><th>応答時間</th></tr></thead>\n<tbody>\n<tr><td><code>/random</code></td><td>402</td><td>16,788 B</td><td>4,048 B</td><td>672 ms</td></tr>\n<tr><td><code>?bytes=32&amp;format=hex</code></td><td>402</td><td>16,788 B</td><td>4,052 B</td><td>519 ms</td></tr>\n<tr><td><code>?bytes=16&amp;format=base64</code></td><td>402</td><td>16,788 B</td><td>4,050 B</td><td>459 ms</td></tr>\n<tr><td><code>?bytes=16&amp;format=uuid</code></td><td>402</td><td>16,788 B</td><td>4,058 B</td><td>430 ms</td></tr>\n</tbody>\n</table>\n<p>4本とも <strong>402・本文 16,788 B・SHA-256 先頭16桁 <code>B72B7DC3A9EB1A0F</code></strong> で、<strong>バイト数もハッシュも一致</strong>しました。ヘッダは 4,048〜4,058 B で 10 B だけ差がありますが、これは <code>CF-RAY</code> など Cloudflare 側のヘッダを含むためで、支払い条件の差ではありません。</p><p>宣言価格は本文の <code>price.amount_usd=0.001</code>、<code>accepts[0].maxAmountRequired=1000</code>、<code>network=base</code>。ヘッダ側は V2 表記で <code>amount=1000</code>、<code>network=eip155:8453</code> です。<code>maxTimeoutSeconds=60</code>、<code>accepts[0]</code> は 10 項目。<strong>同じ 0.001 USDC を V1 本文と V2 ヘッダで別表記</strong>しており、買い手のクライアントはどちらか一方だけを読めば足ります。</p><p>402 本文には <strong>0.001 USDC 以下で買える 18 経路</strong>（<code>/pick</code>・<code>/gas</code>・<code>/random</code> など）も列挙されていました。<strong>「乱数が欲しい」以外の用途なら、同じ価格帯の別経路を先に比べられます</strong>。</p>"
    },
    {
      "見出し": "400 で止まる境界",
      "html": "<p>支払いを伴わない不正入力を4通り投げました。すべて<strong>課金前に 400</strong> で、402 は返っていません。</p>\n<table>\n<thead><tr><th>送ったもの</th><th>応答</th><th>本文</th><th>応答時間</th><th>error</th></tr></thead>\n<tbody>\n<tr><td><code>?bytes=0</code></td><td>400</td><td>210 B</td><td>444 ms</td><td><code>invalid_bytes</code></td></tr>\n<tr><td><code>?bytes=1025</code></td><td>400</td><td>215 B</td><td>533 ms</td><td><code>invalid_bytes</code></td></tr>\n<tr><td><code>?bytes=abc</code></td><td>400</td><td>238 B</td><td>429 ms</td><td><code>invalid_bytes</code></td></tr>\n<tr><td><code>?format=nope</code></td><td>400</td><td>260 B</td><td>454 ms</td><td><code>invalid_format</code></td></tr>\n</tbody>\n</table>\n<p>402 本文の説明では <code>bytes 1-1024</code>、<code>format hex|base64|uuid</code>。実測はその境界と一致し、<strong>0 と 1025 は課金前に拒否</strong>されました。<strong>401 や 402 ではなく 400 で返るので、買い手は無料で自分の指定を検証できます</strong>。これは 1 回 0.001 USDC の経路では実用的で、<strong>無効な指定で払ってしまう事故を先に防げます</strong>。</p><p>ただし、<strong>bytes=1〜1024 の各値が本当にその長さで返るかは未確認</strong>です。400 にならないことと、200 の本文が正しいことは別です。</p>"
    },
    {
      "見出し": "無料プレビューは「値」を返さない",
      "html": "<p><code>/random?preview=1</code> は <strong>200・1,418 B・381〜480 ms</strong>。12通り（既定・bytes=16/1/1024/0/1025・format の3種・不正値）を投げましたが、<strong>12本すべて同じ本文</strong>（SHA-256 先頭16桁 <code>E9D2E723E037C8BA</code>）でした。プレビューはパラメータを読まず、<strong>固定の商品説明</strong>を返します。</p><p>中身は <code>product_id</code>、<code>preview: true</code>、<code>summary</code>（<code>service_alive=true</code>、<code>source=crypto.getRandomValues</code>、<code>min_bytes=1</code>、<code>max_bytes=1024</code>、<code>default_bytes=32</code>、<code>formats=[hex,base64,uuid]</code>、価格 0.001 USDC）、そして <code>not_in_a_preview</code> です。<code>not_in_a_preview</code> には <strong><code>value</code>（乱数そのもの）・<code>sha256</code>（納品値のハッシュ）・<code>delivery_evidence</code>（payer・tx・receipt）</strong>の3つが明記されています。</p><p>つまり<strong>プレビューで確かめられるのは「生きている・価格・形式・範囲」まで</strong>で、<strong>乱数の品質・分布・毎回異なるかは無料では見えません</strong>。402 の <code>receive.free_preview_note</code> は「Free: look at the value before paying.」と書いていますが、<strong>実際に返るのは value ではなく商品票</strong>です。この記事の実測では、<strong>案内文とプレビューの中身が一致していません</strong>。買い手としては<strong>「無料で値が見える」と期待して待たない</strong>のが安全です。</p><p><code>/random/sample</code> は <strong>404・3,203 B・525 ms</strong> で、<code>/gas/sample</code> のような無料サンプル経路は <code>/random</code> にはありません。</p>"
    },
    {
      "見出し": "納品記録は 402 とは別",
      "html": "<p>同時刻の <code>/status.json</code> は <strong>200・22,621 B・8,282 ms</strong> で、<strong>51 経路中 13 経路だけが納品記録あり</strong>、残りは <code>no_data</code> でした。<code>/random</code> は <strong>納品 2 件・最終 2026-10-16T15:50:33.442Z・success_24h=0</strong>、<code>data_status=observed</code> です。</p><p><strong>402 が返る＝納品実績がある、ではありません</strong>。今回の 402 は 4/4 で返りましたが、<code>/random</code> の納品記録は 2 件で、直近 24 時間は 0 件です。<strong>「今払えるか」は 402 で、「過去に納品されたか」は /status.json で</strong>分けて見てください。</p><p>無料面は <code>/health</code> <strong>200・2,089 B・471 ms</strong>、<code>/openapi.json</code> <strong>200・182,057 B・660 ms</strong> でした。<code>/status.json</code> の 8,282 ms は集計処理のコストで、経路の生死とは別です。</p>"
    },
    {
      "見出し": "この実測で分からないこと",
      "html": "<ul>\n<li><strong>有料の 200 本文は未取得</strong>。支払い・SMS・KYC を伴う操作はしていないため、<code>value</code> の実際の長さ・<code>sha256</code> が値と一致するか・<code>uuid</code> が v4 か・毎回異なるかは<strong>未確認</strong>です。数字はすべて 400/402/200 の手前までです。</li>\n<li><strong>乱数の品質・分布・予測不能性は測っていません</strong>。<code>source=crypto.getRandomValues</code> は 402 本文の自己申告で、独立に検証したわけではありません。</li>\n<li><strong>応答時間は同時刻の反復計測ではなく</strong>、公開URLへの逐次リクエストの wall clock です。コールドスタートの影響は分離していません。</li>\n<li><strong>検索順位は未測定</strong>。この記事は検索語 <code>secure random api</code> をタイトルに置いただけで、順位は測っていません。</li>\n</ul>"
    },
    {
      "見出し": "次の一歩",
      "html": "<p>同じ 0.001 USDC 帯の比較は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/cheap-utilities\"><code>/ja/cheap-utilities</code></a>、402 の読み方は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/is-x402-endpoint-alive\"><code>/ja/is-x402-endpoint-alive</code></a>、買い手の順序は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/x402-usage\"><code>/ja/x402-usage</code></a>、納品されないときは <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/x402-payment-not-delivering\"><code>/ja/x402-payment-not-delivering</code></a> に実測でまとめています。仕様の全体は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/openapi.json\"><code>/openapi.json</code></a>、納品記録は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/status.json\"><code>/status.json</code></a> で無料で読めます。</p>"
    }
  ],
  "一覧": "https://x402-catalog-history.ai-business-surface.workers.dev/ja"
}
