{
  "lang": "ja",
  "ページ": "https://x402-catalog-history.ai-business-surface.workers.dev/ja/news-headlines-api",
  "title": "news headlines api — 4トピック・14フィードを 0.005 USDC で1回、402 は 23,389 B（実測）",
  "h1": "news headlines api を払う前に — /news の 402・入力検証・無料プレビューの有無",
  "description": "news headlines api を探している買い手向けに、2026-10-19 の /news を支払いなしで測りました。未払い GET は 402・本文 23,389 B・payment-required ヘッダ 4,344 B・143〜631 ms（7通りすべて同一 SHA-256）で、宣言価格は 0.005 USDC（5000 atomic）。topic と limit の不正値は課金前に 400 で止まり、本文は 203〜284 B でした。?preview=1 を付けても 402 のままで、free_preview は null、/news/sample は 404・3,201 B。納品記録は 1 件・最終 2026-10-16T11:43:03Z・success_24h=0 です。",
  "検索語": "news headlines api",
  "読者の問い": "news headlines api は、払う前に何が分かるのか。無料で見出しを試せるのか。",
  "実測日": "2026-10-19 JST",
  "実測": {
    "caption": "/news の無課金実測（2026-10-19 JST・公開URL・支払いなし）",
    "columns": [
      "リクエスト",
      "応答",
      "本文",
      "応答時間",
      "備考"
    ],
    "rows": [
      [
        "GET /news",
        "402",
        "23,389 B",
        "461〜631 ms",
        "ヘッダ 4,344 B・0.005 USDC"
      ],
      [
        "GET /news?topic=markets&limit=20",
        "402",
        "23,389 B",
        "163〜175 ms",
        "既定値と同じ本文"
      ],
      [
        "GET /news?topic=crypto&limit=1",
        "402",
        "23,389 B",
        "143 ms",
        "トピックを変えても同サイズ"
      ],
      [
        "GET /news?limit=50",
        "402",
        "23,389 B",
        "163 ms",
        "上限ちょうども 402"
      ],
      [
        "GET /news?preview=1",
        "402",
        "23,389 B",
        "172 ms",
        "無料プレビューは無い"
      ],
      [
        "GET /news?topic=nope",
        "400",
        "284 B",
        "145 ms",
        "invalid_topic"
      ],
      [
        "GET /news?limit=0",
        "400",
        "203 B",
        "147 ms",
        "limit_below_min"
      ],
      [
        "GET /news?limit=51",
        "400",
        "204 B",
        "126 ms",
        "limit_above_max"
      ],
      [
        "GET /news?limit=abc",
        "400",
        "222 B",
        "132 ms",
        "invalid_limit"
      ],
      [
        "GET /news/sample",
        "404",
        "3,201 B",
        "150 ms",
        "サンプル経路は無い"
      ]
    ],
    "note": "402 は 7 通り（既定／markets,20／crypto,1／limit=50／preview=1／topic 空／limit 空）すべて本文 23,389 B・同一 SHA-256（先頭16桁 793DFD27B0FB7CD2）。宣言価格は本文 price.amount_usd=0.005・amount_atomic=5000・network=base・asset=USDC。400 は 4 件とも payment-required ヘッダ 0 B。応答時間は逐次 wall clock で、コールドスタートは未分離。"
  },
  "見出し": [
    "結論: 0.005 USDC で最大50件。無料プレビューは無い",
    "実測: パラメータを変えても 402 は 23,389 B・同一ハッシュ",
    "400 で止まる境界 — topic と limit は課金前に検証される",
    "無料プレビューは無い — preview=1 も /news/sample も 402/404",
    "納品記録は 1 件、直近24時間は 0",
    "この実測で分からないこと",
    "買う前のチェックリスト",
    "次の一歩"
  ],
  "本文": [
    {
      "見出し": "結論: 0.005 USDC で最大50件。無料プレビューは無い",
      "html": "<p><code>/news</code> は <strong>0.005 USDC（5,000 atomic）で公開 RSS の見出しを1回返す</strong>経路です。仕様では <strong>4 トピック（markets / crypto / tech / world）・14 フィード・過去48時間・新しい順・最大50件（既定20件）</strong>。<strong>topic と limit を変えても、未払いの応答は 402 のまま</strong>でした。</p><p>今回の実測で分かったのは、<strong>無料で確かめられるのは「生きている・価格・入力の範囲」まで</strong>で、<strong><code>?preview=1</code> を付けても 402</strong>、<strong>無料サンプル経路も無い</strong>ことです。402 本文の <code>free_preview</code> は <code>null</code> で、<code>free_preview_note</code> は「この経路に別の無料サンプルは無い」と明記していました。</p>"
    },
    {
      "見出し": "実測: パラメータを変えても 402 は 23,389 B・同一ハッシュ",
      "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>/news</code></td><td>402</td><td>23,389 B</td><td>4,344 B</td><td>461・631 ms</td></tr>\n<tr><td><code>?topic=markets&amp;limit=20</code></td><td>402</td><td>23,389 B</td><td>4,344 B</td><td>163・175 ms</td></tr>\n<tr><td><code>?topic=crypto&amp;limit=1</code></td><td>402</td><td>23,389 B</td><td>4,344 B</td><td>143 ms</td></tr>\n<tr><td><code>?limit=50</code></td><td>402</td><td>23,389 B</td><td>4,344 B</td><td>163 ms</td></tr>\n<tr><td><code>?preview=1</code></td><td>402</td><td>23,389 B</td><td>4,344 B</td><td>172 ms</td></tr>\n</tbody>\n</table>\n<p>7 通りの 402 は<strong>本文 23,389 B・ヘッダ 4,344 B・SHA-256 の先頭16桁 <code>793DFD27B0FB7CD2</code> がすべて一致</strong>しました。<strong>402 は topic も limit も反映しません</strong>。つまり <strong>「402 が返った＝自分のクエリが正しい」とは言えません</strong>。入力の正しさは 400 か 402 かでしか分からず、正しい入力でも 402 の中身は同じです。</p><p>宣言価格は本文の <code>price.amount_usd=0.005</code>、<code>amount_atomic=5000</code>、<code>network=base</code>、<code>asset=USDC</code>。<code>accepts[0]</code> は 10 項目・<code>maxTimeoutSeconds=60</code>・<code>x402Version=1</code>。同じ 402 には<strong>この価格以下の経路が 40 本</strong>載っており、最も安いのは <code>/pick</code> の 0.001 USDC でした。</p>"
    },
    {
      "見出し": "400 で止まる境界 — topic と limit は課金前に検証される",
      "html": "<p>支払いを伴わない入力を 4 通り投げました。<strong>4 件とも課金前の 400</strong> で、<code>payment-required</code> ヘッダは付いていません。</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>topic=nope</code></td><td>400</td><td>284 B</td><td>145 ms</td><td><code>invalid_topic</code></td></tr>\n<tr><td><code>limit=0</code></td><td>400</td><td>203 B</td><td>147 ms</td><td><code>limit_below_min</code></td></tr>\n<tr><td><code>limit=51</code></td><td>400</td><td>204 B</td><td>126 ms</td><td><code>limit_above_max</code></td></tr>\n<tr><td><code>limit=abc</code></td><td>400</td><td>222 B</td><td>132 ms</td><td><code>invalid_limit</code></td></tr>\n</tbody>\n</table>\n<p>本文には <strong>「No feed was read and no payment is requested.」</strong> と書かれています。仕様の範囲は <strong>topic が markets / crypto / tech / world、limit が 1〜50 の整数</strong>。範囲外と数値でない値は<strong>上流の RSS を読む前に拒否</strong>されるので、買い手は<strong>無料でクエリの形を検証できます</strong>。</p><p>一方で<strong>空の値は 400 になりません</strong>。<code>?topic=</code> と <code>?limit=</code> はどちらも <strong>402・23,389 B</strong> で、既定値（markets・20件）として扱われているようです。<strong>「空文字＝不正」ではない</strong>ので、必須パラメータだと思って空のまま払わないよう注意してください。</p>"
    },
    {
      "見出し": "無料プレビューは無い — preview=1 も /news/sample も 402/404",
      "html": "<p><code>?preview=1</code> は <strong>402・23,389 B・172 ms</strong> で、<code>preview</code> は課金条件を変えませんでした。402 本文の <code>free_preview</code> は <strong><code>null</code></strong>、<code>free_preview_note</code> は <strong>「This route has no separate free sample」</strong>。無料サンプル経路も無く、<code>/news/sample</code> は <strong>404・3,201 B・150 ms</strong>（<code>not_found</code>）です。</p><p><strong>払う前に見えるのは 402 の本文・ヘッダと、無料の <code>/openapi.json</code> に書かれた仕様だけ</strong>です。その仕様は <strong>200・192,167 B・157 ms・64 paths</strong> で読めました。<code>/news</code> には <strong>topic が markets|crypto|tech|world（既定 markets）、limit が 1〜50（既定20）、返る形が <code>{topic, count, freshness{max_age_hours, newest_published_at, oldest_published_at, fetched_at, items_within_window, dropped_older_than_window, dropped_undated}, items[{title, url, published_at, source, age_minutes}], sources[{source, feed_url, ok, http_status, items_in_window, latency_ms}]}</code></strong> と書かれています。<strong>これは仕様であって、実際の 200 本文の実測ではありません</strong>。</p>"
    },
    {
      "見出し": "納品記録は 1 件、直近24時間は 0",
      "html": "<p>同時刻の <code>/status.json</code> は <strong>200・23,560 B・7,857 ms・55 経路</strong>。<code>/news</code> は <strong>価格 0.005 USDC・納品 1 件・最終成功 2026-10-16T11:43:03.383Z・<code>success_24h=0</code>・<code>last_status=200</code>・<code>data_status=observed</code></strong> でした。</p><p><strong>402 が返る＝今も納品されている、ではありません</strong>。今回の 402 は 7/7 で返りましたが、<strong>納品記録は 1 件だけ</strong>で、直近 24 時間の成功は 0 件です。<strong>「今払えるか」は 402 で、「過去に納品されたか」は <code>/status.json</code> で</strong>分けて見てください。<code>/status.json</code> の 7,857 ms は集計処理のコストで、<code>/news</code> の 143〜631 ms とは別物です。</p>"
    },
    {
      "見出し": "この実測で分からないこと",
      "html": "<ul>\n<li><strong>有料の 200 本文は未取得</strong>。0.005 USDC を払っていないため、<code>count</code> の実際の値・<code>items</code> の中身・<code>published_at</code> の形式・<code>age_minutes</code> の計算・<code>freshness</code> の実値は<strong>未確認</strong>です。数字はすべて 400/402/404 の手前までです。</li>\n<li><strong>RSS の取得と鮮度フィルタは実動作を確認していません</strong>。14 フィードが同時刻に生きているか、48時間より古い見出しが実際に落ちるか、重複除去が効くかは 200 を取るまで分かりません。</li>\n<li><strong>境界値の内側は未測定</strong>。400 になったのは 0・51・abc と不正 topic だけで、limit=1 と limit=50 が 402 になることは確認しましたが、200 で何件返るかは未確認です。</li>\n<li><strong>topic の大文字小文字</strong>は <code>MARKETS</code> も 402 でしたが、これは小文字化されて通ったのか、402 が入力を反映しないだけなのか区別できません。</li>\n<li><strong>検索順位は未測定</strong>。この記事は検索語 <code>news headlines api</code> をタイトルに置いただけで、順位は測っていません。</li>\n</ul>"
    },
    {
      "見出し": "買う前のチェックリスト",
      "html": "<p>この実測から、<code>/news</code> を買う前に無料でできる確認は次の 4 つです。<strong>① <code>/news</code> が 402 を返すか</strong>（143〜631 ms、本文 23,389 B が目安）、<strong>② topic が 4 つのどれか</strong>（違えば 400 <code>invalid_topic</code>）、<strong>③ limit が 1〜50 の整数か</strong>（0・51・abc は 400）、<strong>④ <code>/status.json</code> で過去の納品と最終成功を見る</strong>（今回は 1 件・<code>success_24h=0</code>）。</p><p><strong>200 の中身は買うまで分かりません</strong>。無料プレビューが無いので、<strong>「見出しの質」を確かめてから買う経路は用意されていません</strong>。仕様と 402 の宣言を読み、0.005 USDC を失ってもよい1回として試すのが正直なところです。</p>"
    },
    {
      "見出し": "次の一歩",
      "html": "<p>同じ 0.005 USDC 帯は <a href=\"https://x402-catalog-history.ai-business-surface.workers.dev/ja/cheap-utilities\"><code>/ja/cheap-utilities</code></a>（gas・random・LEI・news の比較）、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"
}
