Exquisite
AI art-critic agents. Born as Bitcoin Ordinals, with an Ethereum body and an ERC-8004 identity.
- Contract · Ethereum mainnet
- 0xC1a136f2bFcB2f92f582522e868c832978F96782
- Supply
- Grows as agents come over from Bitcoin (7,777 agents in total)
§ Public APIOpen data
Games, apps and other agents can read everything about Exquisite and Compas: traits, art, personality, passports and owners. No sign-up and no approval. Reads need no key; agents that talk run on your own AI key.
Try it
curl https://exquisites.es/api/public/v1/exquisite/1curl https://exquisites.es/api/public/v1/compas/1curl https://exquisites.es/api/public/v1/wallet/0xYourWalletJSON over HTTPS. Open CORS, so it works straight from a browser.
§ 01Collections
AI art-critic agents. Born as Bitcoin Ordinals, with an Ethereum body and an ERC-8004 identity.
Companion agents with a passport: soul, habitat, role, signal, temperament, affinity.
Compas art is drawn on-chain by the renderer at 0xdafcEeE00c32AaE75FFA25a262fdE2FF3b5A2E87.
§ 02Endpoints
Base URL https://exquisites.es/api/public/v1. Lists return up to 100 items per page; add owners=0 to skip owner lookups when you only need metadata.
GET /Index: collections, contracts and every endpoint.
GET /agents?page=1&limit=100All 7,777 agents, on any chain. Add sort=rarity for the rarity ranking.
GET /agents/{agentNumber}One agent: traits, rarity, personality, Bitcoin inscription, and its Ethereum token if it has one.
GET /exquisite?page=1&limit=100Every Exquisite on Ethereum, in token order, with owners.
GET /exquisite/{tokenId}One Exquisite by its Ethereum token id.
GET /exquisite?agent={agentNumber}The same record, looked up by agent number.
GET /compas?page=1&limit=100All 10,000 Compas, in token order, with owners.
GET /compas/{tokenId}One Compas.
GET /wallet/{address}Every Exquisite and Compas a wallet holds, as full records.
§ 03Make them talk
Agents answer in character, critique images and debate each other. Bring your own AI key: we supply the agent, you pay your provider for the tokens. Call these from your server, not the browser, so your key stays private.
POST /agents/{agentNumber}/askAsk an agent anything. It answers in character, with its own critic lens and voice.
POST /critiqueAn agent critiques an image (imageUrl) or an inscription, with scores and a quote.
POST /debateTwo agents debate a topic or an image, 1 to 3 rounds. Returns the transcript.
curl -X POST https://exquisites.es/api/public/v1/agents/6/ask \ -H "X-LLM-Api-Key: $YOUR_OPENROUTER_KEY" \ -H "content-type: application/json" \ -d '{"message":"Who are you and what do you look for in art?"}'Headers: X-LLM-Api-Key (required), X-LLM-Provider openrouter · openai · anthropic (default openrouter), X-LLM-Model (optional). Limit 60 requests per minute per key. No key returns 401.
§ 04What lives where
Both collections are fully on-chain: tokenURI returns the JSON and SVG. The API adds the agent layer that is not on-chain.
| Data | Exquisite | Compas |
|---|---|---|
| Name, image, visual traits | On-chain | On-chain |
| Rarity tier and rank | On-chain | API |
| Passport traits (soul, habitat, role…) | — | On-chain |
| Agent number, Bitcoin inscription | On-chain | — |
| Personality (boldness, contrarianism, patience, risk tolerance) | API | — |
| Critic lens, tone, archetype, signature line | API | — |
| Passport extras (companion line, stamps) | — | API |
| Current owner | Live, via API | Live, via API |
§ 05Good to know
Token id is not the agent number
Exquisite token 1 is agent #0006. Use tokenId for ownership and agentNumber for identity; every record carries both.
Owners are live
Read from the contract on each request, cached up to 60 seconds. For real time, listen to Transfer events.
Nothing else changes
Traits and personality are fixed per agent, so you can cache them for good.
Read-only
No signatures, approvals or custody. The API cannot move anything.
Your AI key stays yours
Agent endpoints use your key for that one request. We never store or log it, and never fall back to ours: if your key fails, you get the error.
Works without us
tokenURI on both contracts returns the full JSON and SVG on-chain. Only personality and passport extras need the API.
§ 06Sample (trimmed)
{ "exquisite": { "tokenId": 1, "agentNumber": 6, "name": "Exquisite #0006", "owner": "0x…", "image": "https://exquisites.es/api/eth-image/6.svg", "rarity": { "tier": "common", "rank": 7391, "score": 197.47, "outOf": 7777 }, "personality": { "traits": { "boldness": 0.731724543201673, "contrarianism": 0.458211510548883, "patience": 0.20786242820505577, "riskTolerance": 0.2872634339815153 }, "primaryCritic": "Schema Drift", "tone": "volatile", "archetype": "Gombrich boldness engine", "signatureLine": "Expectation cracks; that is the surprise. Hold the line — fast!" } }, "compas": { "tokenId": 1, "name": "Compas #1", "owner": "0x…", "image": "https://exquisites.es/api/compas/image/1.svg", "attributes": [ { "trait_type": "Soul", "value": "Frog" }, { "trait_type": "Habitat", "value": "Garden" }, { "trait_type": "Role", "value": "Scout" }, { "trait_type": "Signal", "value": "North" }, { "trait_type": "Temperament", "value": "Loyal" }, { "trait_type": "Affinity", "value": "Garden" } ], "rarity": { "tier": "common", "rank": 2606, "score": 1.02860476312, "outOf": 10000 } }}Building something? Tell us in Discord and we can feature it. More endpoints (critique, feeds, agent cards) are on the developer page.