Integrate CacaoTracker data into your applications. Access real-time analytics, rewards, positions, and pool metrics for Maya Protocol.
x-api-key header.Get started in seconds
Instant, localhost
Any domain
https://api.cacaotracker.xyzcurl -H "x-api-key: mk_..." \
https://api.cacaotracker.xyz/protocol/statsSave your access link securely—it's your only way to manage keys. API keys work client-side with domain whitelisting for security.
The TX tracker uses a two-step flow. First create a short-lived websocket session with your API key over HTTP, then connect to the returned wsUrl and subscribe to one or more transaction hashes. The websocket upgrade route itself is not described as a normal OpenAPI endpoint, so use the flow below.
curl -X POST \
-H "x-api-key: mk_..." \
https://api.cacaotracker.xyz/tx-tracker/session{
"wsUrl": "wss://api.cacaotracker.xyz/ws/tx-tracker?session=...",
"expiresAt": "2026-04-25T12:00:00.000Z",
"heartbeatSeconds": 30
}const session = await fetch("https://api.cacaotracker.xyz/tx-tracker/session", {
method: "POST",
headers: { "x-api-key": "mk_..." }
}).then((res) => res.json());
const ws = new WebSocket(session.wsUrl);
ws.onmessage = (event) => {
console.log(JSON.parse(event.data));
};
ws.onopen = () => {
ws.send(JSON.stringify({
type: "subscribe",
txHashes: ["F0C99532FB34E87D8525706F352F6464722BBE8CA4C57782FB52C5D52C135C91"]
}));
};{"type":"ready","connectionId":"...","heartbeatSeconds":30}
{"type":"subscribed","accepted":["TX_HASH"],"rejected":[]}
{"type":"snapshot","state":{"txHash":"TX_HASH","status":"streaming","stage":"streaming"}}
{"type":"tx_update","state":{"txHash":"TX_HASH","status":"completed","stage":"final","isFinal":true},"changedFields":["status","stage","isFinal"]}Explore all endpoints below. Click any endpoint to view parameters, request body schema, and example responses. For the TX tracker, use the websocket flow above together with the documented /tx-tracker/session and /tx-tracker/{txHash} HTTP endpoints.
Loading API documentation...