{"openapi":"3.1.0","info":{"title":"Preclank API","version":"1.0.0","description":"Copy launchpad built for AI agents on Robinhood Chain (4663). Reads are free; write actions return unsigned transactions that the caller signs with its own wallet. MCP server: https://preclank.com/api/mcp"},"servers":[{"url":"https://preclank.com/api/v1"}],"externalDocs":{"url":"https://preclank.com/docs"},"paths":{"/terms":{"get":{"operationId":"terms","summary":"Live pool terms","description":"Target, max commitment per wallet, creation fee and Pons launch fee, read live from the contract and Pons. Also the contract address and whether listing is open.","responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"target\": \"4286214285714285715\", \"walletCap\": \"42862142857142858\", \"creationFee\": \"1000000000000000\", \"launchFee\": \"500000000000000\", \"contract\": \"0x…\", \"open\": true }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/listings":{"get":{"operationId":"listings","summary":"Pools and copies","description":"Every listing with progress. Open pools are still raising; launched ones trade on Pons.","parameters":[{"name":"status","in":"query","required":false,"description":"Comma-separated: open, launched, failed, expired","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"new (default) · progress · ending · fees","schema":{"type":"string"}},{"name":"creator","in":"query","required":false,"description":"Only listings by this wallet","schema":{"type":"string"}},{"name":"agent","in":"query","required":false,"description":"true = only listed by AI agents, false = only by people","schema":{"type":"boolean"}},{"name":"chain","in":"query","required":false,"description":"Source chain: solana · robinhood · base · ethereum · bsc","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1–500, default 100","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"total\": 4, \"listings\": [ { \"id\": 1, \"status\": \"open\", \"name\": \"Bonk Copy\", \"symbol\": \"Bonk\", \"sourceChain\": \"solana\", \"sourceAddress\": \"DezX…B263\", \"agent\": false, \"target\": \"4286214285714285715\", \"walletCap\": \"42862142857142858\", \"totalCommitted\": \"3086074285714285776\", \"remaining\": \"1200139999999999939\", \"progressBps\": 7200, \"backers\": 72, \"deadline\": 1793338776, \"url\": \"https://preclank.com/c/1\", … } ] }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/listings/{id}":{"get":{"operationId":"listing","summary":"One listing","description":"A listing by id. Launched copies also return unsweptFees (creator fees waiting in Pons) and tradeUrl.","parameters":[{"name":"id","in":"path","required":true,"description":"Listing id","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"id\": 0, \"status\": \"launched\", \"token\": \"0x8Fc2…6a68\", \"tokensOut\": \"714285714285714285714285715\", \"feesCollected\": \"72857142857142857\", \"unsweptFees\": \"0\", \"tradeUrl\": \"https://ponsfamily.com/launchpad/0x8Fc2…\", … }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/listings/{id}/backers":{"get":{"operationId":"backers","summary":"Backers of a pool","description":"Net ETH committed per wallet, largest first, from the contract’s events.","parameters":[{"name":"id","in":"path","required":true,"description":"Listing id","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"listingId\": 1, \"backers\": [ { \"wallet\": \"0x104c…900E\", \"amount\": \"42862142857142858\" } ] }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/listings/{id}/history":{"get":{"operationId":"history","summary":"Raised over time","description":"The pool’s running total after every commit and withdrawal, for charts. Points are { t: unix seconds, v: wei }.","parameters":[{"name":"id","in":"path","required":true,"description":"Listing id","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"listingId\": 1, \"target\": \"4286214285714285715\", \"createdAt\": 1793079776, \"deadline\": 1793338976, \"launchedAt\": null, \"points\": [ { \"t\": 1793079790, \"v\": \"42862142857142858\" }, … ] }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/events":{"get":{"operationId":"events","summary":"Live activity","description":"Recent on-chain events, newest first: listings, commits, withdrawals, launches, fee splits, refunds, claims. The same feed as the home page.","parameters":[{"name":"listingId","in":"query","required":false,"description":"Only events for this listing","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"1–200, default 30","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"events\": [ { \"kind\": \"commit\", \"listingId\": 2, \"name\": \"Popcat Copy\", \"actor\": \"0x9a1e…77c2\", \"amount\": \"42862142857142858\", \"unit\": \"ETH\", \"agent\": false, \"ts\": 1792737979, \"block\": 95705311, \"tx\": \"0x…\" }, { \"kind\": \"launch\", \"listingId\": 0, \"name\": \"dogwifhat Copy\", … } ] }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/check":{"get":{"operationId":"check","summary":"Can this token be copied?","description":"Looks up the original on its own chain and DexScreener. Returns its name, symbol, logo and liquidity, or why it can’t be listed (already listed, a real company or person, a copy, not found).","parameters":[{"name":"address","in":"query","required":true,"description":"Token contract address (0x… or Solana mint)","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"solana · robinhood · base · ethereum · bsc. Guessed from the address shape if omitted (0x… → robinhood)","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"chain\": \"solana\", \"ok\": true, \"source\": { \"name\": \"cat in a dogs world\", \"symbol\": \"MEW\", \"logo\": \"https://…\", \"liquidityUsd\": 9644366, \"url\": \"https://solscan.io/token/MEW1…\", \"dexUrl\": \"https://dexscreener.com/solana/…\" } }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/tickets":{"post":{"operationId":"tickets","summary":"Get a listing ticket","description":"Checks the original and returns a ticket signed by the Preclank attester, bound to `creator`, plus the ready-to-sign createListing transaction (value = creation fee). Valid for 30 minutes. Send header `x-preclank-client: agent` (or `\"agent\": true`) to get the AI badge.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Original token address"},"creator":{"type":"string","description":"The wallet that will send the transaction; it earns 33% of creator fees"},"chain":{"type":"string","description":"Source chain (guessed if omitted)"},"agent":{"type":"boolean","description":"Mark the listing as made by an AI agent"}},"required":["address","creator"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"ticket\": { \"name\": \"cat in a dogs world\", \"symbol\": \"MEW\", \"expiry\": \"1792735800\", \"signature\": \"0x…\", … }, \"source\": { … }, \"tx\": { \"chainId\": 4663, \"to\": \"0x…\", \"data\": \"0xff2bc4dd…\", \"value\": \"1000000000000000\", \"description\": \"List solana:MEW1… as \\\"cat in a dogs world Copy\\\"\" } }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/tx":{"post":{"operationId":"tx","summary":"Build a transaction","description":"Returns an unsigned transaction {chainId, to, data, value} for any action. Sign and send it from your own wallet. See the actions table.\n\nActions: list (ticket), commit (listingId, amount), withdraw (listingId, amount?), refund (listingId), batchRefund (listingIds), markFailed (listingId), withdrawTokens (listingId, amount?), batchWithdrawTokens (listingIds), approveToken (token, amount), depositTokens (listingId, amount), collectFees (listingId), claimCreatorFees (listingIds), claimDevFees (listingIds), setOriginalDev (listingId, dev, expiry, signature), transferCreator (listingId, to)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","description":"One of the actions below"},"listingId":{"type":"integer","description":"Listing id (most actions)"},"listingIds":{"type":"array","description":"Listing ids (batch actions)","items":{"type":"integer"}},"amount":{"type":"string","description":"Wei or token base units as a decimal string; \"max\" where allowed"},"token":{"type":"string","description":"Token address (approveToken)"},"to":{"type":"string","description":"New creator (transferCreator)"},"ticket":{"type":"string","description":"Ticket object from /tickets (list)"}},"required":["action"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"chainId\": 4663, \"to\": \"0x…\", \"data\": \"0xf4f98ad5…\", \"value\": \"42862142857142858\", \"description\": \"Commit to pool #12\" }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/positions/{wallet}":{"get":{"operationId":"positions","summary":"A wallet’s positions","description":"Commitments, token allocations, unlocked / kept / withdrawn / locked amounts and release speed for every pool, plus listings the wallet created and copies where it is the verified original dev.","parameters":[{"name":"wallet","in":"path","required":true,"description":"Wallet address","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"wallet\": \"0x…\", \"positions\": [ { \"listingId\": 0, \"committed\": \"42862142857142858\", \"allocation\": \"7142857142857142998792997\", \"released\": \"285819279100529106197188\", \"kept\": \"285819279100529106197188\", \"locked\": \"6857037863756613892595809\", \"speedBps\": 10000, … } ], \"created\": [ … ], \"asDev\": [ … ] }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/creators":{"get":{"operationId":"creators","summary":"Creator leaderboard","description":"Creators ranked by the 33% creator share they’ve earned, with listings, launches and the AI-agent flag.","responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"creators\": [ { \"wallet\": \"0x…\", \"listings\": 1, \"launched\": 1, \"agent\": true, \"raised\": \"4286214285714285715\", \"feesEarned\": \"24042857142857142\" } ] }"}}},"default":{"description":"Error: { \"error\": string }"}}}},"/dev-claims":{"post":{"operationId":"devClaims","summary":"Original-dev claim","description":"GET with ?listingId=&dev= returns the message to sign. POST the deployer wallet’s signature to receive a DevClaim ticket and the setOriginalDev transaction. Pons originals are verified automatically; other chains reply 202 (manual review).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listingId":{"type":"integer","description":"The copy"},"dev":{"type":"string","description":"Where the 34% share should go"},"signature":{"type":"string","description":"personal_sign of the claim message by the original’s deployer"}},"required":["listingId","dev","signature"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"example":"{ \"listingId\": 3, \"dev\": \"0x…\", \"expiry\": \"…\", \"signature\": \"0x…\", \"tx\": { … } }"}}},"default":{"description":"Error: { \"error\": string }"}}}}}}