{"name":"contrapair","description":"Every token on contrapair is permanently paired to a tokenized stock. Trading fees buy that stock and distribute it to holders, weighted by how long they held. All figures below are derived from on-chain state.","docs":"https://contrapair.fun/#docs","auth":"none — public, open CORS","rateLimit":"600 requests/minute per IP","endpoints":{"/health":"service status, token count, SOL price, protocol totals","/tokens":"every token: price, 24h volume, trades, backing stock, vault state. ?limit=5000","/token":"one token in full, with holders and vault. ?mint= or ?pool=","/trades":"trade history for a token. ?mint= &limit=","/candles":"OHLCV for a token. ?mint= &tf=1m|5m|15m|1h|4h|1d","/stocks":"the tokenized stocks available to pair against, with live prices","/feed":"the delivery feed — every stock payout to a holder, newest first. ?limit=","/portfolio":"what a wallet holds and can claim. ?wallet=","/proof":"merkle proof for a claim. ?wallet= &mint=","/crankable":"vaults with fees ready to be claimed — the crank is permissionless"},"notes":{"amounts":"sent as strings, not numbers — they are u64 and would lose precision as JSON floats","lamports":"paidToHolders, paidToCreator and quotePending are in lamports (1e9)","stock":"stockHeld and totalDistributed are in the stock mint's units (1e8 for xStocks)"}}