/v1/resolve/{name}Resolve a registered name directly from RISE Mainnet.
Resolve .rise names, display wallet identities, and read the RNS marketplace
through a small, read-only API—or integrate the contracts directly.
No API key is required for standard public reads.
curl https://rns.stage0.xyz/v1/resolve/example.rise
{
"chainId": 4153,
"name": "example.rise",
"address": "0x…",
"owner": "0x…",
"expiry": "1798761600",
"source": "onchain"
}
Stable JSON responses for resolution and indexed RNS discovery.
/v1/resolve/{name}Resolve a registered name directly from RISE Mainnet.
/v1/reverse/{address}Find the indexed primary name for an address.
/v1/names/{name}Read onchain state together with indexed registration metadata.
/v1/addresses/{address}/namesList active names owned by an address, including marketplace custody.
/v1/availability/{name}Check availability and the registrar's effective policy.
/v1/pricing?name=…&years=1Estimate public registration pricing without creating a signed quote.
/v1/auctionsList indexed primary RNS auctions.
/v1/marketplace/listingsList secondary-market fixed-price listings.
/v1/marketplace/auctionsList secondary-market auctions.
/v1/marketplace/activityRead recent indexed marketplace events.
/v1/networkRead canonical mainnet configuration and contract addresses.
/v1/healthCheck service and indexer freshness.
REST for convenience, direct contract reads for maximum independence.
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 });
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]
});
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>;
}
The chain remains the source of truth.
| Contract | Address |
|---|---|
| Registry | 0x6DDca710993C91402d52061868bE76043a4C5888 |
| Resolver | 0x36D6383774631565AB0D8F3710748610631A675d |
| Registrar | 0xbCA437a93C2E7396a68Ce49BE224F65eE3CFd6Db |
| Auction House | 0x0E37994c19980A792B83A106cE03a9b8a9cD40Fc |
| Marketplace | 0x323A04F474f80225DE60C1Af13a672796aFA6622 |
Anonymous clients receive 60 requests per minute by default. Responses include limit, remaining, reset, and retry headers.
Resolution and index responses use short public cache windows. Onchain responses include the block number; indexed responses include index metadata.
Version 1 exposes GET and OPTIONS only. It cannot create quotes, sign payloads, mutate RNS state, or access Stage0 admin and Senna routes.