Public integration surface · chain 4663 · Robinhood Chain
Developers
Mobinhood.fun exposes a read-only, non-custodial integration surface for wallets, terminals, bots, and screeners. All data is sourced from canonical on-chain indexing of chain 4663. There are no private endpoints, authenticated feeds, or off-chain "score" reordering.
Verified active launch factory
Source: contract_registry.verified = true. Do not use unverified addresses.
Canonical creation events
Fair Curve factories emit TokenCreated. Instant Pool emits InstantPoolCreated with the official pool and permanently locked position. Resolve the verified factory and ABI at runtime; never assume one launch mode.
Solidity signature
event TokenCreated( address indexed token, address indexed creator, bytes32 indexed salt, uint256 timestamp )
Topic0 (keccak256 of the canonical signature)
keccak256("TokenCreated(address,address,bytes32,uint256)")Fields
token(address, indexed) — the newly deployed ERC-20 launch contractcreator(address, indexed) — deployer / owner that initiated the launchsalt(bytes32, indexed) — CREATE2 salt used for deterministic deploymenttimestamp(uint256) — block timestamp of the launch
Launch feed API
GET https://mobinhood.fun/api/v1/launches is the stable, versioned canonical feed. /api/public/launches remains a compatibility alias. Both are cursor-based with no offsets.
limit— 1..100, default 25cursor— opaque base64url token returned asnextCursor- Order is
launched_at DESC, address ASC— stable and deterministic - Rate limit: 60 req/min per instance. On excess returns 429.
- Cached for 15s at the edge. Freshness fields report indexed block, reconciliation lag, and
stale/degradedstate.
curl "https://mobinhood.fun/api/v1/launches?limit=25" # next page curl "https://mobinhood.fun/api/v1/launches?limit=25&cursor=<nextCursor>" curl "https://mobinhood.fun/api/v1/tokens/0x..." curl "https://mobinhood.fun/api/v1/factories" curl "https://mobinhood.fun/api/v1/openapi.json"
Every EVM integer quantity (price, FDV, volume) is a decimal-string in native wei. Never parse as JS Number — use BigInt. Null means "no canonical data yet", never zero.
Response envelope
{
"chainId": 4663,
"chainName": "Robinhood Chain",
"source": "indexed",
"sourceUrl": "https://robinhoodchain.blockscout.com",
"activeFactory": {
"address": "0x...",
"version": "v2",
"dexProtocol": "uniswap-v3-official"
},
"factoryAddress": "0x...",
"items": [
{
"address": "0x...",
"symbol": "HPCANARY",
"name": "Mobinhood Canary",
"decimals": 18,
"creator": "0x...",
"stage": "bonding",
"progressBps": 10,
"latestPriceNative": "1264727133",
"currentFdvNative": "1264727133000000000",
"athFdvNative": "1264727133000000000",
"volume24hNative": "1100000000000000",
"volumeLifetimeNative": "1100000000000000",
"tradeCount24h": 2,
"tradeCountLifetime": 2,
"holderCount": 2,
"launchedAt": "2026-07-15T05:16:44Z",
"graduatedAt": null,
"lastTradeAt": "2026-07-15T05:21:28Z",
"launchTxHash": "0x0296...1863",
"launchBlock": 10133378,
"pool": {
"address": "0x8d50...bf41",
"feeTier": 3000,
"createdBlock": 10133378,
"explorer": "https://robinhoodchain.blockscout.com/address/0x8d50...bf41"
},
"metadata": null,
"explorer": { "token": "..." }
}
],
"nextCursor": "eyJ0IjoiMjAyNi0uLi4iLCJhIjoiMHguLi4ifQ",
"pagination": {
"limit": 25,
"hasMore": true,
"order": "launched_at DESC, address ASC"
},
"freshness": {
"indexedBlock": 10123456,
"observedAt": "2026-07-15T10:00:00Z",
"reconciledAt": "2026-07-15T09:59:50Z",
"reconciliationStatus": "ok",
"reconciliationLagBlocks": 1,
"stale": false,
"degraded": false
}
}Freshness & reconciliation
indexedBlockis the last block observed by the canonical indexer.reconciledAtis the last successful reconciliation timestamp.stale = truewhen reconciliation is older than 10 minutes.degraded = truewhen block-lag exceeds indexer thresholds.
TypeScript SDK
@mobinhood/sdk provides typed pagination, token and factory discovery, BigInt quantities, canonical event types, and partner-webhook verification.
import { MobinhoodClient, verifyWebhook } from "@mobinhood/sdk";
const client = new MobinhoodClient("https://mobinhood.fun");
const page = await client.listLaunches({ limit: 25 });
const token = await client.getToken("0x...");
const valid = await verifyWebhook({
secret: process.env.MOBINHOOD_WEBHOOK_SECRET,
timestamp: request.headers.get("x-mobinhood-timestamp"),
body: await request.text(),
signature: request.headers.get("x-mobinhood-signature"),
});Partner webhooks
Partner endpoints are manually provisioned in v1. Deliveries contain canonical indexed events only and are signed with HMAC-SHA256 over timestamp.body.
launch.created · bonding.trade · pool.created · token.graduated · fees.claimed
Treat x-mobinhood-delivery as the idempotency key. Failures retry with bounded backoff and eventually enter a dead-letter state.
Integration recipes
- Wallets: index
TokenCreatedfrom the verified factory address for canonical launch discovery. Poll the launch feed for cross-checked market metrics. - Terminals: fetch
/api/public/launchesevery 15s; page withnextCursor. Render decimal-string quantities via a BigInt formatter. - Bots: subscribe to on-chain
TokenCreatedfrom the verified factory. Do not depend on this feed for latency-sensitive execution. - Screeners: use canonical FDV / ATH FDV / volume exactly as returned. Do not derive prices from Number() casts.
All integrations are read-only and non-custodial. There are no API keys, no OAuth, no wallet actions from this surface.