Developer documentation

build on royaltiz.

Everything a protocol needs to plug into Royaltiz: a public REST API, the pons v2 contracts we launch through on Robinhood Chain, and the social-account fee routing that powers creator rewards.

overview

Royaltiz launches fixed-supply tokens through the pons v2 protocol on Robinhood Chain. Every launch starts on a bonding curve and graduates into a Uniswap v4 pool with permanently locked liquidity once the curve sells out.

The twist: at launch, the creator fee recipient can be any X, GitHub or Twitch account. Royaltiz resolves the account to a wallet (creating an embedded wallet via Privy when needed), passes it as creatorFeeRecipient on-chain, and the account owner claims the accrued fees on pons after logging in with the same social account.

Everything is non-custodial: users' wallets submit every transaction, Royaltiz holds no funds and charges no platform fee.

network & contracts

ChainRobinhood Chain (EVM, Arbitrum-based L2)
Chain ID4663
RPChttps://rpc.mainnet.chain.robinhood.com
Explorerhttps://robinhoodchain.blockscout.com
Gas tokenETH

pons v2 deployed addresses (resolve each launch's curve and token from the factory):

Launch factory0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e
Launch & buy router0xe33E9E479dF8802cb0866d5d05258bEc4cF62948
Fee escrow0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e
Meme hook (Uniswap v4)0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044
Buyback vault0x42df2a798f82289E177311362e8f5ccC45c1219c
Launch locker0x267444D099b10fB5Ed7c3Cc7B7c767AdcA574952

rest api

Base URL: https://royaltiz.app. All endpoints are read-oriented, require no authentication, return JSON, and send Access-Control-Allow-Origin: * so they can be called from any frontend. Please cache responses on your side where you can.

GET/api/v1/tokens

Lists every token launched through Royaltiz, newest first.

curl https://royaltiz.app/api/v1/tokens

{
  "tokens": [
    {
      "mint": "0x1234...abcd",        // token address on Robinhood Chain
      "name": "Example",
      "symbol": "EXMPL",
      "imageUri": "https://gateway.pinata.cloud/ipfs/...",
      "createdAt": 1788100000000,
      "creator": { "wallet": "0x...", "username": "royaltizrh", "type": "x" }
    }
  ]
}
GET/api/v1/tokens/{address}

Full detail for one token: metadata, beneficiaries, and live on-chain market data read from its pons bonding curve.

curl https://royaltiz.app/api/v1/tokens/0x1234...abcd

{
  "mint": "0x1234...abcd",
  "name": "Example",
  "symbol": "EXMPL",
  "beneficiaries": [
    { "type": "x", "value": "someuser", "walletAddress": "0x...", "percentage": 100 }
  ],
  "priceEth": 0.0000000042,        // marginal price on the curve
  "priceUsd": 0.0000189,
  "usdMarketCap": 18900,
  "supply": 1000000000,
  "phase": 0,                       // 0 curve · 1 swept · 2 Uniswap v4 · 3 rescued
  "graduated": false,
  "graduationProgress": 37.5,       // % of the graduation threshold raised
  "curve": "0x..."                  // bonding curve to trade against
}
GET/api/v1/socials/resolve?platform={x|github|twitch}&username={handle}

Resolves a social account to its Robinhood Chain wallet — the same resolution Royaltiz uses at launch. If the account has never been seen before, an embedded wallet is created for it (secured by Privy, claimable by the account owner via OAuth login). Use it to route fees, airdrops or payouts to any social account from your own protocol.

curl "https://royaltiz.app/api/v1/socials/resolve?platform=x&username=royaltizrh"

{
  "verified": true,
  "username": "RoyaltizRH",
  "userId": "2094063734041743360",  // platform-native user id
  "platform": "x",
  "wallet": "0x9b6a...f335",        // their wallet on Robinhood Chain
  "walletCreated": true
}

on-chain integration

Royaltiz tokens are plain ERC-20s launched by the pons v2 factory — no Royaltiz-specific contract sits in the trust path. Index the factory, read each launch's record, and trade against its curve (pre-graduation) or its Uniswap v4 pool (post-graduation).

import { parseAbi } from "viem";

const FACTORY = "0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e";

const factoryAbi = parseAbi([
  "struct LaunchedToken { address token; address curve; address deployer; address creatorFeeRecipient; address pairToken; uint256 graduationThreshold; uint24 poolFee; int24 tickSpacing; uint16 creatorTaxBps; bool buybackEnabled; uint8 phase; uint256 sweptQuote; uint256 sweptTokens; uint256 sweptAt; bool exists; }",
  "function getLaunchedToken(address token) view returns (LaunchedToken)",
  "event TokenLaunched(address indexed token, address indexed curve, address indexed deployer, address pairToken, uint256 launchConfigId, uint256 graduationThreshold)",
]);

const curveAbi = parseAbi([
  "function buy(uint256 quoteIn, uint256 minTokensOut, address recipient) payable returns (uint256 tokensOut)",
  "function sell(uint256 tokensIn, uint256 minQuoteOut, address recipient) returns (uint256 quoteOut)",
  "function getReserves() view returns (uint256 quoteReserve, uint256 tokenReserve)",
]);

// launch.phase: 0 = trade on launch.curve · 2 = trade on the Uniswap v4 pool
const launch = await client.readContract({
  address: FACTORY,
  abi: factoryAbi,
  functionName: "getLaunchedToken",
  args: [token],
});

Full protocol reference (quoting, snipe protection, graduation, fee claiming): pons v2 docs.

fee model

Royaltiz platform fee0%
pons base fee1% per trade
Creator tax0–10%, chosen at launch, immutable

The creator tax is charged on every trade — on the curve and in the pool — and accrues in full to the creatorFeeRecipient: the wallet of the tagged X, GitHub or Twitch account. Balances accumulate in the pons fee escrow and are withdrawn by the recipient at any time. Rates are fixed at launch and can never be raised afterwards.

Building an integration? Reach out on @RoyaltizRH — we're happy to help, add endpoints, or list your protocol.