Events: 37,056,708

Waiting for token launches...

Sherwood API

Read indexed PONS launches, token projections and canonical events on Robinhood Chain.
Use REST for history and SSE for live updates.

Protocol support

V1 + V2

Delivery

REST · SSE

Schema types

19

Overview

Sherwood is an independent index of PONS activity on Robinhood Chain. It turns contract logs into a consistent event schema and token snapshots. For contract state and transaction verification, use the chain and PONS v2 protocol documentation. The PONS documentation home covers the earlier V1 contracts.

01

Robinhood Chain

Factories, curves and pools emit onchain logs on chain 4663.

02

Sherwood

Canonical events are retained; failed logs stay available for diagnosis.

03

Your app

Consume them over public REST and SSE endpoints.

Canonical events have a stable schema version, status and onchain cursor fields. See the event catalog for the envelope and every event type.

Quickstart

Base URL: https://api.sherwood.stream. Every /v1/public route is available to guests without an API key. Use the API host directly from your browser or server. The examples below use its public URL; browser requests require an origin allowed by the API's CORS configuration.

Read a page of events

javascript
const response = await fetch("https://api.sherwood.stream/v1/public/events?type=curve.buy&limit=2");
if (!response.ok) throw new Error(await response.text());

const { data, nextCursor } = await response.json();
console.log(data, nextCursor);

Follow new launches

javascript
const response = await fetch("https://api.sherwood.stream/v1/public/launches?limit=1");
if (!response.ok) throw new Error(await response.text());

const { streamCursor } = await response.json();
const url = new URL("https://api.sherwood.stream/v1/public/stream");

url.searchParams.set("type", "token.launched");
if (streamCursor) url.searchParams.set("after", streamCursor);

const source = new EventSource(url);
source.addEventListener("token.launched", (event) => {
  console.log(JSON.parse(event.data));
});

source.onerror = (error) => console.error("Stream disconnected", error);
// Call source.close() when this subscription is no longer needed.

EventSource reconnects automatically. The stream example starts after the newest launch so an old event backlog does not consume the connection's event quota. The streamCursor may be null when there are no launches yet.

Reference

All routes below use GET. Append each path to https://api.sherwood.stream. JSON routes return the listed fields. For parameter schemas and full response shapes, open interactive API docs or OpenAPI JSON.

PathUseResponse
/v1/public/event-typesSchema event names; some are not ingested yetdata[]
/v1/public/eventsConfirmed history by default; filters and an event cursordata[], nextCursor
/v1/public/launchesNewest confirmed launches; recent snapshotdata[], streamCursor
/v1/public/tokensToken projections, newest firstdata[], nextCursor
/v1/public/tokens/searchSearch name, symbol or address with qdata[]
/v1/public/tokens/:tokenOne contract address; unknown address returns data: nulldata
/v1/public/tokenConfigured project token and pool spot pricedata
/v1/public/statsIndexer and token countersdata
/v1/public/analyticsPeriod series and all-time totalsdata
/v1/public/analytics/launch-successAll-time launch correlationsdata, computedAt
/v1/public/images/:cidSigned IPFS logo URL from a token responseimage bytes
/v1/public/streamConfirmed canonical events and service updatestext/event-stream

/images/:cid expects the signed logoProxyUrl returned with a token; a bare CID URL is not a public unsigned image endpoint.

Filters and pagination

Event history

/events is oldest first. Filter with token or comma-separated tokens, type or types, and status (confirmed, provisional, orphaned). Pass nextCursor as after with the same filters. The limit defaults to 100; the maximum accepted value is 500.

A nonempty final page can still have a cursor. Stop when the next page's data is empty.

Tokens and launches

/tokens is newest first. Pass its nextCursor as cursor; the limit defaults to 100 and accepts up to 500. Continue until the cursor is null or the next page is empty.

/launches is a recent snapshot, with limit 8 by default and 50 maximum. Its streamCursor starts SSE after the newest launch; it does not page older launches. The legacy nextCursor alias has the same value and is deprecated.

Search uses /tokens/search?q=...: query length 2–64, result limit 10 by default and 20 maximum. /analytics?period=day also accepts week, month and all; day is the default. Treat all cursors as opaque strings and URL-encode them when building a request.

Live stream

/stream sends confirmed canonical events as SSE. Use the same token and event-type filters as history. Each canonical message has event (its type), id (an opaque cursor) and JSON data. Start from an after cursor; on reconnect, Last-Event-ID takes precedence. Without a cursor, the stream replays available confirmed history from the beginning.

The stream also emits indexer.status, stats.updated and token.updated service messages. These are not canonical events. A : heartbeat comment arrives every 20 seconds. The stream accepts token(s), type(s) and after; it rejects status, limit and other query parameters.

Limits and errors

Invalid filters, limits or cursors return 400 with an error code such as invalid_cursor. A signed image request can return 403 for an invalid signature, 404 when the image is unavailable, or 502 when image gateways fail.

Coverage

PONS tokens can trade on curves or pools. The current indexer scans supported factory events and V2 bonding-curve events; it does not index pool swap logs. The event names returned by /v1/public/event-types describe the schema vocabulary, not a promise that every type is produced today. The staging and production configuration uses multistack coverage for the V1 factory and both supported V2 deployments. Backfill progress determines what history is available at a given moment.

PONS V2

  • Indexed in multistack

    Factory launches and curve buys, sells, refunds, completion, fee sweeps and buyback locks. Factory sweep and pool-graduation events mark the transition; creator-recipient changes are also collected. These appear in event history and SSE.

  • State read

    The factory's launch phase is periodically reconciled into the token projection. A separate worker reads token metadata when enabled; otherwise metadata remains pending.

  • Not indexed

    Uniswap V4 pool swaps after graduation, plus hook, escrow and vault events. pool.swap is not currently emitted by this indexer. Post-graduation trade history and volume are therefore absent from this API.

PONS V1

  • Indexed in multistack

    The active V1 factory's TokenLaunched event. It records the token, deployer, paired asset and V3 pool address. Token metadata is enriched separately when the metadata worker is enabled.

  • State read

    The indexer periodically calls the factory's graduationStatus(token) and updates the token's phase and threshold. This does not create a canonical graduation event.

  • Not indexed

    Uniswap V3 pool swaps, including the first trade and later buys and sells. V1 trade history, volume and pool fees cannot be reconstructed from this API.

© 2026 · Sherwood

Sherwood is not affiliated with pons