Live#…
Reading the chain…
Network now · GullyChain Testnet
Block
—
Txs · 30 blocks
—
Gas, gwei
—
Launches
—

RPC and indexer API

On this page

#JSON-RPC

GullyChain speaks the standard Ethereum JSON-RPC. There are five public ways in, all serving chain 485590, CORS on, no key. Use them in this order with a fallback transport; wallets use the first one.

# Endpoint Note
1 https://rpc.gullychain.xyz Canonical public RPC (eRPC in front of the nodes).
2 https://rpc.gullyrpc.xyz/gullychain/evm/485590 The Gully RPC gateway's keyless GullyChain project, on a different server.
3 https://rpc2.gullychain.xyz Straight to the nodes, bypassing eRPC.
4 https://testnet-rpc.gullychain.xyz Legacy endpoint, kept working. Some networks filter hostnames that start with testnet-.
- /rpc (same origin) On gullychain.xyz and the Gully web apps. Browser code on those hosts tries it first.

Limits per IP, the viem and ethers fallback setup and the rules for retries are on Network reference.

Shell
curl -s https://rpc.gullychain.xyz \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# {"jsonrpc":"2.0","id":1,"result":"0x768d6"}

#Keyed access: Gully RPC

For a project that needs its own limits and usage numbers, create a key on Gully RPC (opens in a new tab) (open sign-up, free tier). GullyChain Testnet is a network on the Gully RPC gateway, so your endpoint is:

text
https://rpc.gullyrpc.xyz/<your-project>/evm/485590

The portal shows requests, errors and latency per key. Every chain Gully Labs runs is served through Gully RPC the same way.

#Indexer API

https://indexer.gullychain.xyz indexes launches, curve trades, swaps, names, transfers and quests, and serves them as JSON. It is public, read-only and CORS-enabled. GET / lists every route.

Route Returns
GET /head { chainId, block, timestamp } of the last indexed block
GET /status, GET /ready indexer state and readiness
GET /tokens every launchpad and listed token with price, volume and curve progress
GET /tokens/:addr one token
GET /tokens/:addr/candles?tf=1m|5m|15m|1h|4h|1d&limit= OHLCV candles
GET /tokens/:addr/trades?limit=&before= trades, newest first, paged with before
GET /tokens/:addr/holders?limit= holders and balances
GET /feed?limit=&before=&address= the activity feed (launches, trades, swaps, names), optionally for one address
GET /names/:addr, GET /names?addresses=a,b primary .gully names
GET /logs?since=, GET /logs/transfers/:token?since= raw indexed logs and transfers
GET /quests?status=&verifier=&creator=&asset=&limit=&offset= Gully Quests, filtered
GET /quests/stats totals: quests, active, completions, pools per asset
GET /quests/:id, GET /quests/:id/completions?limit=&before= one quest and its completions
GET /accounts/:a/quests an account's quests and completions
GET /quests/trending?limit= quests with the most recent completions
GET /quests/leaderboard?season=current|all|<n>&limit= the XP leaderboard: rank, name, XP, level, completions, check-ins, badges, best streak
GET /quests/:id/analytics completions over time for one quest
GET /accounts/:a/xp, GET /streaks/:a, GET /badges/:a an account's XP, daily streak and soulbound badges
POST /graphql the same data over GraphQL
Shell
curl -s https://indexer.gullychain.xyz/head
# {"chainId":485590,"block":1718,"timestamp":1793146783}

curl -s "https://indexer.gullychain.xyz/feed?limit=20"

Note

Numbers in responses (block, timestamp, amounts) are GullyChain blocks and wei strings. GullyChain makes blocks only when there are transactions, so a quiet head is normal. Poll at most every few seconds and cache what you can.

#Price endpoint

GET https://gullychain.xyz/price/eth returns the mainnet ETH price in USD, cached, for display (the explorer and the app use it to show USD values):

JSON
{"symbol":"ETH","usd":2344.08,"source":"coingecko","ts":1793146177}

For an on-chain price, see Price oracle.

#Other public data