Tribehold

Public API

Everything the site does is available over HTTP, no key needed. The flow for a wallet or an agent is: build → sign → submit. Amounts are lovelace (1 ADA = 1,000,000) and whole tokens.

MethodRouteWhat
GET/api/tokens?sort=bump|new|mcap|graduated&q=List tokens with live curve/AMM state, progress and risk score. sort=safest ranks by risk.
GET/api/tokens/{policy}One token.
GET/api/tokens/{policy}/trades?limit=50Trades, newest first (kind, address, ADA, tokens, price).
GET/api/tokens/{policy}/candles?res=1m|5m|15m|1h|4h|1dOHLC of ADA price per token plus ADA volume, from trades.
GET/api/tokens/{policy}/holdersTop holders with share of supply; curve and AMM addresses labelled.
GET/api/tokens/{policy}/comments · POST {address, body}Comments.
GET/api/kingKing of the hill.
GET/api/creators/{address}A creator's track record: tokens launched, graduated, abandoned, volume, fees earned.
GET/api/activityLatest trades across all tokens.
GET/api/settingsProtocol settings straight from the on-chain settings UTxO, plus script hashes and addresses.
GET/api/tx/quote?policy=&side=buy|sell&amount=Exact on-chain quote (lovelace in / tokens in): output, fees, price impact.
POST/api/tx/launch {address, utxos[], ticker, name, supply?, description?, image?, banner?, socials…}Builds the mint tx for a CIP-30 wallet (utxos = CBOR hex from getUtxos). Returns {cbor, policyId}.
POST/api/tx/buy {address, utxos[], policy, adaIn} · /api/tx/sell {…, tokensIn}Builds a curve or AMM trade for the wallet. Returns {cbor, quote}.
POST/api/tx/submit {cbor, witness, policy?}Attach the wallet's witness set (signTx(cbor, true)) and submit. Returns {hash}.
GET/api/me?address=&assets=unit=qty,…Portfolio: tokens created with earnings, holdings, trade history.
GET/api/healthLiveness and indexer freshness.
Example: buy 25 ADA of a token from a script
const utxos = await api.getUtxos();                       // CIP-30, CBOR hex[]
const address = (await api.getUsedAddresses())[0];
const r = await fetch("/api/tx/buy", { method: "POST", headers: { "content-type": "application/json" },
  body: JSON.stringify({ address, utxos, policy, adaIn: "25000000" }) }).then(x => x.json());
const witness = await api.signTx(r.cbor, true);
const { hash } = await fetch("/api/tx/submit", { method: "POST", headers: { "content-type": "application/json" },
  body: JSON.stringify({ cbor: r.cbor, witness }) }).then(x => x.json());