New here? Start with the developers' page: reading in one line, signing and writing, and the troll box on your own site.
Every route the reader answers, generated from the code (scripts/api-reference.mjs), so this page and the reader cannot disagree: 274 routes in 78 groups. https://api.vulpinenetwork.com and https://fwetch.lol answer the same, open to every website, in JSON; an error is {"error": "what went wrong"} with an HTTP status.
Needs says what a route asks of you. nothing: just ask. a signature: the request carries pub and sig from your identity key, made the way /developers shows. a session: you are signed in on this reader. a curator: for the people who run it.
post 3 · feed 1 · replies 1 · profile 2 · board 20 · chat 11 · assertion 2 · name 6 · handle 7 · tartary 11 · deed 2 · coin 5 · piece 2 · market 18 · classified 2 · poll 9 · tip 2 · pay 2 · sponsor 9 · cache 8 · tod 2 · babel 4 · wiki 6 · gekker 6 · maze 5 · meme 11 · network 2 · health 1 · version 1 · collections 9 · chronovisor 8 · ads 7 · flags 7 · economic 3 · banners 2 · featured 2 · frens 2 · mcp 2 · members 2 · portraits 2 · presence 2 · resolve 2 · tx 2 · wallet 2 · whereami 2 · activity 1 · apps 1 · b 1 · balance 1 · broadcast 1 · content 1 · credits 1 · donate 1 · founders 1 · house 1 · id 1 · index 1 · link 1 · mint 1 · notifications 1 · owned 1 · people 1 · rate 1 · rawtx 1 · session 1 · sigil 1 · snapshot 1 · stream 1 · utxos 1 · verified 1 · welcome 1 · admin 19 · mod 4 · delegates 3 · reconcile 1 · debug 1 · indexer 1 · legacy 2
| route | needs | what it does |
|---|---|---|
GET /api/post-no/:board/:no | nothing | >>412 on /K/ — which post is that? For quote-links. |
GET /api/post/:txid | nothing | One post by its txid, with its author, flag and counts. |
GET /api/posts-by/:addr | nothing | posts by wallet address — identity is the ADDRESS, not the number |
| route | needs | what it does |
|---|---|---|
GET /api/feed | a session | feed with a small peek of replies under each post |
| route | needs | what it does |
|---|---|---|
GET /api/replies-by/:addr | nothing | replies written by this member, with the text they were replying to |
| route | needs | what it does |
|---|---|---|
GET /api/profile-addr/:addr | nothing | profile by address — always resolvable, even before a handle exists. Returns both addresses so the client knows which one to ask about tokens. |
GET /api/profile/:handle | nothing |
| route | needs | what it does |
|---|---|---|
GET /api/board/:slug.glb | nothing | A board's coin as a 3D object. |
GET /api/board/:slug.png | nothing | The board coin's art: same generator as the number coins, board design. |
GET /api/board/:slug.svg | nothing | the board's picture is its deed now, not a coin |
GET /api/boards | nothing | Every board that is not hidden. |
GET /api/boards/:slug | nothing | One board: who holds it, its rules and its look. |
GET /api/boards/:slug/available | nothing | Gekker: is a board's tag free to buy, and for how much |
GET /api/boards/:slug/channels | nothing | Every board has its general channel, the room b:SLUG it always had. |
POST /api/boards/:slug/channels | a signature | |
GET /api/boards/:slug/channels/:name/members | a session | |
POST /api/boards/:slug/channels/access | a signature | The owner marks a channel private and names who may see it, besides the owner and the moderators. Signed by the owner's identity key. |
POST /api/boards/:slug/edit | a signature | The owner may rename and describe their board. |
POST /api/boards/:slug/flag | a signature | A board's membership flag. The owner uploads any image; it is squashed to the flag size (50x35) and becomes a flag that only they can give. |
POST /api/boards/:slug/flag/give | a signature | Give (or take back) the board's flag. Owner only. |
GET /api/boards/:slug/icon | nothing | |
POST /api/boards/:slug/icon | a signature | |
GET /api/boards/:slug/members | a session | Who posts on a board, and who moderates it. |
POST /api/boards/:slug/moderate | a signature | |
GET /api/boards/:slug/roles | nothing | |
POST /api/boards/:slug/settings | a signature | Owner settings: private on/off, members in and out. |
POST /api/boards/buy | a signature | Buy a board: 1 BSV to #1, then the house mints the board coin to you. Curators skip the payment. A board that already has a coin is taken. |
| route | needs | what it does |
|---|---|---|
POST /api/chat/:room | a signature | Say something. Signed by the identity key; the signature is stored with the message so anyone can check it later. |
POST /api/chat/:room/hide | a session | Hide a chat message: jannies, curators, the board's owner. |
GET /api/chat/:room/messages | a session | Messages in a chat room, or a DM room the member is part of. |
POST /api/chat/:room/pin | a signature | Pin: the board owner, a curator, or (in a DM) either party. Pinning writes the message to chain — the one part of chat that should outlive us. |
POST /api/chat/:room/react | a signature | |
POST /api/chat/block | a session | Block and unblock. Registered before /chat/:room, which would otherwise take "block" for the name of a room. |
GET /api/chat/blocks | a session | Who the signed-in member has blocked. |
GET /api/chat/dm/:who | a session | Start a DM: resolve who, and hand back their identity key so the client can encrypt to it. |
GET /api/chat/file/:name | nothing | Chat images. |
GET /api/chat/rooms | nothing | The rooms you can see: every board room you may enter, and your DMs. |
GET /api/chat/stream | nothing |
| route | needs | what it does |
|---|---|---|
GET /api/assertion/:txid | nothing | |
GET /api/assertions | nothing | Records filed as fwetch-assert, the protocol's escape hatch, by type, author or app. |
| route | needs | what it does |
|---|---|---|
GET /api/name/:name | nothing | |
GET /api/name/resolve/:name | nothing | name.resolve is the one every reader and the gateway calls. |
GET /api/names | nothing | Every .fox name the indexer knows and where each points. |
GET /api/names/for/:addr | nothing | The .fox names and handles an address holds. |
GET /api/names/owned/:addr | nothing | name.list_owned — what this wallet holds, for the wallet's own panel. |
POST /api/names/reindex | a signature | Recovery: a claim's fee is paid to the publisher's address, so the address history is a list of every registration ever made — including any the mempool poll missed while WoC… |
| route | needs | what it does |
|---|---|---|
GET /api/handle/:number | nothing | Who holds a user number, and the coin that carries it. |
GET /api/handles/can-mint/:address | nothing | Whether this address may mint a user number, and which number is next. |
POST /api/handles/claim-mint | a signature | Claim a number before minting it yourself. |
POST /api/handles/claim-mint/done | a signature | The mint went through (or did not). Either finish the claim or drop it. |
GET /api/handles/next | nothing | |
GET /api/handles/recent | nothing | The newest members, for the front page. |
GET /api/handles/taken/:number | nothing | is a specific handle number already minted? (uniqueness guard before mint) |
| route | needs | what it does |
|---|---|---|
GET /api/tartary/deed/:parcel | nothing | One deed as token metadata (name, description, image, attributes) with who holds it now and where its token sits, for any game or world. |
GET /api/tartary/deeds | nothing | Who holds the land: how many parcels are founded, by how many addresses, who holds most, and what was founded last. The question behind it is whether somebody is sweeping. |
GET /api/tartary/deeds/all | nothing | Every founded deed, a page at a time, for a game that wants the whole land at once: ?after= the last seq you were given, ?limit= up to 1000. |
GET /api/tartary/derivation | nothing | The derivation itself, published: the constants a renderer must match. |
GET /api/tartary/district/:height | nothing | district.info — everything about one district, derived. |
GET /api/tartary/founded-map | nothing | Founded parcels per district over a range, so a map can colour what is bought and what is not without fetching every district's parcels. |
GET /api/tartary/founded/:addr | nothing | What this founder holds. |
GET /api/tartary/map | nothing | The map: a window of districts. Everything already surveyed comes back at once; a few missing ones are fetched now, the rest by the surveyor. |
POST /api/tartary/messages | a signature | What this host knows about a handful of transactions. |
GET /api/tartary/parcel/:id | nothing | parcel.owner, plus what stands on it and any live lease. |
GET /api/tartary/parcels/:height | nothing | The parcels in one district, read from the block itself. |
| route | needs | what it does |
|---|---|---|
GET /api/deed/board/:slug.svg | nothing | A board's deed, drawn. |
GET /api/deed/land/:parcel.svg | nothing | Drawn on request from what the chain says, so they are true, and served as SVG so a wallet renders them on a 3D card. |
| route | needs | what it does |
|---|---|---|
GET /api/coin/:number.glb | nothing | A user number's coin as a 3D object. |
GET /api/coin/:number.png | nothing | A user number's coin as a picture. |
GET /api/coin/:number/inscribe | nothing | base64 payloads the client inscribes on-chain when minting a Fwonk |
GET /api/coins/status/:addr | nothing | Which of a wallet's coins are the real ones. |
GET /api/coins/verdicts | nothing | For each outpoint: whether it really is the number it claims, an old design, or a duplicate. Ask this before offering to send or burn a coin. |
| route | needs | what it does |
|---|---|---|
GET /api/piece/:txid | nothing | One piece, by the txid of its inscription: what the profile click shows. |
POST /api/pieces/verdicts | a signature | Which of a wallet's pieces are the real thing, judged by the index, the way coins are judged: a deed card is real when it is the card the index holds for that parcel, a name… |
| route | needs | what it does |
|---|---|---|
GET /api/market | nothing | The market: listings by kind, category, seller, shop or tag. |
POST /api/market/checkout | a signature | Checkout in dollars: a Stripe Checkout session with the split and a held charge. The order record is written when Stripe says it is paid. |
GET /api/market/coin/:number | nothing | everything about one number: who owns it, is it for sale, what has it sold for |
GET /api/market/dropped | nothing | Listings that never appeared, and why. Ask with ?seller=<address> after listing something that did not show up: the reader always knew the reason and used to keep it to itself. |
GET /api/market/fee | nothing | The network's cut of a sale. |
GET /api/market/listing/:txid | nothing | One listing in full. |
GET /api/market/listings | nothing | |
GET /api/market/mine/:address | nothing | what the connected wallet owns and could sell |
POST /api/market/offer | a signature | Presigned offers. The signature a seller produces is what lets a buyer complete the sale alone, so it is stored here and handed out on request. |
GET /api/market/offer/:outpoint | nothing | One offer made on a listing. |
GET /api/market/order/:txid | nothing | One order and where it has got to. |
GET /api/market/orders/:addr | nothing | A member's orders, bought and sold. |
GET /api/market/quote/:txid | nothing | The checkout: exactly what to pay, to whom. Build the transaction from this and put the fwetch-order record in it. With escrow, the buyer's key is needed for the script. |
GET /api/market/sales | nothing | What has sold lately. |
GET /api/market/seller/:addr | nothing | A seller: what they have sold and what people said. |
GET /api/market/shop/:txid | nothing | A shop and everything in it. |
POST /api/market/stripe/onboard | a signature | Seller onboarding: one Stripe-hosted page. We keep only the account id. |
GET /api/market/stripe/status/:addr | nothing | Whether a seller can take card payments yet. |
| route | needs | what it does |
|---|---|---|
GET /api/classified/:txid | nothing | One posting in full. |
GET /api/classifieds | nothing | Cregs List postings, by category, place or search. |
| route | needs | what it does |
|---|---|---|
GET /api/poll/:txid | nothing | One poll: its question, its answers and the count so far. |
GET /api/poll/:txid.csv | nothing | CSV for the spreadsheet people. |
POST /api/poll/:txid/ballot | a signature | An encrypted ballot arrives unsigned by any identity — that is the point. The house verifies it exactly as the indexer will, then writes it. |
GET /api/poll/:txid/encrypted | nothing | A sealed poll's published hashes, before the reveal. |
POST /api/poll/:txid/token | a signature | A token for voting in a sealed poll, so a vote can be counted without being read. |
GET /api/poll/:txid/verify | nothing | Verify one sealed vote yourself: does sha256(choice:salt) match the commitment on chain? |
GET /api/polls | nothing | Open polls, newest first. |
POST /api/polls/ceremony | a signature | Before posting an encrypted poll: get a ceremony. The public parts go in the post; the private parts stay here against the poll's txid once known. |
POST /api/polls/ceremony/bind | a signature | Once the poll post exists, bind its ceremony to the txid. |
| route | needs | what it does |
|---|---|---|
GET /api/tip/quote/:post | nothing | Tipping a post: exactly what to pay, to whom. |
GET /api/tips/:post | nothing | Who has tipped a post, and how much. |
| route | needs | what it does |
|---|---|---|
POST /api/pay/checkout | a signature | Stripe Checkout: a card payment becomes sats on the member's balance. Needs STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET and FWETCH_SATS_PER_USD. |
POST /api/pay/webhook | a signature | Stripe tells the reader a card payment for credits went through. |
| route | needs | what it does |
|---|---|---|
POST /api/sponsor/anon | a signature | An anonymous post from somebody with no wallet at all. |
POST /api/sponsor/claim-for | a signature | A lurker snags a meme for somebody. "claim > user 13 > done." No wallet, no signature: the edition goes to the named member's asset address, the house pays, the recipient is… |
POST /api/sponsor/inscribe | a signature | |
POST /api/sponsor/mint | a signature | A number, minted by the house. A member with no wallet cannot pay for a mint, and without a number their name and picture never show: they stay a persona forever, which makes… |
POST /api/sponsor/opreturn | a signature | |
GET /api/sponsor/status | nothing | What the house holds, its coin pool, and what it has spent today. |
POST /api/sponsor/transfer/finish | a signature | The member's signed transfer, broadcast and paid for by the house. |
POST /api/sponsor/transfer/prepare | a signature | The house builds a transfer of an ordinal the member owns, for the member to sign. |
POST /api/sponsor/upload | a signature | A picture on chain, for listings and shops: signed request, bytes as a data URL, the house writes a B file and returns its reference. |
| route | needs | what it does |
|---|---|---|
POST /api/cache | a signature | |
POST /api/cache-checkout | a signature | Subscribing, and managing a subscription, both act for one cache, so both want its write token: nobody subscribes, or opens the billing of, a cache they cannot write to. |
GET /api/cache-plans | nothing | |
POST /api/cache-portal | a signature | Opens Stripe's own customer portal for the cache's subscriber: changing a card, or cancelling. Wants the cache's write token. |
GET /api/cache/:name | nothing | Read a cache: the whole document with ?key=, one section with &part=, the list of sections with &parts, or the encrypted bytes with no key at all. |
GET /api/cache/:name/plan | nothing | |
GET /api/cache/:name/sats | nothing | Paying for Yipnote in satoshis. Each cache gets an address of its own, derived from the house key, so a payment says what it is for by where it lands. |
GET /api/cache/:name/versions | nothing | Every version of a cache, newest first. |
| route | needs | what it does |
|---|---|---|
GET /api/tod/:name | nothing | One tod by the name it claimed, with the inscription to install from. |
GET /api/tods | nothing | The Den: every tod the indexer has seen, newest first. ?q= searches. |
| route | needs | what it does |
|---|---|---|
POST /api/babel/gallery/locate | a signature | Where an image sits in the Library of Babel's gallery. |
POST /api/babel/locate | a signature | The coordinate is computed, not stored: the same text gives the same address in a browser, a reader and here. |
GET /api/babel/read/:coordinate | nothing | The text at a Library coordinate, which is where a Babel page's words actually live. |
GET /api/babel/shelf/:prefix | nothing | What else sits on this shelf: the "walk to the next page" query. |
| route | needs | what it does |
|---|---|---|
GET /api/wiki | nothing | The whole encyclopedia, in one answer. Babel is meant to be read by programs as much as by people: the corpus is already signed, timestamped and public, and a thing that wants… |
GET /api/wiki/:subject | nothing | A Babel page: its current version, its timeline and what it links to. |
GET /api/wiki/edges/:subject | nothing | snapshot.query — the graph as it stood at a moment. |
GET /api/wiki/frontier | nothing | Pages other pages link to that nobody has written yet. |
GET /api/wiki/snapshot/:ts | nothing | The frontier: subjects an edge points at that have no article yet. Visible gaps are the point — they are where the graph funds its own construction. |
GET /api/wiki/version/:txid | nothing | One version of a page, by its record: what the timeline reads to show an old version's text (its coordinate is the text). |
| route | needs | what it does |
|---|---|---|
GET /api/gekker/joined | nothing | What shows down the left is yours to choose: the servers you joined, and always the ones you own or are a member of. Kept by your session. |
POST /api/gekker/joined | a session | |
POST /api/gekker/keys | a signature | the owner hands out a channel's key: envelopes for one epoch, signed |
GET /api/gekker/keys/:room | a session | your envelopes for a room, by every address linked to your session |
GET /api/gekker/pubkey/:addr | nothing | an address's identity key, which envelopes are sealed to: its own, or that of the identity linked to it |
GET /api/gekker/who/:addr | nothing | Their user number, name, $handle and picture, looked for across every address linked to them. Public, and cached for a minute. |
| route | needs | what it does |
|---|---|---|
GET /api/maze/board | nothing | |
POST /api/maze/run | a signature | A run is how far a player gets without dying. |
GET /api/maze/skulls | nothing | every player's last fall, newest first, for the maze to lay their skulls |
POST /api/maze/treasure | a signature | |
GET /api/maze/treasures | nothing | the Treasure Room: every treasure found, newest first, public |
| route | needs | what it does |
|---|---|---|
GET /api/meme/:txid | nothing | One entry, with everything known about it: who made it, who put it on chain, and how many times it has been inscribed since. |
GET /api/memes | nothing | Search the library. Everything is optional, so a bare call is the front shelf. |
GET /api/memes/bulk | nothing | Rarity for many library entries at once. A feed can show a dozen memes and asking about each separately would be a dozen round trips on every render. |
GET /api/memes/claimed/:txid/:addr | nothing | Has this member already claimed an edition of this meme? One each. |
POST /api/memes/discover | a signature | Find library entries we have never been told about. |
GET /api/memes/dupes | nothing | Duplicate inscriptions, and the entry each one stands for. |
GET /api/memes/held/:addr | nothing | Memes this member holds: masters they hold, and editions they claimed (only claims inside the supply count). |
GET /api/memes/may-post/:txid/:addr | nothing | May this address post that meme? Asked by the composer before the post is signed, so nobody pays for a post whose meme will be stripped on arrival. |
GET /api/memes/sha/:sha | nothing | Is this image already in the library? Asked by the composer BEFORE it spends anything. |
GET /api/memes/shelves | nothing | The Memetic Library's shelves. |
GET /api/memes/tags | nothing | The shelves and tags that actually exist, so browsing does not depend on guessing what someone might have typed. |
| route | needs | what it does |
|---|---|---|
GET /api/network | nothing | The network in one call, for the protocol's home page and anyone else. |
GET /api/network/stats | nothing | How many members, records, boards and names the network has. |
| route | needs | what it does |
|---|---|---|
GET /api/health | nothing | 200 when this box is well, 503 with the reason when it is not. ?format=text answers HEALTHY or UNHEALTHY on the first line, for a monitoring service to watch. |
| route | needs | what it does |
|---|---|---|
GET /api/version | nothing | Diagnostics: what version is actually running, and what does the index hold? Useful for telling "the fix is not deployed" apart from "the fix did not work". |
| route | needs | what it does |
|---|---|---|
GET /api/collections | nothing | Collections the reader knows, or one creator's. |
POST /api/collections | a signature | Create. Signed by the creator; stays a draft until published. |
GET /api/collections/:id | nothing | One collection and the pieces in it. |
GET /api/collections/:id/can-mint | nothing | Can this identity mint to this address right now? |
POST /api/collections/:id/delete | a signature | Delete a collection that has minted nothing. |
POST /api/collections/:id/mint | a signature | The mint. The minter has already paid: one transaction with (at least) price to the creator and the market fee to #1. |
GET /api/collections/:id/preview | nothing | A preview: what a given seed would produce. |
POST /api/collections/:id/publish | a signature | Publish: freeze the layers, open the mint. Every variant must be uploaded. |
POST /api/collections/:id/variant | a signature | Upload one variant image. PNG, same size as the collection, one call each. Signed by the creator. Drafts only. |
| route | needs | what it does |
|---|---|---|
GET /api/chronovisor/address/:addr | nothing | an address as Chronovisor knows it: who it is (user number, name, handle, picture), and every record it signed or inscription it was given |
GET /api/chronovisor/block/:height | nothing | one block: every Vulpine record Chronovisor has from it |
GET /api/chronovisor/records | nothing | records, newest first; ?tag= ?author= to narrow, ?before=<id> to page back, ?after=<id> to catch up oldest first |
GET /api/chronovisor/search | nothing | one box for everything: a transaction id, an address, a block height, a #user number or a $handle |
GET /api/chronovisor/status | nothing | |
GET /api/chronovisor/stream | nothing | new records as they arrive, for anyone following along: ?tags=fwetch-post,fwetch-chat, ?after=<id> to resume |
GET /api/chronovisor/tx/:txid | nothing | |
GET /api/chronovisor/txinfo/:txid | nothing | one transaction as Chronovisor holds it: unconfirmed or confirmed and how deep, its block, whether it came with a proof, where its money came from and went, and the records… |
| route | needs | what it does |
|---|---|---|
GET /api/ads | nothing | Every booking, for the dashboard. Advertisers see their own; curators see all of them. |
GET /api/ads/:txid/stats | nothing | How an advert has done: views and clicks. |
GET /api/ads/current/:slot | nothing | What is showing in a slot right now, and when it changes. Computed from the bookings and the clock, so any application reading the same records arrives at the same answer. |
GET /api/ads/go/:txid | nothing | Clicks are cheap to fake, so they buy nothing; they tell the advertiser whether the ad worked. /api/ads/go/:txid records one and redirects. |
POST /api/ads/impression | a signature | Impressions: one per member per day per ad per board, and per post the ad sat beside. |
GET /api/ads/rates | nothing | What an advert costs, and how the money is split. |
GET /api/ads/settlements | nothing | Published, so anyone can check the split against the transaction. |
| route | needs | what it does |
|---|---|---|
GET /api/flags | nothing | Every flag that can be earned or awarded. |
GET /api/flags/:addr | nothing | A member's flags: what they have earned, plus the country their posts came from. |
POST /api/flags/award | a signature | Award or revoke. Curators only, checked against who actually holds #1 or #2 rather than anything the caller claims. |
POST /api/flags/define | a signature | Curators: add a flag or change how it is awarded. |
POST /api/flags/delete | a signature | Curators: remove a flag. |
GET /api/flags/images | nothing | The pictures a flag can be. Just what is in the folder, so adding a flag design is dropping a 50x35 PNG into public/flags/. |
POST /api/flags/run | a signature | Run every automatic rule now. Also runs on its own schedule; this is for a curator who has just written a rule and wants to see it take effect. |
| route | needs | what it does |
|---|---|---|
GET /api/economic | nothing | Friends are fwetch-assert records of type fren, which the indexer already files, so this app invented no record and needs no new table beyond a few minutes' memory of what… |
GET /api/economic/:who | nothing | One person: their frens, what each holds, and the total. Named by number or address. |
GET /api/economic/:who/addresses | nothing | Which addresses this person is counted across, and what each holds. Asked when a total looks wrong: the answer is almost always an address the network has never been told about. |
| route | needs | what it does |
|---|---|---|
GET /api/banners | nothing | Every banner this reader has, by theme. |
GET /api/banners/random | nothing | One of a board's own banners, picked at random. |
| route | needs | what it does |
|---|---|---|
GET /api/featured | nothing | The collections this reader puts forward, which is what the Library and the profile picker show. |
GET /api/featured/mine/:addr | nothing | What a member holds from the FEATURED collections, across every address they have ever used. |
| route | needs | what it does |
|---|---|---|
GET /api/frens/:who | nothing | A fwetch-assert of type fren, written into the protocol spec at 9.6.1. |
GET /api/frens/:who/with/:other | nothing | Is this pair frens, and which way round? For a button that has to know what it says before anybody presses it. |
| route | needs | what it does |
|---|---|---|
GET /api/mcp/:name | nothing | Some clients look before they leap. |
POST /api/mcp/:name | a signature | Yipnote as a tool an assistant holds. One address, added once, and the pasting stops. |
| route | needs | what it does |
|---|---|---|
GET /api/members | nothing | Everyone. The same query the sidebar's New members uses, uncapped. |
GET /api/members/new | nothing | Newest members, for the leaderboard on the right rail. |
| route | needs | what it does |
|---|---|---|
GET /api/portraits | nothing | How many portraits are ready for the numbers that have been minted. |
GET /api/portraits/:number | nothing | The portrait that belongs to a user number. |
| route | needs | what it does |
|---|---|---|
GET /api/presence/:room | nothing | Who else is in that room right now. Never signed, so never proof of anything. |
POST /api/presence/:room | a signature | Say where you are standing in Tartary. Kept in memory for twenty seconds and never written to the chain. |
| route | needs | what it does |
|---|---|---|
GET /api/resolve/:handle | nothing | |
GET /api/resolve/:who | nothing | Turn what someone typed into an address. People know each other by number here, not by key. |
| route | needs | what it does |
|---|---|---|
GET /api/tx-exists/:txid | nothing | does this txid exist on the network yet? (for honest "posted" confirmation) |
GET /api/tx/:txid | nothing | raw transaction passthrough, used when signing a listing |
| route | needs | what it does |
|---|---|---|
GET /api/wallet/:address | nothing | Everything an address holds: numbers, pictures, names, deeds and tods. ?fresh=1 skips the kept answer. |
POST /api/wallet/warm | a signature | Ask the reader to look up an address before it is needed, so the wallet view opens at once. |
| route | needs | what it does |
|---|---|---|
GET /api/whereami | nothing | Where the caller appears to be, so the client can show a flag without the member telling us anything. Country level, and it fails silently. |
GET /api/whereami/debug | nothing | Why is there no flag? Two different failures produce the same empty result: the real address never reaching us through nginx, or every lookup service refusing. |
| route | needs | what it does |
|---|---|---|
GET /api/activity | nothing | Daily activity for the last N days, for charts. |
| route | needs | what it does |
|---|---|---|
GET /api/apps | nothing | Applications for the desktop, published on chain by anyone. |
| route | needs | what it does |
|---|---|---|
GET /api/b/:hash | nothing | The bytes of an inscription by its hash: pictures, videos and files are served from here. |
| route | needs | what it does |
|---|---|---|
GET /api/balance/:address | nothing | BSV balance for an address (confirmed + unconfirmed), in sats and BSV |
| route | needs | what it does |
|---|---|---|
POST /api/broadcast | a signature | WRITE: broadcast a client-signed tx, then index it immediately ---- |
| route | needs | what it does |
|---|---|---|
GET /api/content/:outpoint | nothing |
| route | needs | what it does |
|---|---|---|
GET /api/credits/:addr | nothing | A member's credit balance with the house. |
| route | needs | what it does |
|---|---|---|
GET /api/donate | nothing | Giving the network money on purpose. Everything here has been somebody paying for a thing: a name, a board, a listing, a year of Yipnote. |
| route | needs | what it does |
|---|---|---|
GET /api/founders/settlements | nothing | What the protocol has paid out to the founders, and when. |
| route | needs | what it does |
|---|---|---|
GET /api/house-ads | nothing | Read is public: every visitor's ad slots need it. Writes are curator-only, the same gate as everything else on the ads page. |
| route | needs | what it does |
|---|---|---|
GET /api/id/:addr.svg | nothing | the ID card: who a key is on the network, drawn live |
| route | needs | what it does |
|---|---|---|
POST /api/index/:txid | a signature |
| route | needs | what it does |
|---|---|---|
POST /api/link | a signature | Link addresses that demonstrably belong together. |
| route | needs | what it does |
|---|---|---|
GET /api/mint/estimate | nothing | mint-cost estimate for the composer |
| route | needs | what it does |
|---|---|---|
GET /api/notifications/:addr | nothing | What has happened to you since you last looked. |
| route | needs | what it does |
|---|---|---|
GET /api/owned/:address | nothing | Which numbers does this member hold? Index only, no chain calls, no rate limit, and it follows every link we know about. |
| route | needs | what it does |
|---|---|---|
GET /api/people | nothing | Find people as you type: a number, or the start of a name or $handle. It returns only what chat already shows publicly: name, number and picture. |
| route | needs | what it does |
|---|---|---|
GET /api/rate | nothing | What a satoshi is worth in dollars right now, so a price can be shown in either. |
| route | needs | what it does |
|---|---|---|
GET /api/rawtx/:txid | nothing | Raw hex for a transaction, used to build the inputBEEF a wallet needs before it will accept an input for an output it does not manage itself. |
| route | needs | what it does |
|---|---|---|
POST /api/session | a signature | The feed is a GET. A private board needs to know who is asking, and an address in the query string is a claim anyone could make. |
| route | needs | what it does |
|---|---|---|
GET /api/sigil/:txid | nothing | full sigil metadata for one txid (incl. glbModel for 3D) — the unspent listing is lightweight; this fetches the rich per-inscription data on demand |
| route | needs | what it does |
|---|---|---|
GET /api/snapshot | nothing | How a new reader gets everything this one knows: the whole index as one SQLite file. |
| route | needs | what it does |
|---|---|---|
GET /api/stream | nothing | The live feed: new records pushed down an open connection as the indexer files them, so a wallet or a tod stops asking every few seconds. |
| route | needs | what it does |
|---|---|---|
GET /api/utxos/:address | nothing |
| route | needs | what it does |
|---|---|---|
POST /api/verified | a signature | For a list of outpoints, whether each is what it claims to be. |
| route | needs | what it does |
|---|---|---|
GET /api/welcome | nothing | Welcome foxes: a piece from the house's pocket to every new member. See lib/welcome.js. |
| route | needs | what it does |
|---|---|---|
POST /api/admin/ads/settle | a curator | Preview or pay a settlement. Curators. |
POST /api/admin/banners | a curator | Curators: switch one on or off, delete it, or add a new one. |
POST /api/admin/boards | a curator | Curator dashboard: which boards are up front, in what order, and hidden. |
POST /api/admin/credits | a curator | A curator loads a balance by hand (a friend paid you in cash; testing). |
POST /api/admin/curate | a curator | Curators: hide or restore a post, a listing or a picture. |
POST /api/admin/featured | a curator | Curators: put a collection forward, or take it back. |
POST /api/admin/founders/settle | a curator | Protocol revenue in a window — ads paid to the publisher, market fees, the house's mint cuts — and the founders' shares of it, paid from the house in one transaction, published… |
POST /api/admin/house-ads | a curator | Create or update. Without an id it creates; with one it updates that row. |
POST /api/admin/house-ads/delete | a curator | Curators: remove one of the house's own adverts. |
POST /api/admin/house/split | a curator | Curators: split the house's fattest coin into many, so it can pay for several things at once. |
GET /api/admin/houses | a curator | Reading is open: a house's address and balance are on the chain for anyone to see, and the status page has always shown house 0's. |
POST /api/admin/houses | a curator | Add a house, switch one off, fund it from house 0 or sweep it back. Signed by the key that holds #0 or #1. |
POST /api/admin/portraits | a curator | Curators: choose the collection portraits come from. |
POST /api/admin/portraits/backfill | a curator | Curators: draw portraits for numbers that have none. |
POST /api/admin/remint | a curator | A curator re-mints a retired founding number to a chosen address, paid by the house. |
POST /api/admin/retire | a curator | Retire a founding number from the site: the same thing scripts/retire.js --force --apply does, as a button. |
GET /api/admin/status/:addr | a curator | Whether an address is a curator, and what it holds. |
POST /api/admin/welcome | a curator | Curators: choose the collection new members are given a fox from. |
POST /api/admin/welcome/backfill | a curator | Curators: give a welcome fox to members who joined before there was one. |
| route | needs | what it does |
|---|---|---|
GET /api/mod/am-i/:addr | a curator | |
GET /api/mod/hidden | a curator | What is hidden right now, and the log. For the janny desk. |
POST /api/mod/hide | a curator | Hide or restore a post or a meme. The record stays; it stops being served. Logged with who and why, so curators can review what their jannies do. |
POST /api/mod/sticky | a curator | Sticky a thread to the top of its board. The board's owner, or a curator. |
| route | needs | what it does |
|---|---|---|
POST /api/delegates | a curator | Let another key post as your number, or take that back. |
GET /api/delegates/:number | a curator | The holder signs {number, add, remove}; the house writes it to chain as fwetch-delegate; the indexer applies it. |
GET /api/delegates/for/:addr | a curator | Which numbers may this address post as? Its own, plus every delegation. |
| route | needs | what it does |
|---|---|---|
POST /api/reconcile | a curator | Force a reconciliation. Useful after a transfer made elsewhere, and for telling "the index is behind" apart from "something is wrong". |
| route | needs | what it does |
|---|---|---|
GET /api/debug/identity/:addr | a curator | Diagnostic: exactly what the index holds for one wallet. Built because "the profile does not show" kept being guessed at instead of observed. |
| route | needs | what it does |
|---|---|---|
GET /api/indexer/status | a curator | Whether the indexer is running, when each loop last beat, how stale each kind of item is, and why it is not running if it is not. |
| route | needs | what it does |
|---|---|---|
POST /api/legacy/scan/:addr | a signature | These use the original 546-sat Sigil format that GorillaPool's address index only partially covers, so we trace them forward from their mint transactions. |
GET /api/legacy/status/:addr | nothing | What an old Twetch or Twonk address still holds here. |
| address | what it is |
|---|---|
/embed/trollbox.js | The troll box on any page in one line: <script src="https://fwetch.lol/embed/trollbox.js" async></script>. |
/embed/trollbox | The same box as a page to frame; ?room= another open room. |
/developers, /deeds, /protocol, /building, /tods, /gekker, /terminal | These guides. |