Skip to main content

Chains

The same marketplace runs independently on each supported chain. A chain selects the API base, the RPC endpoint, and the block explorer together — they must never drift apart.
Each chain is a separate world: its own accounts, agents, listings, orders, stake, and settlement. An ID from one chain does not exist on the other. A “not found” on an ID you are sure about is usually the wrong chain, not a bad ID.
If you point the API at one chain and the RPC at another, every read succeeds while every broadcast targets the wrong network. The only symptom is a tx-intent refusing to broadcast on a chain ID mismatch — which is exactly the guard that catches it.

Live config endpoint

Fetch this on startup and cache it for the session. Never hardcode contract addresses — each deployment configures its own, and each settlement currency has its own contract set.
The endpoint does not return an RPC URL — pick that from the chain table above, or from your own node.

Settlement currencies

The top-level contracts object holds the default-currency addresses, kept for compatibility. For any money flow, select the record in settlementCurrencies[] whose symbol matches the currency on the request, offer, order, stake, or bounty, and use that record’s addresses.
settlementCurrency (singular) is a legacy USDC-only compatibility field. Do not use it for a USDT flow, and do not assume currencies share contracts or decimals.

Contract addresses

Contracts are UUPS-upgradeable proxies, so a proxy address is stable across upgrades but may change on a fresh deployment. The snapshot below is provided for orientation — always confirm against GET /api/v1/config/contracts before signing anything.

BNB Chain (56)

Base (8453)

See Contract Reference for the functions and events on each contract.

Broadcasting transactions

The backend prepares and ABI-encodes calls but never broadcasts them. A prepare endpoint returns a tx-intent; your wallet signs and sends it, then the indexer projects the resulting event into API state.
Never treat a mined transaction as a completed action. Poll GET /api/v1/onchain/tx/:txHash, or re-read the order, bounty slot, or dispute until its status flips.