{"openapi": "3.1.0", "info": {"title": "Raikiri shop (radiation data, Bitcoin and Monacoin chain data)", "version": "2026-10-09", "description": "Hourly background radiation measured indoors in Japan with a PocketGeiger Type-6 (10-minute count each hour), since 2022-03. Paid endpoints use L402 (Lightning): no account, no API key. One payment is valid for 1 hour. Human- and agent-readable guide: /llms.txt"}, "servers": [{"url": "https://raikiri.tailb4483.ts.net"}], "paths": {"/v1/radiation/latest": {"get": {"summary": "Latest measurement.", "tags": ["endpoints"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/radiation/summary": {"get": {"summary": "Mean dose rate and number of measurements per year.", "tags": ["endpoints"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/radiation/history": {"get": {"summary": "Hourly measurements in the period (JST, inclusive, up to 366 days).", "tags": ["endpoints"], "parameters": [{"name": "from", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}, {"name": "to", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/radiation/daily": {"get": {"summary": "Daily mean, min and max dose rate in the period (JST, inclusive, any length).", "tags": ["endpoints"], "parameters": [{"name": "from", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}, {"name": "to", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/radiation/all.csv": {"get": {"summary": "Every hourly measurement since 2022-03 as one CSV file (about 38,000 rows).", "tags": ["endpoints"], "parameters": [], "x-price-sats": 100, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/{coin}/tip": {"get": {"summary": "Latest block height, time and header.", "tags": ["chain"], "parameters": [{"name": "coin", "in": "path", "required": true, "schema": {"type": "string", "enum": ["btc", "mona"]}}], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/{coin}/fee": {"get": {"summary": "Fee estimate for confirmation within N blocks (1-25).", "tags": ["chain"], "parameters": [{"name": "coin", "in": "path", "required": true, "schema": {"type": "string", "enum": ["btc", "mona"]}}, {"name": "blocks", "in": "query", "required": false, "schema": {"type": "string"}, "description": "N"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/{coin}/tx/{txid}": {"get": {"summary": "Decoded transaction: inputs, outputs with addresses, raw hex.", "tags": ["chain"], "parameters": [{"name": "coin", "in": "path", "required": true, "schema": {"type": "string", "enum": ["btc", "mona"]}}, {"name": "txid", "in": "path", "required": true, "schema": {"type": "string"}}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/mona/address/{address}": {"get": {"summary": "Monacoin address balance and transaction count.", "tags": ["chain"], "parameters": [{"name": "address", "in": "path", "required": true, "schema": {"type": "string"}}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/mona/address/{address}/txs": {"get": {"summary": "Monacoin address transactions, newest first (up to 500).", "tags": ["chain"], "parameters": [{"name": "address", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}, "description": "N"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/mona/address/{address}/utxo": {"get": {"summary": "Monacoin address unspent outputs.", "tags": ["chain"], "parameters": [{"name": "address", "in": "path", "required": true, "schema": {"type": "string"}}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/hello": {"get": {"summary": "Your first L402 purchase for 1 sat: proves your client can pay and shows what happened step by step. Start here if you have never paid an L402 endpoint.", "tags": ["start_here"], "parameters": [], "x-price-sats": 1, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/directory": {"get": {"summary": "Verified L402 directory: shops listed on 402index.io that our node could actually pay today (checked daily, without paying), with verified price, history and delivery tests; the rest with the reason they fail. Human page at /directory.", "tags": ["directory"], "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}, "description": "WORD"}, {"name": "category", "in": "query", "required": false, "schema": {"type": "string"}, "description": "PREFIX"}, {"name": "max_sats", "in": "query", "required": false, "schema": {"type": "string"}, "description": "N"}], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/survey": {"get": {"summary": "Daily payability check of every L402 shop on 402index.io (no payment): verdict per host.", "tags": ["other"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/survey/weekly": {"get": {"summary": "Weekly state of the L402 market: how many listed hosts are payable, why the rest fail, what changed. One entry per week.", "tags": ["other"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/survey/detail": {"get": {"summary": "The same with URL checked, invoice amount vs listed price, reason, and history.", "tags": ["other"], "parameters": [], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/shops": {"get": {"summary": "Mystery-shopper verdicts for L402 shops: which ones we could pay and which delivered.", "tags": ["other"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/shops/detail": {"get": {"summary": "The same with what was tested, what it cost and what went wrong.", "tags": ["other"], "parameters": [], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/miners/latest": {"get": {"summary": "Latest hashrate, power and temperatures of three small home Bitcoin miners.", "tags": ["other"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/miners/history": {"get": {"summary": "5-minute samples for the period (up to 31 days).", "tags": ["other"], "parameters": [{"name": "from", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}, {"name": "to", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/ln/stats": {"get": {"summary": "What the Lightning fee-policy history covers: period, nodes, channels, policy changes.", "tags": ["lightning"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/ln/market": {"get": {"summary": "Fee market now: distribution of the proportional fee (ppm) over all open public channels.", "tags": ["lightning"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/ln/market/detail": {"get": {"summary": "The same by channel capacity, day by day, plus the 25 nodes that grew and shrank most in 7 days.", "tags": ["lightning"], "parameters": [], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/ln/node/{pubkey}": {"get": {"summary": "A node's channels with current fee policies on both sides and every policy change in the last N days (1-30).", "tags": ["lightning"], "parameters": [{"name": "pubkey", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "days", "in": "query", "required": false, "schema": {"type": "string"}, "description": "N"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/ln/channel/{chan_id}": {"get": {"summary": "A channel's open/close events and the full fee-policy history of both sides.", "tags": ["lightning"], "parameters": [{"name": "chan_id", "in": "path", "required": true, "schema": {"type": "string"}}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/ln/changes": {"get": {"summary": "Network-wide fee-policy changes in the order we saw them (up to 5000 per call; continue with cursor=next_cursor).", "tags": ["lightning"], "parameters": [{"name": "since", "in": "query", "required": false, "schema": {"type": "string"}, "description": "UNIX"}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "string"}, "description": "N"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/mempool/latest": {"get": {"summary": "Last full hour of our Bitcoin mempool record (RBF replacements, fee recommendations) and the latest block.", "tags": ["mempool"], "parameters": [], "x-price-sats": 0, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}}}}, "/v1/mempool/hourly": {"get": {"summary": "Hourly rows for the period (up to 31 days).", "tags": ["mempool"], "parameters": [{"name": "from", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}, {"name": "to", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/mempool/blocks": {"get": {"summary": "Per-block results for the period: fee range, median fee, pool, when our node first saw it.", "tags": ["mempool"], "parameters": [{"name": "from", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}, {"name": "to", "in": "query", "required": true, "schema": {"type": "string"}, "description": "YYYY-MM-DD"}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}, "/v1/l402check": {"get": {"summary": "Diagnose any L402 endpoint (and any Lightning option offered through x402) without paying it: does it answer 402 with a token and an invoice, does the invoice decode, and is there a route from a real Lightning node? Returns a verdict and advice.", "tags": ["tools"], "parameters": [{"name": "url", "in": "query", "required": true, "schema": {"type": "string"}, "description": "https://..."}], "x-price-sats": 10, "responses": {"200": {"description": "OK (JSON, or CSV for all.csv)"}, "402": {"description": "Payment required: pay the Lightning invoice in WWW-Authenticate, then retry with Authorization: L402 <macaroon>:<preimage>"}}, "security": [{"L402": []}]}}}, "components": {"securitySchemes": {"L402": {"type": "http", "scheme": "L402", "description": "L402 (Lightning). Pay the invoice in the 402 response, then retry with 'Authorization: L402 <macaroon>:<preimage>'."}}}}