S0 Stage0 Developers
RISE Mainnet · Chain 4153

RISE names,
everywhere.

Resolve .rise names, display wallet identities, and read the RNS marketplace through a small, read-only API—or integrate the contracts directly.

API
https://rns.stage0.xyz/v1
Network
RISE Mainnet
Access
Public · GET only
01

One request to resolve a name

No API key is required for standard public reads.

Terminal
curl https://rns.stage0.xyz/v1/resolve/example.rise
200
{
  "chainId": 4153,
  "name": "example.rise",
  "address": "0x…",
  "owner": "0x…",
  "expiry": "1798761600",
  "source": "onchain"
}
02

Version 1 endpoints

Stable JSON responses for resolution and indexed RNS discovery.

GET/v1/resolve/{name}

Resolve a registered name directly from RISE Mainnet.

GET/v1/reverse/{address}

Find the indexed primary name for an address.

GET/v1/names/{name}

Read onchain state together with indexed registration metadata.

GET/v1/addresses/{address}/names

List active names owned by an address, including marketplace custody.

GET/v1/availability/{name}

Check availability and the registrar's effective policy.

GET/v1/pricing?name=…&years=1

Estimate public registration pricing without creating a signed quote.

GET/v1/auctions

List indexed primary RNS auctions.

GET/v1/marketplace/listings

List secondary-market fixed-price listings.

GET/v1/marketplace/auctions

List secondary-market auctions.

GET/v1/marketplace/activity

Read recent indexed marketplace events.

GET/v1/network

Read canonical mainnet configuration and contract addresses.

GET/v1/health

Check service and indexer freshness.

03

Use the stack you already have

REST for convenience, direct contract reads for maximum independence.

REST client
const response = await fetch(
  "https://rns.stage0.xyz/v1/resolve/example.rise"
);

if (!response.ok) throw new Error(`RNS error: ${response.status}`);

const { address, expiry } = await response.json();
console.log({ address, expiry });
Direct onchain resolution
import { createPublicClient, http, parseAbi } from "viem";
import { namehash } from "viem/ens";

const client = createPublicClient({
  transport: http("https://rpc.risechain.com")
});
const registry = "0x6DDca710993C91402d52061868bE76043a4C5888";
const node = namehash("example.rise");

const owner = await client.readContract({
  address: registry,
  abi: parseAbi(["function owner(bytes32) view returns (address)"]),
  functionName: "owner",
  args: [node]
});
React component
import { useQuery } from "@tanstack/react-query";

export function RiseName({ name }: { name: string }) {
  const query = useQuery({
    queryKey: ["rise-name", name],
    queryFn: async () => {
      const res = await fetch(
        `https://rns.stage0.xyz/v1/resolve/${encodeURIComponent(name)}`
      );
      if (!res.ok) throw new Error("Name not found");
      return res.json();
    }
  });

  return <span>{query.data?.address ?? "Resolving…"}</span>;
}
04

Canonical mainnet contracts

The chain remains the source of truth.

RNS mainnet contracts
ContractAddress
Registry0x6DDca710993C91402d52061868bE76043a4C5888
Resolver0x36D6383774631565AB0D8F3710748610631A675d
Registrar0xbCA437a93C2E7396a68Ce49BE224F65eE3CFd6Db
Auction House0x0E37994c19980A792B83A106cE03a9b8a9cD40Fc
Marketplace0x323A04F474f80225DE60C1Af13a672796aFA6622
Rate limits

Designed for public reads

Anonymous clients receive 60 requests per minute by default. Responses include limit, remaining, reset, and retry headers.

Caching

Fast without hiding freshness

Resolution and index responses use short public cache windows. Onchain responses include the block number; indexed responses include index metadata.

Safety

Read-only by design

Version 1 exposes GET and OPTIONS only. It cannot create quotes, sign payloads, mutate RNS state, or access Stage0 admin and Senna routes.