https://exclusivo.one/v1
No auth, GET only, CORS-open — so you can call it straight from a browser with
no backend.
Endpoints
Envelopes
Success
pagination on lists. meta only appears when a source degraded.
Error
Three things that will catch you out
A short page isn’t the end. Several endpoints cut the page first and drop unusable rows afterwards, sodata.length can be less than limit — even zero
— while hasMore is true. Always page on hasMore and nextCursor.
Don’t parse collectionId. It looks like <chain>_<contractAddress>, but the
address half is lowercased for every chain including Solana. Solana base58 is
case-sensitive, so slicing a Solana collectionId gives you an invalid address.
Pass the id back to /v1/collections/{id} and read the real contractAddress
from there.
Chains. All eight are accepted: solana, ethereum, polygon, base,
ink, apechain, abstract and robinhood. Anything else is a bad_request.
Prices
Always an object, never a bare number:
Do arithmetic on
raw. decimal loses precision on large wei values, and usd
can be null on any row.
Address casing
EVM addresses come back lowercase. Solana base58 keeps its case — never lowercase one, it stops being a valid address.Degrading rather than failing
Most endpoints are built to degrade. Sources are independently timed out, and a failing one gives you null fields or ameta.stale flag with a 200.
/v1/collections/{id}, …/floor, …/listings and the token endpoint never
return 502. Only /v1/collections and …/sales can.
meta.stale means a source was unreachable, not merely behind. EXC’s own
Solana listings sync every couple of minutes and can lag by about that without
being flagged.
Caching and limits
Responses are CDN-cached withstale-while-revalidate, so don’t add
cache-busting parameters.
Separate counters. → Rate limits
