{"ok":true,"data":{"version":"2.0.0","base_url":"https://www.torblockchain.fun","count":176,"groups":[{"name":"chain","description":"Chain, blocks, accounts, records \u2014 the Rust ledger","count":11},{"name":"records","description":"Public window and the permanent private archive","count":2},{"name":"tx","description":"Signed transaction submission","count":1},{"name":"account","description":"Address balances, nonces and roles","count":1},{"name":"admin","description":"Admin-only chain maintenance","count":11},{"name":"tokens","description":"Tokens minted on the chain \u2014 and the permanent public token table","count":11},{"name":"public","description":"Permanent public ledger \u2014 every balance, token, holder and total","count":7},{"name":"pools","description":"AMM pools (TOR + token reserves)","count":1},{"name":"coin","description":"TOR coin metadata and the locked price table","count":1},{"name":"auth","description":"Username + password accounts: wallet signup/login and the node admin","count":11},{"name":"payments","description":"Invoices, quotes and real on-chain settlement","count":7},{"name":"contracts","description":"Rust smart-contract registry (authorized nodes only)","count":7},{"name":"workbench","description":"App builders \u2014 DarkWeb web apps + Rust programs (real files, commands, previews)","count":15},{"name":"meme","description":"Meme coin launcher \u2014 on-chain tokens, pools, swaps and DEX seams","count":20},{"name":"nft","description":"AI-NFT Studio \u2014 mint, catalogue, metadata and the NFT chat","count":5},{"name":"tor","description":"Tor daemon control (ADD_ONION, NEWNYM)","count":4},{"name":"ollama","description":"Local Ollama runtime, models and the command brain","count":15},{"name":"tools","description":"The fetch-data tool and the natural-language command deck","count":2},{"name":"policy","description":"The 30-day public data window \u2014 what is permanent, what expires","count":2},{"name":"ipfs","description":"IPFS metadata pinning (Pinata) and gateway resolution","count":3},{"name":"dev","description":"Developer API keys \u2014 buy in TOR, call /api/v1 with x-api-key","count":6},{"name":"market","description":"Price & market-cap engine, pools, project directory, banner rotation, the OpenRouter ChatBox and TOR Pump","count":18},{"name":"docs","description":"The machine-readable API description","count":3},{"name":"pricing","description":"","count":1},{"name":"wallets","description":"","count":10},{"name":"ai","description":"","count":1}],"endpoints":[{"name":"chain.health","group":"chain","method":"GET","path":"/api/health","summary":"Node liveness, height and whether the Rust node is reachable.","params":[],"auth":"public","cost_tor":0.0,"returns":"{status, height, node_reachable}","url":"https://www.torblockchain.fun/api/health"},{"name":"chain.info","group":"chain","method":"GET","path":"/api/chain/info","summary":"Chain id, height, head/genesis hash, supply, founder, fee receiver, public window, coin.","params":[],"auth":"public","cost_tor":0.0,"returns":"{chain_id, height, total_supply, founder, fee_receiver, public_ttl_days, coin}","url":"https://www.torblockchain.fun/api/chain/info"},{"name":"chain.verify","group":"chain","method":"GET","path":"/api/chain/verify","summary":"Live supply + founder balance snapshot proving the ledger is intact.","params":[],"auth":"public","cost_tor":0.0,"returns":"{chain_id, height, head_hash, total_supply, founder_balance, checked_at}","url":"https://www.torblockchain.fun/api/chain/verify"},{"name":"chain.sync","group":"chain","method":"GET","path":"/api/chain/sync","summary":"Sync + replication status: role (origin/replica), the configured origin, the onion link, the block-range catch-up endpoint and the snapshot endpoints.","params":[],"auth":"public","cost_tor":0.0,"returns":"{mode, role, origin, replication, peers, local_height, endpoints, catch_up}","url":"https://www.torblockchain.fun/api/chain/sync"},{"name":"chain.sync_audit","group":"chain","method":"GET","path":"/api/chain/sync/audit","summary":"AUTOMATED SYNC CHECK \u2014 fetch every block from the node, re-hash each one (sha3-256 over the canonical block payload), walk prev_hash links, compare genesis/head and probe each configured peer.","params":[],"auth":"public","cost_tor":0.0,"returns":"{verdict: in-sync|drift|node-down, blocks_checked, height, errors, peers, replication, checked_at}","url":"https://www.torblockchain.fun/api/chain/sync/audit"},{"name":"chain.sync_snapshot","group":"chain","method":"GET","path":"/api/chain/sync/snapshot","summary":"THE REPLICATION SOURCE \u2014 the whole ledger (state + every block + txs) as one verifiable snapshot, straight from this node's Rust ledger. A replica pulls this.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{standard, chain_id, height, head_hash, genesis_hash, state, blocks: [{block, txs}]}","url":"https://www.torblockchain.fun/api/chain/sync/snapshot"},{"name":"chain.sync_pull","group":"chain","method":"POST","path":"/api/chain/sync/pull","summary":"REPLICA PULL \u2014 fetch the origin snapshot, re-hash every block + the state root here, then import it into this node's ledger (state.json + blocks.jsonl swapped atomically). Refuses to roll back unless force=true.","params":[{"name":"origin","in":"json","type":"string","required":false,"description":"origin base URL (defaults to sync.origin_url)","example":"https://oneness.onrender.com"},{"name":"force","in":"json","type":"bool","required":false,"description":"adopt even at the same height / behind","example":false},{"name":"origin_token","in":"json","type":"string","required":false,"description":"the origin's admin token (defaults to sync.origin_token)"}],"auth":"admin","cost_tor":0.0,"returns":"{origin, imported, skipped, reason, origin_height, local_height_before, height, head_hash, tokens, accounts, records}","url":"https://www.torblockchain.fun/api/chain/sync/pull"},{"name":"chain.blocks","group":"chain","method":"GET","path":"/api/chain/blocks","summary":"A block range, oldest first \u2014 the endpoint peers use to catch up.","params":[{"name":"from","in":"query","type":"int","required":false,"description":"first height","example":0},{"name":"to","in":"query","type":"int","required":false,"description":"last height","example":25}],"auth":"public","cost_tor":0.0,"returns":"{blocks: [{height, hash, prev_hash, timestamp, txs}]}","url":"https://www.torblockchain.fun/api/chain/blocks"},{"name":"chain.block","group":"chain","method":"GET","path":"/api/chain/block/{ref}","summary":"One block by height or by hash.","params":[{"name":"ref","in":"path","type":"string","required":true,"description":"height or 64-char block hash","example":0}],"auth":"public","cost_tor":0.0,"returns":"{height, hash, prev_hash, timestamp, txs}","url":"https://www.torblockchain.fun/api/chain/block/{ref}"},{"name":"chain.tx","group":"chain","method":"GET","path":"/api/chain/tx/{txid}","summary":"One record; records past the public window need the node operator's admin session.","params":[{"name":"txid","in":"path","type":"string","required":true,"description":"","example":"tx_0000000000001"}],"auth":"public-or-admin","cost_tor":0.0,"returns":"{txid, kind, from, to, amount, token, visibility}","url":"https://www.torblockchain.fun/api/chain/tx/{txid}"},{"name":"chain.events","group":"chain","method":"GET","path":"/api/chain/events","summary":"Events still inside the 30-day public window.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"1-500","example":20}],"auth":"public","cost_tor":0.0,"returns":"{events: [...], note}","url":"https://www.torblockchain.fun/api/chain/events"},{"name":"records.public","group":"records","method":"GET","path":"/api/public/records","summary":"Public records (the ledger keeps everything after the window, privately).","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":20}],"auth":"public","cost_tor":0.0,"returns":"{window_days, records: [...]}","url":"https://www.torblockchain.fun/api/public/records"},{"name":"records.private","group":"records","method":"POST","path":"/api/private/records","summary":"Permanently archived (expired) records \u2014 the operator's admin session required.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":50}],"auth":"admin","cost_tor":0.0,"returns":"{records: [...]}","url":"https://www.torblockchain.fun/api/private/records"},{"name":"admin.archive","group":"admin","method":"POST","path":"/api/admin/archive","summary":"Seal every record whose 30-day public window closed into the private archive.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{sealed, height}","url":"https://www.torblockchain.fun/api/admin/archive"},{"name":"tx.submit","group":"tx","method":"POST","path":"/api/chain/tx","summary":"Submit an Ed25519-signed transaction to the ledger.","params":[{"name":"kind","in":"json","type":"string","required":true,"description":"transfer|deposit|withdraw|token_create|pool_create|swap|mint","example":"transfer"},{"name":"from","in":"json","type":"string","required":true,"description":"signer TOR1\u2026onion"},{"name":"to","in":"json","type":"string","required":true,"description":"destination TOR1\u2026onion"},{"name":"amount","in":"json","type":"int","required":true,"description":"microTOR for TOR, whole units for a token"},{"name":"token","in":"json","type":"string","required":false,"description":"token symbol, null for TOR"},{"name":"nonce","in":"json","type":"int","required":true,"description":"","example":0},{"name":"timestamp","in":"json","type":"int","required":true,"description":"unix seconds, \u00b1900 s of node time"},{"name":"pubkey_base58","in":"json","type":"string","required":true,"description":""},{"name":"signature","in":"json","type":"string","required":true,"description":"base58 Ed25519"}],"auth":"signature","cost_tor":0.0,"returns":"{accepted, height, head_hash, records: [...]}","url":"https://www.torblockchain.fun/api/chain/tx"},{"name":"account.get","group":"account","method":"GET","path":"/api/account/{address}","summary":"Public: balance, token holdings, nonce and role for one address \u2014 balances are permanent public ledger data.","params":[{"name":"address","in":"path","type":"string","required":true,"description":"TOR1\u2026onion","example":"TOR12xd7zywc3iuwcls3fqzsozkgo5ahv3gnonion"}],"auth":"public","cost_tor":0.0,"returns":"{address, pubkey_base58, balance, balance_micro, tokens, nonce, role, created_at}","url":"https://www.torblockchain.fun/api/account/{address}"},{"name":"tokens.list","group":"tokens","method":"GET","path":"/api/tokens","summary":"Every token minted on this chain.","params":[],"auth":"public","cost_tor":0.0,"returns":"{SYMBOL: {name, symbol, supply, decimals, owner}}","url":"https://www.torblockchain.fun/api/tokens"},{"name":"pools.list","group":"pools","method":"GET","path":"/api/pools","summary":"AMM pools (TOR + token reserves).","params":[],"auth":"public","cost_tor":0.0,"returns":"{SYMBOL: {token_reserve, tor_reserve}}","url":"https://www.torblockchain.fun/api/pools"},{"name":"tokens.public","group":"tokens","method":"GET","path":"/api/tokens/public","summary":"THE PERMANENT PUBLIC RECORD \u2014 price, pools, market cap, 24h volume, supply, circulating supply, holder count, mint address and owner for every token, plus the chain-wide totals. This data outlives the 30-day window.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"records of the public window used for 24h volume","example":500}],"auth":"public","cost_tor":0.0,"returns":"{standard, count, tokens: [{symbol, name, mint_address, mint_address_kind, owner, supply, decimals, circulating, in_pools, holders, price_tor, pools, liquidity_tor, market_cap_tor, volume_24h_tor, volume_24h_swaps, image, image_source, image_rank, updated_at}], totals, window_days, permanent_fields, images, node_reachable, balances_endpoint}. Every price is TOR-denominated: this node quotes no fiat rate.","url":"https://www.torblockchain.fun/api/tokens/public"},{"name":"tokens.images","group":"tokens","method":"GET","path":"/api/tokens/images","summary":"Token logos resolved from public metadata (CoinGecko top coins by market cap, DexScreener fallback for tickers CoinGecko does not know), cached on disk for 24 h.","params":[{"name":"refresh","in":"query","type":"bool","required":false,"description":"force a metadata refresh before answering (admin-only endpoint does this)","example":false}],"auth":"public","cost_tor":0.0,"returns":"{standard, source, store, images: {SYMBOL: {image, source, rank, coingecko_id, name}}, count, fetched_at, age_seconds, ttl_hours, stale, enabled, dex_fallback, last_error, note}","url":"https://www.torblockchain.fun/api/tokens/images"},{"name":"tokens.images_refresh","group":"tokens","method":"POST","path":"/api/tokens/images/refresh","summary":"Force a CoinGecko/DexScreener logo refresh now (admin) and return the refreshed cache. Whatever the refresh learns is mirrored onto this node straight away.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{refreshed: {refreshed_at, count, fetched_at, stale, last_error, store, logos}, images: {\u2026}}","url":"https://www.torblockchain.fun/api/tokens/images/refresh"},{"name":"tokens.images_mirror","group":"tokens","method":"POST","path":"/api/tokens/images/mirror","summary":"Copy every cached token logo onto this node (data/metadata/token-logos) so the pages draw them from /assets/tokens/<SYMBOL>.<ext>: no third-party image host, no hotlink block, works over Tor and offline. Idempotent \u2014 an already-mirrored picture is skipped unless force is set.","params":[{"name":"symbols","in":"json","type":"string","required":false,"description":"only these tickers (a list or a comma-separated string)","example":"BTC,ETH"},{"name":"limit","in":"json","type":"int","required":false,"description":"pictures to copy in this run","example":500},{"name":"force","in":"json","type":"bool","required":false,"description":"re-copy logos this node already mirrored","example":false}],"auth":"admin","cost_tor":0.0,"returns":"{standard, store, dir, route, enabled, mirrored, skipped, failed: [{symbol, error}], bytes, capped, count, total, at}","url":"https://www.torblockchain.fun/api/tokens/images/mirror"},{"name":"tokens.bootstrap_plan","group":"tokens","method":"GET","path":"/api/tokens/bootstrap","summary":"What the top-N market-cap token bootstrap would mint right now: ranked tickers, names, which already exist, and the total 5 TOR-per-token fee. Read-only.","params":[],"auth":"public","cost_tor":0.0,"returns":"{standard, run, plan: {limit, supply, to_create, existing, fee, source, warning}}","url":"https://www.torblockchain.fun/api/tokens/bootstrap"},{"name":"tokens.bootstrap","group":"tokens","method":"POST","path":"/api/tokens/bootstrap","summary":"MINT THE TOP-N MARKET-CAP TOKENS \u2014 real on-chain token_create transactions (5 TOR each from the wallet), ranked by market cap from the cached public metadata, idempotent (existing tickers are skipped). dry_run is the default; pools=true also seeds a TOR pool per token.","params":[{"name":"limit","in":"json","type":"int","required":false,"description":"1-250","example":100},{"name":"supply","in":"json","type":"int","required":false,"description":"whole-token supply each","example":1000000},{"name":"wallet","in":"json","type":"string","required":false,"description":"signing wallet name","example":"founder"},{"name":"dry_run","in":"json","type":"bool","required":false,"description":"plan only (default true)","example":false},{"name":"pools","in":"json","type":"bool","required":false,"description":"also seed a 10 TOR pool","example":false},{"name":"pool_tor","in":"json","type":"float","required":false,"description":"","example":10.0},{"name":"pool_share","in":"json","type":"int","required":false,"description":"supply / pool_share goes into the pool","example":10}],"auth":"admin","cost_tor":0.0,"returns":"{dry_run, created: [{symbol, name, rank, txid, height, pool}], created_count, skipped, failed, fee, elapsed_seconds, replicate}","url":"https://www.torblockchain.fun/api/tokens/bootstrap"},{"name":"tokens.universe","group":"tokens","method":"GET","path":"/api/tokens/universe","summary":"THE 120-ASSET UNIVERSE \u2014 the top 100 assets by market cap plus the top 20 Solana memecoins, each with price (USD), market cap, total supply and one logo. Key-less public providers with two fallbacks each (CoinGecko \u2192 CoinPaprika \u2192 CoinLore; CoinGecko's solana-meme-coins \u2192 GeckoTerminal \u2192 DexScreener); the answer names the provider that answered.","params":[{"name":"majors","in":"query","type":"int","required":false,"description":"how many top-100 assets (default 100)","example":100},{"name":"memes","in":"query","type":"int","required":false,"description":"how many Solana memecoins (default 20)","example":20}],"auth":"public","cost_tor":0.0,"returns":"{standard, count, majors: {requested, returned, source, attempts}, memes: {requested, returned, source, attempts}, rows: [{symbol, name, list, rank, price_usd, market_cap_usd, supply, supply_basis, source, source_id, token_address, image, image_source}], images, duplicates, fetched_at, age_seconds, ttl_hours, stale, errors, warning}","url":"https://www.torblockchain.fun/api/tokens/universe"},{"name":"tokens.universe_refresh","group":"tokens","method":"POST","path":"/api/tokens/universe/refresh","summary":"FETCH THE UNIVERSE NOW (admin) \u2014 walk every provider in fallback order, cache the result on disk and report which provider answered each list and which one errored.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{refreshed_at, count, majors, memes, images, errors, store}","url":"https://www.torblockchain.fun/api/tokens/universe/refresh"},{"name":"tokens.fleet_status","group":"tokens","method":"GET","path":"/api/tokens/fleet","summary":"THE 120-TOKEN FLEET RECORD \u2014 one wallet per asset, one token in each: wallet name, address and public key, ticker, name, supply, price, market cap, logo and transaction, plus the live plan for the next run.","params":[],"auth":"public","cost_tor":0.0,"returns":"{standard, store, run, plan, manifest: {count, wallets, updated_at, totals, document}, entries: [{position, list, symbol, name, supply, price_usd, market_cap_usd, image, wallet: {name, address, pubkey_base58, key_file}, txid, height}]}","url":"https://www.torblockchain.fun/api/tokens/fleet"},{"name":"tokens.fleet","group":"tokens","method":"POST","path":"/api/tokens/fleet","summary":"MINT THE 120-TOKEN FLEET (admin) \u2014 generate one Ed25519 wallet per asset, fund it from the founder, mint one token in each with the provider's total supply, remember the same logo in the node's logo cache and write data/metadata/token-fleet.json + docs/TOKEN_FLEET.md. dry_run is the default; a ticker that already exists is skipped, never re-minted.","params":[{"name":"majors","in":"json","type":"int","required":false,"description":"how many top-100 assets","example":100},{"name":"memes","in":"json","type":"int","required":false,"description":"how many Solana memecoins","example":20},{"name":"fund_tor","in":"json","type":"float","required":false,"description":"TOR sent to each new wallet (the chain charges 5 TOR per token)","example":6.0},{"name":"founder","in":"json","type":"string","required":false,"description":"wallet that funds the fleet","example":"founder"},{"name":"prefix","in":"json","type":"string","required":false,"description":"wallet-name prefix (fleet001\u2026)","example":"fleet"},{"name":"dry_run","in":"json","type":"bool","required":false,"description":"plan only (default true)","example":false},{"name":"pin_metadata","in":"json","type":"bool","required":false,"description":"also pin each token's metadata to IPFS","example":false}],"auth":"admin","cost_tor":0.0,"returns":"{dry_run, created: [{symbol, name, supply, image, wallet, txid, height}], created_count, failed, skipped, manifest, document, images_remembered, elapsed_seconds}","url":"https://www.torblockchain.fun/api/tokens/fleet"},{"name":"public.ledger","group":"public","method":"GET","path":"/api/public/ledger","summary":"THE PERMANENT PUBLIC LEDGER \u2014 every account with its TOR balance and token balances, every token with supply/circulating/pooled/holders, every pool and the chain-wide totals. Public data: no session, no admin token.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"accounts per page, 1-5000","example":500},{"name":"offset","in":"query","type":"int","required":false,"description":"skip this many accounts","example":0}],"auth":"public","cost_tor":0.0,"returns":"{standard, chain_id, height, head_hash, genesis_hash, micro_per_tor, total_supply_micro, total_supply, founder, fee_receiver, counts, totals, accounts_total, offset, limit, accounts: [{address, balance_micro, balance, token_balances, role, created_at}], tokens: {SYMBOL: {supply, held, in_pools, holders, circulating}}, pools, node_reachable}","url":"https://www.torblockchain.fun/api/public/ledger"},{"name":"public.tokens","group":"public","method":"GET","path":"/api/public/tokens","summary":"The permanent public token table (same document as /api/tokens/public): price, pools, market cap, 24h volume, supply, circulating supply, holder count, mint address, owner and logo for every token.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"records of the public window used for 24h volume","example":500}],"auth":"public","cost_tor":0.0,"returns":"{standard, count, tokens: [{symbol, name, mint_address, owner, supply, decimals, circulating, in_pools, holders, price_tor, pools, liquidity_tor, market_cap_tor, volume_24h_tor, volume_24h_swaps, image}], totals, window_days, permanent_fields, balances_endpoint, tokens_endpoint, totals_endpoint, holders_endpoint}","url":"https://www.torblockchain.fun/api/public/tokens"},{"name":"public.token","group":"public","method":"GET","path":"/api/public/tokens/{symbol}","summary":"One token's public detail: supply, circulating supply, tokens locked in pools, holder count, owner, decimals and its AMM pool with price_tor.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"ticker, TOR for the native coin","example":"LIVE1"}],"auth":"public","cost_tor":0.0,"returns":"{standard, symbol, name, owner, supply, decimals, circulating, in_pools, held, holders, holders_total, pool: {pair, token_reserve, tor_reserve, price_tor}, height, permanent}","url":"https://www.torblockchain.fun/api/public/tokens/{symbol}"},{"name":"public.token_holders","group":"public","method":"GET","path":"/api/public/tokens/{symbol}/holders","summary":"Every address holding a token, largest first, with its amount and share of supply \u2014 public balances, no session.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"LIVE1"},{"name":"limit","in":"query","type":"int","required":false,"description":"holders to return, 1-5000","example":200}],"auth":"public","cost_tor":0.0,"returns":"{standard, symbol, native, supply, in_pools, holders_total, count, limit, holders: [{address, amount, share_percent}], total_amount, height, permanent}","url":"https://www.torblockchain.fun/api/public/tokens/{symbol}/holders"},{"name":"public.balances","group":"public","method":"GET","path":"/api/public/balances","summary":"The public balance sheet: every address on this node with its TOR balance, every token balance it holds and the chain totals. Paginated, public, permanent.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"accounts per page, 1-5000","example":500},{"name":"offset","in":"query","type":"int","required":false,"description":"skip this many accounts","example":0}],"auth":"public","cost_tor":0.0,"returns":"{standard, chain_id, height, count, accounts_total, limit, offset, accounts: [{address, balance_micro, balance_tor, token_balances, token_count, role, created_at}], totals, node_reachable, permanent}","url":"https://www.torblockchain.fun/api/public/balances"},{"name":"public.balance","group":"public","method":"GET","path":"/api/public/balances/{address}","summary":"One address's balances \u2014 public, permanent, no session required (same numbers as /api/account/{address}).","params":[{"name":"address","in":"path","type":"string","required":true,"description":"TOR1\u2026onion","example":"TOR12xd7zywc3iuwcls3fqzsozkgo5ahv3gnonion"}],"auth":"public","cost_tor":0.0,"returns":"{address, pubkey_base58, balance_micro, balance_tor, tokens, token_balances, nonce, role, created_at, public, permanent}","url":"https://www.torblockchain.fun/api/public/balances/{address}"},{"name":"public.totals","group":"public","method":"GET","path":"/api/public/totals","summary":"Chain-wide totals: total supply, accounts, tokens, pools, holders, pooled tokens and per-token supply \u2014 computed from the ledger itself.","params":[],"auth":"public","cost_tor":0.0,"returns":"{standard, chain_id, height, total_supply_micro, total_supply_tor, accounts, accounts_total, tokens, pools, holders, balance_micro, token_supply, node_reachable, permanent}","url":"https://www.torblockchain.fun/api/public/totals"},{"name":"coin.get","group":"coin","method":"GET","path":"/api/coin","summary":"TOR coin metadata: name, symbol, decimals, description, image, logo_url, logo_ipfs, properties.logo_cid.","params":[],"auth":"public","cost_tor":0.0,"returns":"{name, symbol, decimals, description, image, logo_url, logo_ipfs, native_coin_id, properties}","url":"https://www.torblockchain.fun/api/coin"},{"name":"pricing.get","group":"pricing","method":"GET","path":"/api/pricing","summary":"The LOCKED price table (contract 5, mint 3, transfer 0.1).","params":[],"auth":"public","cost_tor":0.0,"returns":"{rows: [{code, label, tor, micro_tor, locked, collected_by}], coin}","url":"https://www.torblockchain.fun/api/pricing"},{"name":"wallets.list","group":"wallets","method":"GET","path":"/api/wallets","summary":"Server-side wallets by name \u2014 the operator's admin session only (it exposes keystore metadata; balances themselves are public at /api/public/balances).","params":[],"auth":"admin","cost_tor":0.0,"returns":"{wallets: [{name, address, balance_tor, role}], count}","url":"https://www.torblockchain.fun/api/wallets"},{"name":"wallets.create","group":"wallets","method":"POST","path":"/api/wallets","summary":"Generate a Phantom-compatible wallet.","params":[{"name":"name","in":"json","type":"string","required":true,"description":"file name","example":"user7"},{"name":"words","in":"json","type":"int","required":false,"description":"12 or 24","example":24}],"auth":"admin","cost_tor":0.0,"returns":"{name, address, pubkey_base58, mnemonic}","url":"https://www.torblockchain.fun/api/wallets"},{"name":"wallets.challenge","group":"wallets","method":"POST","path":"/api/wallets/{name}/challenge","summary":"Start a private balance read: a single-use nonce plus the exact message the wallet must sign (5 minutes).","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"}],"auth":"public","cost_tor":0.0,"returns":"{wallet, address, nonce, message, expires_at, ttl_seconds}","url":"https://www.torblockchain.fun/api/wallets/{name}/challenge"},{"name":"wallets.session","group":"wallets","method":"POST","path":"/api/wallets/{name}/session","summary":"Verify the wallet's Ed25519 signature over the challenge and mint a 1-hour session token (x-wallet-session).","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"},{"name":"nonce","in":"json","type":"string","required":true,"description":""},{"name":"signature","in":"json","type":"string","required":true,"description":"base58 Ed25519"}],"auth":"public","cost_tor":0.0,"returns":"{wallet, address, session, header, expires_at, ttl_seconds}","url":"https://www.torblockchain.fun/api/wallets/{name}/session"},{"name":"wallets.get","group":"wallets","method":"GET","path":"/api/wallets/{name}","summary":"Public: one wallet (address, role, live balances) \u2014 secret material and keystore paths are redacted.","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"}],"auth":"public","cost_tor":0.0,"returns":"{name, address, pubkey_base58, balance_tor}","url":"https://www.torblockchain.fun/api/wallets/{name}"},{"name":"wallets.balance","group":"wallets","method":"GET","path":"/api/wallets/{name}/balance","summary":"Public: live balance from the node \u2014 a balance is permanent public ledger data, no session required.","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"}],"auth":"public","cost_tor":0.0,"returns":"{name, address, balance, balance_tor, tokens, nonce}","url":"https://www.torblockchain.fun/api/wallets/{name}/balance"},{"name":"wallets.history","group":"wallets","method":"GET","path":"/api/wallets/{name}/history","summary":"The last 30 days of this wallet's transactions (the public window): txid, signature and block hash in hex, TOR/token amounts, platform fee, direction and totals.","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"},{"name":"days","in":"query","type":"int","required":false,"description":"1-30 (the public window)","example":30},{"name":"limit","in":"query","type":"int","required":false,"description":"records to scan, 1-2000","example":500}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{address, wallet, days, since, until, count, records: [{txid, txid_hex, signature_hex, block_hash, direction, kind, amount_tor, token, fee_tor, note, height, timestamp}], totals}","url":"https://www.torblockchain.fun/api/wallets/{name}/history"},{"name":"wallets.receive","group":"wallets","method":"GET","path":"/api/wallets/{name}/receive","summary":"Receive panel: the address, the Ed25519 public key (base58 + hex) and a real QR code for each \u2014 owner session or admin.","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{name, address, pubkey_base58, pubkey_hex, chain_id, qr: {address: {svg, version}, pubkey: {svg, version}}}","url":"https://www.torblockchain.fun/api/wallets/{name}/receive"},{"name":"wallets.send","group":"wallets","method":"POST","path":"/api/wallets/{name}/send","summary":"Sign and broadcast a real transfer. The chain itself is fee-free; the node/platform adds its 0.1 TOR fee as a separate transfer.","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"},{"name":"to","in":"json","type":"string","required":true,"description":"TOR1\u2026onion"},{"name":"amount","in":"json","type":"float","required":true,"description":"TOR, not micro","example":1.5},{"name":"token","in":"json","type":"string","required":false,"description":"token symbol for a token transfer"},{"name":"note","in":"json","type":"string","required":false,"description":"public memo"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{txid, height, amount_micro, balance_after, platform_fee}","url":"https://www.torblockchain.fun/api/wallets/{name}/send"},{"name":"wallets.sign","group":"wallets","method":"POST","path":"/api/wallets/{name}/sign","summary":"Build and sign a transaction without broadcasting it.","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"founder"},{"name":"kind","in":"json","type":"string","required":true,"description":"","example":"transfer"},{"name":"to","in":"json","type":"string","required":true,"description":""},{"name":"amount","in":"json","type":"float","required":true,"description":"","example":2},{"name":"token","in":"json","type":"string","required":false,"description":""},{"name":"note","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{signed_tx, message}","url":"https://www.torblockchain.fun/api/wallets/{name}/sign"},{"name":"payments.plans","group":"payments","method":"GET","path":"/api/payments/plans","summary":"Everything that can be bought, with the price in TOR and microTOR.","params":[],"auth":"public","cost_tor":0.0,"returns":"{plans: [{code, label, tor, micro_tor, locked}]}","url":"https://www.torblockchain.fun/api/payments/plans"},{"name":"payments.quote","group":"payments","method":"GET","path":"/api/payments/quote","summary":"Quote one code (and quantity) before charging.","params":[{"name":"code","in":"query","type":"string","required":true,"description":"price code","example":"contract_create"},{"name":"quantity","in":"query","type":"float","required":false,"description":"","example":1}],"auth":"public","cost_tor":0.0,"returns":"{code, label, quantity, tor, micro_tor}","url":"https://www.torblockchain.fun/api/payments/quote"},{"name":"payments.invoices.create","group":"payments","method":"POST","path":"/api/payments/invoices","summary":"Open an invoice for a price code or a custom TOR amount.","params":[{"name":"code","in":"json","type":"string","required":false,"description":"price code","example":"contract_create"},{"name":"amount_tor","in":"json","type":"float","required":false,"description":"custom amount"},{"name":"wallet","in":"json","type":"string","required":false,"description":"payer wallet name"},{"name":"note","in":"json","type":"string","required":false,"description":""}],"auth":"admin","cost_tor":0.0,"returns":"{invoice: {id, code, amount_micro, address, status}}","url":"https://www.torblockchain.fun/api/payments/invoices"},{"name":"payments.invoices.list","group":"payments","method":"GET","path":"/api/payments/invoices","summary":"Newest invoices first.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":25},{"name":"status","in":"query","type":"string","required":false,"description":"open|paid|expired","example":"open"}],"auth":"public","cost_tor":0.0,"returns":"{invoices: [...], totals: {open, paid}}","url":"https://www.torblockchain.fun/api/payments/invoices"},{"name":"payments.invoices.get","group":"payments","method":"GET","path":"/api/payments/invoices/{invoice_id}","summary":"One invoice with its settlement transaction.","params":[{"name":"invoice_id","in":"path","type":"string","required":true,"description":"","example":"inv_0001"}],"auth":"public","cost_tor":0.0,"returns":"{invoice}","url":"https://www.torblockchain.fun/api/payments/invoices/{invoice_id}"},{"name":"payments.invoices.pay","group":"payments","method":"POST","path":"/api/payments/invoices/{invoice_id}/pay","summary":"Pay an invoice from the visitor's own account wallet \u2014 a real signed on-chain transfer. An admin may name any wallet.","params":[{"name":"invoice_id","in":"path","type":"string","required":true,"description":"","example":"inv_0001"},{"name":"wallet","in":"json","type":"string","required":false,"description":"defaults to the signed-in wallet; admins may choose","example":"u_kathy"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{invoice, txid, height}","url":"https://www.torblockchain.fun/api/payments/invoices/{invoice_id}/pay"},{"name":"payments.revenue","group":"payments","method":"GET","path":"/api/payments/revenue","summary":"Settled revenue per price code, straight from the invoice ledger.","params":[],"auth":"public","cost_tor":0.0,"returns":"{total_tor, by_code, count}","url":"https://www.torblockchain.fun/api/payments/revenue"},{"name":"contracts.templates","group":"contracts","method":"GET","path":"/api/contracts/templates","summary":"Rust contract templates that can be deployed (escrow, token gate, subscription).","params":[],"auth":"public","cost_tor":0.0,"returns":"{templates: [{id, name, description, source_bytes}]}","url":"https://www.torblockchain.fun/api/contracts/templates"},{"name":"contracts.list","group":"contracts","method":"GET","path":"/api/contracts","summary":"Programs/contracts. Owners and admins see everything; everyone else sees a summary (no source, state or fees).","params":[],"auth":"public","cost_tor":0.0,"returns":"{contracts: [{id, kind, name, owner_address, status, access}], count}","url":"https://www.torblockchain.fun/api/contracts"},{"name":"contracts.mine","group":"contracts","method":"GET","path":"/api/contracts/mine","summary":"Every program this wallet owns (wallet session required).","params":[],"auth":"wallet-session","cost_tor":0.0,"returns":"{contracts: [...], count, owner_address}","url":"https://www.torblockchain.fun/api/contracts/mine"},{"name":"contracts.create","group":"contracts","method":"POST","path":"/api/contracts","summary":"Deploy a Rust contract (5 TOR, authorized nodes only).","params":[{"name":"name","in":"json","type":"string","required":true,"description":"","example":"escrow-1"},{"name":"template","in":"json","type":"string","required":false,"description":"template id","example":"escrow"},{"name":"source","in":"json","type":"string","required":false,"description":"Rust source (overrides the template)"},{"name":"owner_wallet","in":"json","type":"string","required":false,"description":"who owns it","example":"founder"},{"name":"wallet","in":"json","type":"string","required":false,"description":"wallet that pays the 5 TOR","example":"founder"}],"auth":"wallet-session-or-admin","cost_tor":5.0,"returns":"{contract, txid}","url":"https://www.torblockchain.fun/api/contracts"},{"name":"contracts.get","group":"contracts","method":"GET","path":"/api/contracts/{contract_id}","summary":"One program. Full source/state/compiler/fees for the owner (or admin); a public summary for anyone else.","params":[{"name":"contract_id","in":"path","type":"string","required":true,"description":"","example":"ctr_0001"}],"auth":"public-or-owner","cost_tor":0.0,"returns":"{contract: {..., access: owner|summary|admin}}","url":"https://www.torblockchain.fun/api/contracts/{contract_id}"},{"name":"contracts.call","group":"contracts","method":"POST","path":"/api/contracts/{contract_id}/call","summary":"Manage a program: the owner (wallet session) or an admin applies a function; state is stored and audited.","params":[{"name":"contract_id","in":"path","type":"string","required":true,"description":"","example":"ctr_0001"},{"name":"function","in":"json","type":"string","required":true,"description":"","example":"deposit"},{"name":"args","in":"json","type":"object","required":false,"description":"function arguments"}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{contract, result, state}","url":"https://www.torblockchain.fun/api/contracts/{contract_id}/call"},{"name":"contracts.nodes","group":"contracts","method":"GET","path":"/api/contracts/nodes","summary":"Which nodes may deploy contracts (address + fingerprint; the token is never shown).","params":[],"auth":"public","cost_tor":0.0,"returns":"{nodes: [{name, address, authorized, fingerprint}]}","url":"https://www.torblockchain.fun/api/contracts/nodes"},{"name":"auth.signup","group":"auth","method":"POST","path":"/api/auth/signup","summary":"Create a username + password account and a real Ed25519 wallet; the private key is returned ONCE.","params":[{"name":"username","in":"json","type":"string","required":true,"description":"","example":"kathy"},{"name":"password","in":"json","type":"string","required":true,"description":"at least 8 characters"}],"auth":"public","cost_tor":0.0,"returns":"{account, wallet, one_time: {private_key_base58, mnemonic, shown_once}, session}","url":"https://www.torblockchain.fun/api/auth/signup"},{"name":"auth.login","group":"auth","method":"POST","path":"/api/auth/login","summary":"Sign in with username + password and receive a 1-hour wallet session (x-wallet-session).","params":[{"name":"username","in":"json","type":"string","required":true,"description":"","example":"kathy"},{"name":"password","in":"json","type":"string","required":true,"description":""}],"auth":"public","cost_tor":0.0,"returns":"{account, wallet, session: {session, header, expires_at}}","url":"https://www.torblockchain.fun/api/auth/login"},{"name":"auth.me","group":"auth","method":"GET","path":"/api/auth/me","summary":"The signed-in wallet's account, address, balance and session expiry.","params":[],"auth":"wallet-session","cost_tor":0.0,"returns":"{account, wallet, address, session}","url":"https://www.torblockchain.fun/api/auth/me"},{"name":"auth.logout","group":"auth","method":"POST","path":"/api/auth/logout","summary":"Drop the presented wallet session.","params":[],"auth":"wallet-session","cost_tor":0.0,"returns":"{logged_out}","url":"https://www.torblockchain.fun/api/auth/logout"},{"name":"auth.support","group":"auth","method":"GET","path":"/api/auth/support","summary":"The support email shown on the wallet and admin pages.","params":[],"auth":"public","cost_tor":0.0,"returns":"{email, support_email, note}","url":"https://www.torblockchain.fun/api/auth/support"},{"name":"auth.wallets","group":"auth","method":"GET","path":"/api/auth/wallets","summary":"Up to five wallets this account owns (generated + imported) with live public balances, primary flag and labels.","params":[],"auth":"wallet-session","cost_tor":0.0,"returns":"{account, wallets: [{name, address, pubkey_base58, balance_tor, tokens, primary, meta}], count, max_wallets, primary}","url":"https://www.torblockchain.fun/api/auth/wallets"},{"name":"auth.wallet_generate","group":"auth","method":"POST","path":"/api/auth/wallets","summary":"Generate another Phantom-compatible wallet for this account (password required, 5 wallets max).","params":[{"name":"password","in":"json","type":"string","required":true,"description":"the account password"},{"name":"label","in":"json","type":"string","required":false,"description":"cosmetic name, e.g. savings"},{"name":"words","in":"json","type":"int","required":false,"description":"12 or 24","example":24}],"auth":"wallet-session","cost_tor":0.0,"returns":"{account, wallet, one_time: {private_key_base58, mnemonic, shown_once}, wallets, max_wallets}","url":"https://www.torblockchain.fun/api/auth/wallets"},{"name":"auth.wallet_import","group":"auth","method":"POST","path":"/api/auth/wallets/import","summary":"Import an existing wallet (Phantom private key or 12-24 word recovery phrase) into this account (password required).","params":[{"name":"password","in":"json","type":"string","required":true,"description":""},{"name":"secret_key_base58","in":"json","type":"string","required":false,"description":"Phantom private key (base58, 64 bytes)"},{"name":"mnemonic","in":"json","type":"string","required":false,"description":"12-24 word recovery phrase"},{"name":"label","in":"json","type":"string","required":false,"description":"cosmetic name"}],"auth":"wallet-session","cost_tor":0.0,"returns":"{account, imported, wallet, wallets, max_wallets, note}","url":"https://www.torblockchain.fun/api/auth/wallets/import"},{"name":"auth.wallet_export","group":"auth","method":"POST","path":"/api/auth/wallets/{name}/export","summary":"PASSWORD-AUTHORIZED private key export for one of the account's wallets (key + mnemonic if present).","params":[{"name":"name","in":"path","type":"string","required":true,"description":"","example":"u_kathy-2"},{"name":"password","in":"json","type":"string","required":true,"description":"the account password \u2014 re-checked on every export"}],"auth":"wallet-session","cost_tor":0.0,"returns":"{name, address, pubkey_base58, secret_key_base58, mnemonic, warning}","url":"https://www.torblockchain.fun/api/auth/wallets/{name}/export"},{"name":"auth.wallet_select","group":"auth","method":"POST","path":"/api/auth/wallets/{name}/select","summary":"Move the wallet session onto another wallet the same account owns.","params":[{"name":"name","in":"path","type":"string","required":true,"description":""}],"auth":"wallet-session","cost_tor":0.0,"returns":"{account, wallet, session, wallets, note}","url":"https://www.torblockchain.fun/api/auth/wallets/{name}/select"},{"name":"auth.wallet_primary","group":"auth","method":"POST","path":"/api/auth/wallets/{name}/primary","summary":"Make another owned wallet the default that a login opens (every wallet stays spendable).","params":[{"name":"name","in":"path","type":"string","required":true,"description":""}],"auth":"wallet-session","cost_tor":0.0,"returns":"{account, primary, note}","url":"https://www.torblockchain.fun/api/auth/wallets/{name}/primary"},{"name":"admin.account","group":"admin","method":"GET","path":"/api/admin/account","summary":"Is an admin account registered? Public status drives the register/login panel.","params":[],"auth":"public","cost_tor":0.0,"returns":"{registered, registration_open, username, wallet, fee_receiver, support_email}","url":"https://www.torblockchain.fun/api/admin/account"},{"name":"admin.account_register","group":"admin","method":"POST","path":"/api/admin/account/register","summary":"First-run admin registration (username + password, optional chain admin token). Closed once an account exists.","params":[{"name":"username","in":"json","type":"string","required":true,"description":"","example":"operator"},{"name":"password","in":"json","type":"string","required":true,"description":"at least 8 characters"},{"name":"admin_token","in":"json","type":"string","required":false,"description":"optional chain token, encrypted at rest so chain-level actions work from the session"}],"auth":"public","cost_tor":0.0,"returns":"{account, session, status, support_email}","url":"https://www.torblockchain.fun/api/admin/account/register"},{"name":"admin.account_login","group":"admin","method":"POST","path":"/api/admin/account/login","summary":"Admin login with username + password \u2192 x-admin-session (2 hours).","params":[{"name":"username","in":"json","type":"string","required":true,"description":""},{"name":"password","in":"json","type":"string","required":true,"description":""}],"auth":"public","cost_tor":0.0,"returns":"{account, session, header, expires_at, status}","url":"https://www.torblockchain.fun/api/admin/account/login"},{"name":"admin.account_logout","group":"admin","method":"POST","path":"/api/admin/account/logout","summary":"End the admin session.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{logged_out}","url":"https://www.torblockchain.fun/api/admin/account/logout"},{"name":"admin.account_password","group":"admin","method":"POST","path":"/api/admin/account/password","summary":"Change the admin password (closes every existing session).","params":[{"name":"current_password","in":"json","type":"string","required":true,"description":""},{"name":"new_password","in":"json","type":"string","required":true,"description":""}],"auth":"admin","cost_tor":0.0,"returns":"{account, sessions_closed}","url":"https://www.torblockchain.fun/api/admin/account/password"},{"name":"admin.account_username","group":"admin","method":"POST","path":"/api/admin/account/username","summary":"Change the admin username (password unchanged).","params":[{"name":"password","in":"json","type":"string","required":true,"description":""},{"name":"username","in":"json","type":"string","required":true,"description":""}],"auth":"admin","cost_tor":0.0,"returns":"{account}","url":"https://www.torblockchain.fun/api/admin/account/username"},{"name":"admin.account_delete","group":"admin","method":"DELETE","path":"/api/admin/account","summary":"Delete the admin account and re-enable registration; the wallet file is kept so funds survive.","params":[{"name":"password","in":"json","type":"string","required":true,"description":""}],"auth":"admin","cost_tor":0.0,"returns":"{deleted, registration_open, sessions_closed}","url":"https://www.torblockchain.fun/api/admin/account"},{"name":"admin.account_api_key","group":"admin","method":"POST","path":"/api/admin/account/api-key","summary":"Rotate the platform API key (x-admin-token); the previous key stops working immediately.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{api_key, hint, shown_once, rotated_at}","url":"https://www.torblockchain.fun/api/admin/account/api-key"},{"name":"admin.account_wallet","group":"admin","method":"POST","path":"/api/admin/account/wallet","summary":"Generate a new admin wallet, delete the account's previous wallet and make the new one the fee collector.","params":[],"auth":"admin+chain-token","cost_tor":0.0,"returns":"{wallet, address, fee_receiver, one_time: {private_key_base58}}","url":"https://www.torblockchain.fun/api/admin/account/wallet"},{"name":"admin.fee_receiver","group":"admin","method":"POST","path":"/api/admin/fee-receiver","summary":"Point every platform/service fee at another wallet (the chain admin token authorizes it).","params":[{"name":"address","in":"json","type":"string","required":true,"description":"TOR1\u2026onion","example":"TOR12xd7zywc3iuwcls3fqzsozkgo5ahv3gnonion"}],"auth":"admin+chain-token","cost_tor":0.0,"returns":"{fee_receiver, base_layer_tx_fee_micro, height}","url":"https://www.torblockchain.fun/api/admin/fee-receiver"},{"name":"workbench.projects","group":"workbench","method":"GET","path":"/api/workbench/projects","summary":"Every DarkWeb web app and Rust program on this node \u2014 kind, entry point, size and whether its preview server is running.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":50}],"auth":"public","cost_tor":0.0,"returns":"{projects: [{id, title, kind, entry, files, bytes, running, preview_url}], count, kinds}","url":"https://www.torblockchain.fun/api/workbench/projects"},{"name":"workbench.create","group":"workbench","method":"POST","path":"/api/workbench/projects","summary":"Scaffold a real project on disk: index.html/styles.css/app.js for a web app, Cargo.toml/src/main.rs for a Rust program.","params":[{"name":"name","in":"json","type":"string","required":true,"description":"","example":"neon shop"},{"name":"kind","in":"json","type":"string","required":false,"description":"","example":"web","enum":["web","rust"]},{"name":"description","in":"json","type":"string","required":false,"description":""},{"name":"model","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session","cost_tor":0.0,"returns":"{project: {id, kind, entry, tree: [{path, bytes, language}]}}","url":"https://www.torblockchain.fun/api/workbench/projects"},{"name":"workbench.project","group":"workbench","method":"GET","path":"/api/workbench/projects/{build_id}","summary":"One project with its live file tree and the model its builder uses.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"}],"auth":"public","cost_tor":0.0,"returns":"{project: {id, kind, entry, model_in_use, tree, edits}}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}"},{"name":"workbench.delete","group":"workbench","method":"DELETE","path":"/api/workbench/projects/{build_id}","summary":"Delete a project and every file in it (stops its preview server first).","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{deleted, files, title}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}"},{"name":"workbench.file","group":"workbench","method":"GET","path":"/api/workbench/projects/{build_id}/files","summary":"Read one text file of the project (path is relative to the project root).","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"path","in":"query","type":"string","required":true,"description":"relative file path","example":"index.html"}],"auth":"public","cost_tor":0.0,"returns":"{path, content, bytes, language, lines}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/files"},{"name":"workbench.file_write","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/files","summary":"Create, overwrite or append a text file \u2014 the editor's save and new-file buttons.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"path","in":"json","type":"string","required":true,"description":"","example":"src/app.js"},{"name":"content","in":"json","type":"string","required":true,"description":"the whole file"},{"name":"mode","in":"json","type":"string","required":false,"description":"","example":"overwrite","enum":["create","overwrite","append"]}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{path, bytes, created, language, lines}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/files"},{"name":"workbench.file_delete","group":"workbench","method":"DELETE","path":"/api/workbench/projects/{build_id}/files","summary":"Delete one file from the project.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"path","in":"query","type":"string","required":true,"description":"","example":"notes/todo.md"}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{deleted, bytes, files}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/files"},{"name":"workbench.run","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/run","summary":"Run one command in the project directory (argv, no shell, allow-listed developer tools) and return its real output.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"command","in":"json","type":"string","required":true,"description":"","example":"cargo build --release"},{"name":"timeout","in":"json","type":"float","required":false,"description":"","example":120}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{command, exit_code, ok, stdout, stderr, duration_ms, timed_out}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/run"},{"name":"workbench.deploy","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/deploy","summary":"Deploy for real. DarkWeb (web) \u2192 ADD_ONION on Tor and a live http://<id>.onion/builds/<id>/ URL; Rust \u2192 cargo build --release, binary sha3 and an owner-only program record.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"owner_wallet","in":"json","type":"string","required":false,"description":"wallet that owns a Rust program (defaults to the session wallet)","example":"u_kathy"}],"auth":"admin-or-owner","cost_tor":0.0,"returns":"{deployment: {kind, onion_url|program_id, binary_sha3}, program, owner_address}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/deploy"},{"name":"workbench.deployment","group":"workbench","method":"GET","path":"/api/workbench/projects/{build_id}/deployment","summary":"The project's deployment record: onion URL or program id, owner wallet and when it deployed.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"}],"auth":"public","cost_tor":0.0,"returns":"{project, kind, owner_wallet, owner_address, deployment, deployed_at}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/deployment"},{"name":"workbench.install","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/install","summary":"Install dependencies for real: pip, npm, or cargo add / cargo fetch.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"manager","in":"json","type":"string","required":false,"description":"","example":"npm","enum":["pip","npm","cargo"]},{"name":"packages","in":"json","type":"string","required":false,"description":"list or space-separated names","example":"express ws"}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{manager, packages, exit_code, stdout, stderr}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/install"},{"name":"workbench.ai","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/ai","summary":"Prompt the builder: the surface's model returns a JSON file plan (create/update/delete) and it is applied to the real files.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"prompt","in":"json","type":"string","required":true,"description":"","example":"add a sticky nav and a product grid"},{"name":"model","in":"json","type":"string","required":false,"description":"override the surface's model"},{"name":"history","in":"json","type":"object","required":false,"description":"prior turns"},{"name":"apply","in":"json","type":"bool","required":false,"description":"","example":true}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{answer, model, purpose, applied: [{path, action}], removed, warnings, tree}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/ai"},{"name":"workbench.serve","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/serve","summary":"Start the app for the preview window (static server for web, cargo run for Rust) on a free port.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"},{"name":"command","in":"json","type":"string","required":false,"description":"override; {port} is substituted","example":"npm start"},{"name":"port","in":"json","type":"int","required":false,"description":"","example":5173}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{running, port, preview_url, command, log}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/serve"},{"name":"workbench.serve_status","group":"workbench","method":"GET","path":"/api/workbench/projects/{build_id}/serve","summary":"Preview server state plus the tail of its real stdout/stderr log.","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"}],"auth":"public","cost_tor":0.0,"returns":"{running, pid, port, preview_url, exit_code, log}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/serve"},{"name":"workbench.serve_stop","group":"workbench","method":"POST","path":"/api/workbench/projects/{build_id}/serve/stop","summary":"Stop the preview server (the whole process tree).","params":[{"name":"build_id","in":"path","type":"string","required":true,"description":"","example":"build_0001"}],"auth":"owner-or-admin","cost_tor":0.0,"returns":"{stopped, running, port}","url":"https://www.torblockchain.fun/api/workbench/projects/{build_id}/serve/stop"},{"name":"meme.tools","group":"meme","method":"GET","path":"/api/meme/tools","summary":"Every launcher tool with its real state \u2014 live vs placeholder (501).","params":[],"auth":"public","cost_tor":0.0,"returns":"{tools: [{id, endpoint, cost_tor, ready, engine}], ready, placeholders}","url":"https://www.torblockchain.fun/api/meme/tools"},{"name":"meme.tokens","group":"meme","method":"GET","path":"/api/meme/tokens","summary":"On-chain tokens: price, pool, market cap, 24h volume, supply, circulating supply, holder count, owner \u2014 launcher metadata only while its 30-day window is open.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":50}],"auth":"public","cost_tor":0.0,"returns":"{tokens: [{symbol, name, supply, circulating, in_pools, holders, owner, mint_address, price_tor, pools, market_cap_tor, volume_24h_tor, launcher, metadata}], count}","url":"https://www.torblockchain.fun/api/meme/tokens"},{"name":"meme.token","group":"meme","method":"GET","path":"/api/meme/tokens/{symbol}","summary":"One token: ledger record, pool, market, supply totals, every holder with its balance, temporary launcher metadata and promotions.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"MEME"}],"auth":"public","cost_tor":0.0,"returns":"{symbol, token, pool, market, launcher, metadata, supply, circulating, in_pools, held, holders_total, holders: [{address, amount, share_percent}], owner: {address}, promotions, holders_endpoint, balances_endpoint}","url":"https://www.torblockchain.fun/api/meme/tokens/{symbol}"},{"name":"meme.token_create","group":"meme","method":"POST","path":"/api/meme/tokens","summary":"Create a token on the ledger (the chain charges 5 TOR in the token_create tx).","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"2-10 A-Z0-9 ticker","example":"MEME"},{"name":"name","in":"json","type":"string","required":false,"description":"display name"},{"name":"supply","in":"json","type":"int","required":true,"description":"","example":1000000},{"name":"description","in":"json","type":"string","required":false,"description":""},{"name":"image","in":"json","type":"string","required":false,"description":""},{"name":"socials","in":"json","type":"object","required":false,"description":"list of URLs"},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"},{"name":"promo_code","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":5.0,"returns":"{token, launcher, txid, height, fee}","url":"https://www.torblockchain.fun/api/meme/tokens"},{"name":"meme.market","group":"meme","method":"GET","path":"/api/meme/tokens/{symbol}/market","summary":"Price, liquidity, market cap and the swaps inside the public window.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"MEME"}],"auth":"public","cost_tor":0.0,"returns":"{symbol, price_tor, liquidity_tor, volume, chart, promotions}","url":"https://www.torblockchain.fun/api/meme/tokens/{symbol}/market"},{"name":"meme.pool_create","group":"meme","method":"POST","path":"/api/meme/pools","summary":"Seed the AMM pool (10 TOR charged by the chain, reserves moved on-chain).","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"","example":"MEME"},{"name":"token_amount","in":"json","type":"int","required":true,"description":"","example":500000},{"name":"tor_amount","in":"json","type":"float","required":true,"description":"","example":100},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"}],"auth":"wallet-session-or-admin","cost_tor":10.0,"returns":"{pool, txid, height, fee}","url":"https://www.torblockchain.fun/api/meme/pools"},{"name":"meme.swap","group":"meme","method":"POST","path":"/api/meme/pools/{symbol}/swap","summary":"Buy or sell against the pool \u2014 a real signed swap at 0.30%.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"MEME"},{"name":"side","in":"json","type":"string","required":true,"description":"","enum":["buy","sell"]},{"name":"amount","in":"json","type":"float","required":true,"description":"TOR for buy, whole tokens for sell","example":5},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{swap, quote, pool, txid, height}","url":"https://www.torblockchain.fun/api/meme/pools/{symbol}/swap"},{"name":"meme.quote","group":"meme","method":"GET","path":"/api/meme/quote","summary":"Constant-product quote using the same integer math as the chain.","params":[{"name":"symbol","in":"query","type":"string","required":true,"description":"","example":"MEME"},{"name":"side","in":"query","type":"string","required":false,"description":"","example":"buy","enum":["buy","sell"]},{"name":"amount","in":"query","type":"float","required":true,"description":"","example":5}],"auth":"public","cost_tor":0.0,"returns":"{amount_in, amount_out, fee_micro, price_tor, pool}","url":"https://www.torblockchain.fun/api/meme/quote"},{"name":"meme.promo","group":"meme","method":"GET","path":"/api/meme/promo","summary":"Validate a launcher promo code (API-layer fees only; chain fees are fixed).","params":[{"name":"code","in":"query","type":"string","required":false,"description":"","example":"ONENESS"}],"auth":"public","cost_tor":0.0,"returns":"{codes, valid, discount_percent}","url":"https://www.torblockchain.fun/api/meme/promo"},{"name":"meme.trending","group":"meme","method":"GET","path":"/api/meme/trending","summary":"Trending board ranked by active promotion, then liquidity, then supply.","params":[],"auth":"public","cost_tor":0.0,"returns":"{board: [...], promotions, ranked_by}","url":"https://www.torblockchain.fun/api/meme/trending"},{"name":"meme.promotions","group":"meme","method":"GET","path":"/api/meme/promotions","summary":"Active paid promotions with their expiry and price table.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":50}],"auth":"public","cost_tor":0.0,"returns":"{promotions, count, prices}","url":"https://www.torblockchain.fun/api/meme/promotions"},{"name":"meme.promote","group":"meme","method":"POST","path":"/api/meme/promotions","summary":"Buy a trending slot (5 TOR/day) or the 7-day banner (30 TOR).","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"","example":"MEME"},{"name":"kind","in":"json","type":"string","required":false,"description":"","example":"trending","enum":["trending","banner"]},{"name":"days","in":"json","type":"int","required":false,"description":"","example":1},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"},{"name":"promo_code","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":5.0,"returns":"{promotion, charge, ends_at}","url":"https://www.torblockchain.fun/api/meme/promotions"},{"name":"meme.volume_sessions","group":"meme","method":"GET","path":"/api/meme/volume-sessions","summary":"Queued/paid volume sessions (the engine is not deployed).","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":25}],"auth":"public","cost_tor":0.0,"returns":"{sessions, count, engine}","url":"https://www.torblockchain.fun/api/meme/volume-sessions"},{"name":"meme.volume_session_create","group":"meme","method":"POST","path":"/api/meme/volume-sessions","summary":"Pay for a 15-minute volume session and queue it honestly.","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"","example":"MEME"},{"name":"rounds","in":"json","type":"int","required":false,"description":"","example":10},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"},{"name":"promo_code","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":10.0,"returns":"{session, charge, honest}","url":"https://www.torblockchain.fun/api/meme/volume-sessions"},{"name":"meme.volume_run","group":"meme","method":"POST","path":"/api/meme/volume-sessions/{session_id}/run","summary":"Placeholder: answers ENGINE_NOT_DEPLOYED and places no trades.","params":[{"name":"session_id","in":"path","type":"string","required":true,"description":"","example":"vol_0001"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"501 ENGINE_NOT_DEPLOYED","url":"https://www.torblockchain.fun/api/meme/volume-sessions/{session_id}/run"},{"name":"meme.landing","group":"meme","method":"POST","path":"/api/meme/tokens/{symbol}/landing","summary":"Generate + host a token landing page with Ollama (10 TOR).","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"MEME"},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"},{"name":"prompt","in":"json","type":"string","required":false,"description":""},{"name":"model","in":"json","type":"string","required":false,"description":""},{"name":"promo_code","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":10.0,"returns":"{site, charge, model, bytes}","url":"https://www.torblockchain.fun/api/meme/tokens/{symbol}/landing"},{"name":"meme.dex_venues","group":"meme","method":"GET","path":"/api/meme/dex/venues","summary":"Planned DEX venues: the internal AMM is live, external ones are placeholders.","params":[],"auth":"public","cost_tor":0.0,"returns":"{venues: [{id, available, status, endpoints}], available, placeholders}","url":"https://www.torblockchain.fun/api/meme/dex/venues"},{"name":"meme.dex_quote","group":"meme","method":"GET","path":"/api/meme/dex/quote","summary":"Placeholder external-DEX quote \u2014 501 DEX_NOT_DEPLOYED (use meme.quote).","params":[{"name":"symbol","in":"query","type":"string","required":false,"description":"","example":"MEME"},{"name":"side","in":"query","type":"string","required":false,"description":"","enum":["buy","sell"]},{"name":"amount","in":"query","type":"float","required":false,"description":"","example":1}],"auth":"public","cost_tor":0.0,"returns":"501 DEX_NOT_DEPLOYED","url":"https://www.torblockchain.fun/api/meme/dex/quote"},{"name":"meme.dex_swap","group":"meme","method":"POST","path":"/api/meme/dex/swap","summary":"Placeholder external-DEX swap \u2014 501 DEX_NOT_DEPLOYED (use meme.swap).","params":[{"name":"symbol","in":"json","type":"string","required":false,"description":"","example":"MEME"},{"name":"side","in":"json","type":"string","required":false,"description":"","enum":["buy","sell"]},{"name":"amount","in":"json","type":"float","required":false,"description":""},{"name":"wallet","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"501 DEX_NOT_DEPLOYED","url":"https://www.torblockchain.fun/api/meme/dex/swap"},{"name":"meme.dex_link","group":"meme","method":"GET","path":"/api/meme/dex/link","summary":"Parse any pasted DEX link into its source, mint and pair (pure, no network).","params":[{"name":"url","in":"query","type":"string","required":true,"description":"","example":"https://dexscreener.com/solana/<pair>"}],"auth":"public","cost_tor":0.0,"returns":"{ok, source, label, mint, pair, kind}","url":"https://www.torblockchain.fun/api/meme/dex/link"},{"name":"nft.catalogue","group":"nft","method":"GET","path":"/api/nft/catalogue","summary":"Every 1-of-1 minted on this node with its metadata and 3 TOR price.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":100}],"auth":"public","cost_tor":0.0,"returns":"{nfts: [{id, token_id, name, image, txid}], count, price_tor}","url":"https://www.torblockchain.fun/api/nft/catalogue"},{"name":"nft.get","group":"nft","method":"GET","path":"/api/nft/catalogue/{nft_id}","summary":"One catalogue record plus the resolved metadata and persona block.","params":[{"name":"nft_id","in":"path","type":"string","required":true,"description":"","example":"nft_0001"}],"auth":"public","cost_tor":0.0,"returns":"{nft, resolved, prompt}","url":"https://www.torblockchain.fun/api/nft/catalogue/{nft_id}"},{"name":"nft.mint","group":"nft","method":"POST","path":"/api/nft/mint","summary":"Mint a 1-of-1 AI-NFT (3 TOR on-chain, metadata stored by this node).","params":[{"name":"name","in":"json","type":"string","required":true,"description":"","example":"Cyan Warden"},{"name":"description","in":"json","type":"string","required":true,"description":"becomes the AI persona"},{"name":"image","in":"json","type":"string","required":true,"description":"","example":"https://\u2026/warden.png"},{"name":"symbol","in":"json","type":"string","required":false,"description":"","example":"WARDEN"},{"name":"attributes","in":"json","type":"object","required":false,"description":"[{trait_type, value}]"},{"name":"animation_url","in":"json","type":"string","required":false,"description":""},{"name":"external_url","in":"json","type":"string","required":false,"description":""},{"name":"wallet","in":"json","type":"string","required":false,"description":"","example":"founder"}],"auth":"wallet-session-or-admin","cost_tor":3.0,"returns":"{nft, resolved, txid, charge, prompt}","url":"https://www.torblockchain.fun/api/nft/mint"},{"name":"nft.metadata","group":"nft","method":"GET","path":"/api/nft/metadata","summary":"Resolve real metadata: local registry \u2192 Solana Metaplex \u2192 metadata URI.","params":[{"name":"address","in":"query","type":"string","required":false,"description":"TOR1\u2026onion NFT or a Solana mint"},{"name":"token_id","in":"query","type":"string","required":false,"description":"","example":1},{"name":"metadata_uri","in":"query","type":"string","required":false,"description":"https:// or ipfs:// JSON"}],"auth":"public","cost_tor":0.0,"returns":"{nft: {name, description, image, attributes, chain, source}, prompt}","url":"https://www.torblockchain.fun/api/nft/metadata"},{"name":"nft.chat","group":"nft","method":"POST","path":"/api/nft/chat","summary":"Chat as the NFT: its metadata is injected right after I AM THIS NFT.","params":[{"name":"address","in":"json","type":"string","required":true,"description":""},{"name":"token_id","in":"json","type":"string","required":false,"description":""},{"name":"prompt","in":"json","type":"string","required":true,"description":""},{"name":"model","in":"json","type":"string","required":false,"description":""},{"name":"messages","in":"json","type":"object","required":false,"description":"prior turns"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{answer, nft, prompt_block, api_calls, verified}","url":"https://www.torblockchain.fun/api/nft/chat"},{"name":"tor.status","group":"tor","method":"GET","path":"/api/tor/status","summary":"Tor daemon reachability, control port, SOCKS port and published services.","params":[],"auth":"public","cost_tor":0.0,"returns":"{installed, reachable, control_port, socks_port, services}","url":"https://www.torblockchain.fun/api/tor/status"},{"name":"tor.new_identity","group":"tor","method":"POST","path":"/api/tor/new-identity","summary":"Ask Tor for a new circuit (SIGNAL NEWNYM).","params":[],"auth":"admin","cost_tor":0.0,"returns":"{signal, sent_at}","url":"https://www.torblockchain.fun/api/tor/new-identity"},{"name":"tor.node","group":"tor","method":"GET","path":"/api/tor/node","summary":"The onion link THIS NODE is published at (ADD_ONION state, service id, port, docs/token URLs). Never invented: published=false until Tor accepted ADD_ONION.","params":[],"auth":"public","cost_tor":0.0,"returns":"{published, onion, url, service_id, target_port, port, paths, note}","url":"https://www.torblockchain.fun/api/tor/node"},{"name":"tor.node_publish","group":"tor","method":"POST","path":"/api/tor/node","summary":"Publish the whole API as a Tor hidden service (ADD_ONION): the onion link you browse the node at. Reuses the recorded service unless refresh=true.","params":[{"name":"port","in":"json","type":"int","required":false,"description":"local API port","example":8090},{"name":"refresh","in":"json","type":"bool","required":false,"description":"force a new ADD_ONION","example":false}],"auth":"admin","cost_tor":0.0,"returns":"{onion, service_id, url, port, reused, note}","url":"https://www.torblockchain.fun/api/tor/node"},{"name":"ollama.status","group":"ollama","method":"GET","path":"/api/ollama/status","summary":"Ollama install state, API URL, version, model count, running models and the default model.","params":[],"auth":"public","cost_tor":0.0,"returns":"{installed, binary, api_url, reachable, version, models, running, default_model}","url":"https://www.torblockchain.fun/api/ollama/status"},{"name":"ollama.models","group":"ollama","method":"GET","path":"/api/ollama/models","summary":"Installed models.","params":[],"auth":"public","cost_tor":0.0,"returns":"{models: [{name, size, modified_at, family}], default_model}","url":"https://www.torblockchain.fun/api/ollama/models"},{"name":"ollama.pull","group":"ollama","method":"POST","path":"/api/ollama/pull","summary":"Download a model (streams NDJSON progress, exactly like `ollama pull`).","params":[{"name":"model","in":"json","type":"string","required":true,"description":"","example":"llama3.2:3b"}],"auth":"admin","cost_tor":0.0,"returns":"NDJSON {status, completed, total}","url":"https://www.torblockchain.fun/api/ollama/pull"},{"name":"ollama.start","group":"ollama","method":"POST","path":"/api/ollama/start","summary":"Start `ollama serve` when the API is not answering yet.","params":[],"auth":"admin","cost_tor":0.0,"returns":"{started, already_running, api_url, version}","url":"https://www.torblockchain.fun/api/ollama/start"},{"name":"ollama.run","group":"ollama","method":"POST","path":"/api/ollama/run","summary":"Run one prompt against a model \u2014 the API behind the `ollama run <model>` box.","params":[{"name":"model","in":"json","type":"string","required":false,"description":"","example":"llama3.2:3b"},{"name":"prompt","in":"json","type":"string","required":true,"description":"","example":"Summarise the TOR chain state"},{"name":"stream","in":"json","type":"bool","required":false,"description":"","example":false}],"auth":"admin","cost_tor":0.0,"returns":"{model, response, done_reason}","url":"https://www.torblockchain.fun/api/ollama/run"},{"name":"ollama.chat","group":"ollama","method":"POST","path":"/api/ollama/chat","summary":"Chat with the command brain: live API schema + real tool calls + real responses.","params":[{"name":"prompt","in":"json","type":"string","required":false,"description":"user message"},{"name":"messages","in":"json","type":"object","required":false,"description":"full message list"},{"name":"model","in":"json","type":"string","required":false,"description":"","example":"llama3.2:3b"},{"name":"use_tools","in":"json","type":"bool","required":false,"description":"","example":true}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{answer, model, tool_calls: [...], messages}","url":"https://www.torblockchain.fun/api/ollama/chat"},{"name":"ollama.prompt","group":"ollama","method":"GET","path":"/api/ollama/prompt","summary":"The exact system prompt handed to the model (schema + live chain snapshot).","params":[],"auth":"public","cost_tor":0.0,"returns":"{system_prompt, endpoint_count, model}","url":"https://www.torblockchain.fun/api/ollama/prompt"},{"name":"ollama.routing","group":"ollama","method":"GET","path":"/api/ollama/routing","summary":"Which model each AI surface uses \u2014 the blockchain interface, the AI-NFT, the DarkWeb App Builder and the Rust Program Builder \u2014 with whether that model is installed.","params":[],"auth":"public","cost_tor":0.0,"returns":"{purposes: [{id, label, model, source, installed, effective}], models, default_model}","url":"https://www.torblockchain.fun/api/ollama/routing"},{"name":"ollama.routing_set","group":"ollama","method":"POST","path":"/api/ollama/routing","summary":"Admin: point one AI surface at an installed model (stored on this node; empty model clears the override).","params":[{"name":"purpose","in":"json","type":"string","required":true,"description":"which surface","example":"web_builder","enum":["brain","nft","web_builder","rust_builder"]},{"name":"model","in":"json","type":"string","required":false,"description":"installed model name; empty clears","example":"qwen2.5:7b-instruct"}],"auth":"admin","cost_tor":0.0,"returns":"{changed, model, cleared, purposes: [...]}","url":"https://www.torblockchain.fun/api/ollama/routing"},{"name":"ollama.ps","group":"ollama","method":"GET","path":"/api/ollama/ps","summary":"Models currently loaded in memory.","params":[],"auth":"public","cost_tor":0.0,"returns":"{models: [{name, size_vram, expires_at}]}","url":"https://www.torblockchain.fun/api/ollama/ps"},{"name":"ollama.delete","group":"ollama","method":"DELETE","path":"/api/ollama/models/{model}","summary":"Delete a model from disk.","params":[{"name":"model","in":"path","type":"string","required":true,"description":"","example":"llama3.2:3b"}],"auth":"admin","cost_tor":0.0,"returns":"{deleted}","url":"https://www.torblockchain.fun/api/ollama/models/{model}"},{"name":"ollama.install","group":"ollama","method":"POST","path":"/api/ollama/install","summary":"Auto-install Ollama on this machine (winget on Windows, install.sh elsewhere).","params":[],"auth":"admin","cost_tor":0.0,"returns":"{installed, log, binary, version}","url":"https://www.torblockchain.fun/api/ollama/install"},{"name":"ollama.suggested","group":"ollama","method":"GET","path":"/api/ollama/suggested","summary":"The download buttons: curated models with size, tool support and whether each is installed.","params":[],"auth":"public","cost_tor":0.0,"returns":"{models: [{model, label, size_gb, tools, note, installed, run}]}","url":"https://www.torblockchain.fun/api/ollama/suggested"},{"name":"ollama.bootstrap","group":"ollama","method":"POST","path":"/api/ollama/bootstrap","summary":"One click: install Ollama if missing, start `ollama serve`, pull the default model. Reports every real step.","params":[{"name":"pull","in":"json","type":"bool","required":false,"description":"also download the default model","example":true},{"name":"model","in":"json","type":"string","required":false,"description":"model to pull instead of ollama.model","example":"llama3.2:3b"}],"auth":"admin","cost_tor":0.0,"returns":"{installed, serving, version, models, pulled, steps, next}","url":"https://www.torblockchain.fun/api/ollama/bootstrap"},{"name":"ollama.command","group":"ollama","method":"POST","path":"/api/ollama/command","summary":"Run a typed `ollama ...` CLI line \u2014 run, pull, list, ps, show, rm or serve.","params":[{"name":"command","in":"json","type":"string","required":true,"description":"the line as typed","example":"ollama run llama3.2:3b summarise the chain"},{"name":"prompt","in":"json","type":"string","required":false,"description":"prompt override for `run`"}],"auth":"admin","cost_tor":0.0,"returns":"{kind, parsed, model, response, models, stream}","url":"https://www.torblockchain.fun/api/ollama/command"},{"name":"tools.catalog","group":"tools","method":"GET","path":"/api/tools","summary":"The fetch-data tool description: every callable endpoint with its schema.","params":[],"auth":"public","cost_tor":0.0,"returns":"{tool, endpoints: [...], count}","url":"https://www.torblockchain.fun/api/tools"},{"name":"tools.fetch","group":"tools","method":"POST","path":"/api/tools/fetch","summary":"THE FETCH-DATA TOOL \u2014 call any endpoint by name and get the real HTTP response.","params":[{"name":"endpoint","in":"json","type":"string","required":true,"description":"catalog name, e.g. chain.info","example":"chain.info"},{"name":"params","in":"json","type":"object","required":false,"description":"path/query/body values","example":{"limit":5}}],"auth":"public","cost_tor":0.0,"returns":"{ok, endpoint, request, response, http_status, latency_ms}","url":"https://www.torblockchain.fun/api/tools/fetch"},{"name":"ai.command","group":"ai","method":"POST","path":"/api/ai/command","summary":"Natural-language command deck: asks Ollama, executes real API calls, returns the answer.","params":[{"name":"prompt","in":"json","type":"string","required":true,"description":"","example":"how much TOR does the founder wallet hold?"},{"name":"model","in":"json","type":"string","required":false,"description":""},{"name":"use_tools","in":"json","type":"bool","required":false,"description":"","example":true}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{answer, model, tool_calls, api_calls, messages}","url":"https://www.torblockchain.fun/api/ai/command"},{"name":"policy.get","group":"policy","method":"GET","path":"/api/policy","summary":"THE 30-DAY DATA POLICY \u2014 the window, the permanent public allow-list (the token table and the public balance sheet), what expires, and how much of every store is already expired.","params":[],"auth":"public","cost_tor":0.0,"returns":"{policy: {window_days, permanent_public, permanent_public_endpoints, wallet_balances, expires_after_window}, window_days, cutoff, stores: [{name, records, expired, oldest, newest}], expired_total, records_total, last_sweep, chain}","url":"https://www.torblockchain.fun/api/policy"},{"name":"policy.sweep","group":"policy","method":"POST","path":"/api/policy/sweep","summary":"ENFORCE THE POLICY NOW \u2014 delete service records, files and previews older than the window, then seal expired chain records into the private archive. dry_run=true only reports.","params":[{"name":"dry_run","in":"json","type":"bool","required":false,"description":"measure without deleting","example":false}],"auth":"admin","cost_tor":0.0,"returns":"{ran_at, window_days, dry_run, deleted, kept, deleted_total, files_removed, bytes_freed, chain, errors}","url":"https://www.torblockchain.fun/api/policy/sweep"},{"name":"ipfs.status","group":"ipfs","method":"GET","path":"/api/ipfs/status","summary":"IPFS pinning health: is a Pinata credential configured, which gateway, and the last pin (never a secret).","params":[],"auth":"public","cost_tor":0.0,"returns":"{standard, enabled, configured: {jwt, api_key, secret}, gateway, gateways, last_pin, last_error}","url":"https://www.torblockchain.fun/api/ipfs/status"},{"name":"ipfs.resolve","group":"ipfs","method":"GET","path":"/api/ipfs/resolve","summary":"Resolve ipfs:// or ar:// to the HTTPS gateway URL used by pages and listings.","params":[{"name":"uri","in":"query","type":"string","required":true,"description":"ipfs://<cid>/meta.json or ar://<id>","example":"ipfs://bafybeihur4eo7oifxqahw7ze3o6ujvy7ltfmzmfkiq46j33jzwurl2w3ze"}],"auth":"public","cost_tor":0.0,"returns":"{uri, url, cid, gateway, gateways}","url":"https://www.torblockchain.fun/api/ipfs/resolve"},{"name":"ipfs.pin","group":"ipfs","method":"POST","path":"/api/ipfs/pin","summary":"Pin a JSON document or a base64 image to IPFS through Pinata (admin).","params":[{"name":"document","in":"json","type":"object","required":false,"description":"the JSON document to pin","example":{"name":"Collection"}},{"name":"data_url","in":"json","type":"string","required":false,"description":"data:image/...;base64,... payload to pin"},{"name":"filename","in":"json","type":"string","required":false,"description":"file name for an image"},{"name":"name","in":"json","type":"string","required":false,"description":"Pinata pin name"}],"auth":"admin","cost_tor":0.0,"returns":"{pinned, cid, uri, url, gateway, provider, pinned_at}","url":"https://www.torblockchain.fun/api/ipfs/pin"},{"name":"dev.pricing","group":"dev","method":"GET","path":"/api/dev/keys/pricing","summary":"DEVELOPER KEYS \u2014 the price (25 TOR / 30 days), rate limits, header name and how to buy.","params":[],"auth":"public","cost_tor":0.0,"returns":"{pricing: {header, prefix, price, limits, scopes, buy, use, revoke}, how, catalog}","url":"https://www.torblockchain.fun/api/dev/keys/pricing"},{"name":"dev.keys","group":"dev","method":"GET","path":"/api/dev/keys","summary":"Every developer key this account bought (masked hints, usage, expiry).","params":[],"auth":"wallet-session","cost_tor":0.0,"returns":"{keys: [{id, label, hint, wallet, active, expires_at, calls, last_used_at}], count, limits, pricing}","url":"https://www.torblockchain.fun/api/dev/keys"},{"name":"dev.keys_create","group":"dev","method":"POST","path":"/api/dev/keys","summary":"BUY A DEVELOPER KEY \u2014 charged on-chain from the signed-in wallet (25 TOR / 30 days), returned once.","params":[{"name":"label","in":"json","type":"string","required":false,"description":"what the key is for","example":"my bot"},{"name":"days","in":"json","type":"int","required":false,"description":"1-365 (default 30)","example":30},{"name":"wallet","in":"json","type":"string","required":false,"description":"pay from another wallet of the same account"}],"auth":"wallet-session","cost_tor":0.0,"returns":"{key, shown_once, header, key_id, expires_at, charge, limits, use, warning}","url":"https://www.torblockchain.fun/api/dev/keys"},{"name":"dev.keys_revoke","group":"dev","method":"DELETE","path":"/api/dev/keys/{key_id}","summary":"Revoke one of this account's developer keys (immediate; no refund).","params":[{"name":"key_id","in":"path","type":"string","required":true,"description":"","example":"devkey_0001"}],"auth":"wallet-session","cost_tor":0.0,"returns":"{revoked, key, note}","url":"https://www.torblockchain.fun/api/dev/keys/{key_id}"},{"name":"dev.call","group":"dev","method":"GET","path":"/api/v1/{endpoint}","summary":"THE KEYED DEVELOPER API \u2014 call any public endpoint by catalog name with x-api-key (the website uses wallet sessions).","params":[{"name":"endpoint","in":"path","type":"string","required":true,"description":"","example":"chain.info"},{"name":"api_key","in":"query","type":"string","required":false,"description":"the key (the x-api-key header is preferred)"}],"auth":"api-key","cost_tor":0.0,"returns":"{ok, data, error, meta: {developer_key, request, limits}}","url":"https://www.torblockchain.fun/api/v1/{endpoint}"},{"name":"dev.call_write","group":"dev","method":"POST","path":"/api/v1/{endpoint}","summary":"The keyed developer API for POST endpoints; JSON body or query params are forwarded.","params":[{"name":"endpoint","in":"path","type":"string","required":true,"description":"","example":"nft.mint"},{"name":"api_key","in":"query","type":"string","required":false,"description":"the key (the x-api-key header is preferred)"}],"auth":"api-key","cost_tor":0.0,"returns":"{ok, data, error, meta: {developer_key, request, limits}}","url":"https://www.torblockchain.fun/api/v1/{endpoint}"},{"name":"market.overview","group":"market","method":"GET","path":"/api/market/overview","summary":"TOR at its USD anchor, cross-platform totals, movers, newest listings, deepest pools.","params":[],"auth":"public","cost_tor":0.0,"returns":"{tor, totals, movers, newest, deepest, sources}","url":"https://www.torblockchain.fun/api/market/overview"},{"name":"market.tokens","group":"market","method":"GET","path":"/api/market/tokens","summary":"Every token priced in USD: price, market cap, liquidity, 24 h volume and change.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":500}],"auth":"public","cost_tor":0.0,"returns":"{tor, totals, tokens: [...], sources}","url":"https://www.torblockchain.fun/api/market/tokens"},{"name":"market.token","group":"market","method":"GET","path":"/api/market/tokens/{symbol}","summary":"One token: USD price, market cap, both pools, 24 h change and observations.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"BTC"}],"auth":"public","cost_tor":0.0,"returns":"{symbol, price_usd, market_cap_usd, liquidity_usd, pools_usd, change_24h}","url":"https://www.torblockchain.fun/api/market/tokens/{symbol}"},{"name":"market.chart","group":"market","method":"GET","path":"/api/market/chart/{symbol}","summary":"Candles generated from real sampled AMM prices (the chart tool every app renders).","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"TOR"},{"name":"points","in":"query","type":"int","required":false,"description":"","example":168}],"auth":"public","cost_tor":0.0,"returns":"{symbol, candles: [{time, open, high, low, close}], summary, source}","url":"https://www.torblockchain.fun/api/market/chart/{symbol}"},{"name":"market.tor","group":"market","method":"GET","path":"/api/market/tor","summary":"TOR alone: the $3.60 anchor, the turnover drift applied, the resulting price and cap.","params":[],"auth":"public","cost_tor":0.0,"returns":"{symbol, anchor_usd, price_usd, market_cap_usd, drift}","url":"https://www.torblockchain.fun/api/market/tor"},{"name":"market.pools","group":"market","method":"GET","path":"/api/market/pools","summary":"Every pool: TOR pools from the Rust ledger plus the USDC books, deepest first.","params":[{"name":"base","in":"query","type":"string","required":false,"description":"TOR or USDC","example":"USDC"},{"name":"limit","in":"query","type":"int","required":false,"description":"","example":500}],"auth":"public","cost_tor":0.0,"returns":"{count, tor_pools, usdc_pools, liquidity_usd, pools: [...]}","url":"https://www.torblockchain.fun/api/market/pools"},{"name":"market.quote","group":"market","method":"GET","path":"/api/market/quote","summary":"Constant-product quote on the deeper pool for a symbol.","params":[{"name":"symbol","in":"query","type":"string","required":true,"description":"","example":"BTC"},{"name":"side","in":"query","type":"string","required":false,"description":"","example":"buy"},{"name":"amount","in":"query","type":"float","required":true,"description":"","example":10},{"name":"base","in":"query","type":"string","required":false,"description":"force USDC or TOR","example":"TOR"}],"auth":"public","cost_tor":0.0,"returns":"{symbol, side, amount_in, amount_out, price_usd, fee_bps}","url":"https://www.torblockchain.fun/api/market/quote"},{"name":"market.swap","group":"market","method":"POST","path":"/api/market/swap","summary":"Swap on a TOR pool (chain tx) or a USDC book (two signed transfers); wallet session required.","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"","example":"BTC"},{"name":"side","in":"json","type":"string","required":false,"description":"","example":"buy"},{"name":"amount","in":"json","type":"float","required":true,"description":"","example":5},{"name":"base","in":"json","type":"string","required":false,"description":"TOR or USDC"},{"name":"wallet","in":"json","type":"string","required":false,"description":"session wallet by default"}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{swap, quote, pool, txid, height}","url":"https://www.torblockchain.fun/api/market/swap"},{"name":"market.projects","group":"market","method":"GET","path":"/api/projects","summary":"The six TOR platforms: logo, folder, dev URL, onion URL, clearnet URL, fee wallets.","params":[],"auth":"public","cost_tor":0.0,"returns":"{count, projects: [...], brand, fee_wallets, node}","url":"https://www.torblockchain.fun/api/projects"},{"name":"market.ads","group":"market","method":"GET","path":"/api/ads","summary":"Banner rotation: the permanent 1Ness banner first, then paid slots (50 TOR/week).","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":6}],"auth":"public","cost_tor":0.0,"returns":"{slots: [...], rotation_seconds, price_tor, policy}","url":"https://www.torblockchain.fun/api/ads"},{"name":"market.ads_buy","group":"market","method":"POST","path":"/api/ads","summary":"Buy a 7-day banner slot for 50 TOR from the caller's wallet.","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"","example":"BTC"},{"name":"title","in":"json","type":"string","required":false,"description":""},{"name":"image","in":"json","type":"string","required":false,"description":""},{"name":"link","in":"json","type":"string","required":false,"description":""},{"name":"promo_code","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":50.0,"returns":"{promotion, charge, banner}","url":"https://www.torblockchain.fun/api/ads"},{"name":"market.ai_models","group":"market","method":"GET","path":"/api/ai/models","summary":"Every FREE OpenRouter model (the ChatBox dropdown) with context length.","params":[{"name":"refresh","in":"query","type":"bool","required":false,"description":"","example":false}],"auth":"public","cost_tor":0.0,"returns":"{models: [...], count, source, default}","url":"https://www.torblockchain.fun/api/ai/models"},{"name":"market.ai_status","group":"market","method":"GET","path":"/api/ai/status","summary":"Gateway readiness \u2014 configured, free model count, never the key.","params":[],"auth":"public","cost_tor":0.0,"returns":"{configured, gateway, default_model, free_models, source}","url":"https://www.torblockchain.fun/api/ai/status"},{"name":"market.ai_chat","group":"market","method":"POST","path":"/api/ai/chat","summary":"The AI-NFT ChatBox: a free OpenRouter model answers with the TOR persona.","params":[{"name":"prompt","in":"json","type":"string","required":false,"description":"","example":"What is TOR worth?"},{"name":"messages","in":"json","type":"object","required":false,"description":"optional history"},{"name":"model","in":"json","type":"string","required":false,"description":"","example":"openrouter/free"},{"name":"nft","in":"json","type":"object","required":false,"description":"NFT metadata to speak as"}],"auth":"public","cost_tor":0.0,"returns":"{answer, model, usage, mode, provider}","url":"https://www.torblockchain.fun/api/ai/chat"},{"name":"market.pump_list","group":"market","method":"GET","path":"/api/pump/launches","summary":"Every TOR Pump launch with its live bonding curve.","params":[{"name":"limit","in":"query","type":"int","required":false,"description":"","example":50}],"auth":"public","cost_tor":0.0,"returns":"{count, launches: [...], target_mcap_usd, platform_wallet}","url":"https://www.torblockchain.fun/api/pump/launches"},{"name":"market.pump","group":"market","method":"GET","path":"/api/pump/launches/{symbol}","summary":"One launch: pool, market cap, progress to $25 000, creator fees due.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"NEWCOIN"}],"auth":"public","cost_tor":0.0,"returns":"{symbol, market_cap_usd, progress, graduated, creator_fees_due_micro}","url":"https://www.torblockchain.fun/api/pump/launches/{symbol}"},{"name":"market.pump_launch","group":"market","method":"POST","path":"/api/pump/launch","summary":"Free mint: the platform funds the chain fee, seeds $5 000 of liquidity, creator buys first.","params":[{"name":"symbol","in":"json","type":"string","required":true,"description":"","example":"NEWCOIN"},{"name":"name","in":"json","type":"string","required":false,"description":""},{"name":"description","in":"json","type":"string","required":false,"description":""},{"name":"image","in":"json","type":"string","required":false,"description":""},{"name":"supply","in":"json","type":"int","required":false,"description":"","example":1000000000},{"name":"first_buy_tor","in":"json","type":"float","required":false,"description":"","example":5}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{launch, token, pool, first_buy, curve}","url":"https://www.torblockchain.fun/api/pump/launch"},{"name":"market.pump_claim","group":"market","method":"POST","path":"/api/pump/launches/{symbol}/claim","summary":"Claim the creator's 20% share of the pool fee as a real TOR transfer.","params":[{"name":"symbol","in":"path","type":"string","required":true,"description":"","example":"NEWCOIN"},{"name":"wallet","in":"json","type":"string","required":false,"description":""}],"auth":"wallet-session-or-admin","cost_tor":0.0,"returns":"{claimed, amount_tor, txid}","url":"https://www.torblockchain.fun/api/pump/launches/{symbol}/claim"},{"name":"docs.catalog","group":"docs","method":"GET","path":"/api/docs","summary":"This catalog + the live base URL(s) + live node snapshot.","params":[],"auth":"public","cost_tor":0.0,"returns":"{version, base_url, base_urls, groups, endpoints, count, node}","url":"https://www.torblockchain.fun/api/docs"},{"name":"docs.endpoints","group":"docs","method":"GET","path":"/api/docs/endpoints","summary":"Just the endpoint list.","params":[],"auth":"public","cost_tor":0.0,"returns":"{endpoints: [...], count}","url":"https://www.torblockchain.fun/api/docs/endpoints"},{"name":"docs.openapi","group":"docs","method":"GET","path":"/api/openapi.json","summary":"Generated OpenAPI 3.1 document.","params":[],"auth":"public","cost_tor":0.0,"returns":"OpenAPI 3.1 JSON","url":"https://www.torblockchain.fun/api/openapi.json"}],"envelope":{"ok":true,"data":{},"error":null},"auth_header":"x-admin-token","auth_headers":{"admin":"x-admin-token","wallet":"x-wallet-session","developer":"x-api-key"},"base_urls":{"current":"https://www.torblockchain.fun","source":"X-Forwarded-* headers (reverse proxy)","request":"http://www.torblockchain.fun","configured":null,"onion":null,"listen":"http://127.0.0.1:10000"},"node":{"reachable":true,"base_url":"http://127.0.0.1:8545","chain":{"accounts":615,"chain_id":"072316","coin":{"decimals":8,"description":"TOR is the native coin of the OneNess TOR chain \u2014 a Tor-first, privacy-preserving ledger with a permanent block archive and a 30-day public data window. Genesis mints 50,000,000 TOR to the founder wallet; fees are paid in TOR.","image":"https://cyan-deep-magpie-676.mypinata.cloud/ipfs/bafybeihur4eo7oifxqahw7ze3o6ujvy7ltfmzmfkiq46j33jzwurl2w3ze?pinataGatewayToken=fvfdMA6s8XyRJ3C2Lp6_ScBrMLuuvUoo5tKWCGpXCkPdYVsm6mW_TWXlXE9PYi7A","logo_ipfs":"ipfs://bafybeihur4eo7oifxqahw7ze3o6ujvy7ltfmzmfkiq46j33jzwurl2w3ze","logo_url":"https://cyan-deep-magpie-676.mypinata.cloud/ipfs/bafybeihur4eo7oifxqahw7ze3o6ujvy7ltfmzmfkiq46j33jzwurl2w3ze?pinataGatewayToken=fvfdMA6s8XyRJ3C2Lp6_ScBrMLuuvUoo5tKWCGpXCkPdYVsm6mW_TWXlXE9PYi7A","name":"OneNess TOR","native_coin_id":"TOR111111111111111111111111111111onion","symbol":"TOR"},"consensus":"Proof-of-Authority (single authorized proposer until peers join)","fee_receiver":"TOR12xd7zywc3iuwcls3fqzsozkgo5ahv3gnonion","founder":"TOR12xd7zywc3iuwcls3fqzsozkgo5ahv3gnonion","genesis_hash":"fc9a220ce910b083188ee90f53561a4e3cf7c24b3723b655417e4fa34af6e156","head_hash":"c43d392e5976667cf25e41a8e8913ba93a70208e743e35cf00bf6fc4a133468a","height":3021,"micro_per_tor":100000000,"native_coin_id":"TOR111111111111111111111111111111onion","peer_count":0,"pools":488,"protocol_version":1,"public_ttl_days":30,"records":3877,"tokens":122,"total_supply":50000000.0,"total_supply_micro":5000000000000000},"managed":true,"hint":null},"tool":"fetch_oneness_data"},"error":null}
