Reference
Resolver docs
How the .ansem registry records ownership, and how to read it from any application.
Overview
This is an off-chain registry with on-chain payment. Ownership records live in a database this service controls. Solana is used for one thing: collecting and verifying a flat 0.1 SOL payment before a name is recorded.
Resolution is a plain HTTP GET, so it is fast, cacheable at the CDN, and works from any language or runtime without a Solana RPC. The trade-off is that you are trusting this registry's database rather than the chain.
Quickstart
Resolve your first name in one command. A registered name returns 200 with the resolution payload; an unregistered one returns 404. That is the whole integration surface for most applications.
curl https://ansemns.fun/api/public/resolve/alice.ansem
async function resolveDomain(domain) {
const res = await fetch(`https://ansemns.fun/api/public/resolve/${domain}`);
if (res.status === 404) return null; // not registered
if (!res.ok) throw new Error(`resolver failed: ${res.status}`);
const { target } = await res.json();
return target; // base58 address to pay
}
const recipient = input.endsWith(".ansem")
? await resolveDomain(input)
: input;Conventions
Rules that hold across every endpoint.
- Base URL
- All paths are relative to this deployment, for example https://ansemns.fun.
- Format
- Requests and responses are JSON.
- Authentication
- Read endpoints require none. Owner actions authenticate with an Ed25519 wallet signature over a single-use nonce — never a session or API key.
- CORS
- Read endpoints send Access-Control-Allow-Origin: * and answer OPTIONS, so they are callable directly from a browser.
- Errors
- Non-2xx responses carry a stable machine-readable error.code plus a human-readable error.message. Branch on the code, display the message.
- Casing
- Names are normalized to lowercase everywhere. ALICE and alice hit the same record.
{
"error": {
"code": "INVALID_NAME",
"message": "Only a-z, 0-9 and hyphens are allowed."
}
}Resolve a name
The endpoint most integrations only ever need. Returns the address a name points at, plus its owner and records.
GET/api/public/resolve/{domain}
domain — string, required. With or without the TLD: alice and alice.ansem are equivalent.
{
"domain": "alice.ansem",
"target": "7xKX...gAsU",
"owner": "7xKX...gAsU",
"records": { "sol": "7xKX...gAsU" },
"registeredAt": "2026-01-04T12:41:09.221Z",
"updatedAt": "2026-01-04T12:41:09.221Z"
}Check availability
Useful for building your own registration surface. Reports whether a name is free, registered, or held by an in-flight checkout.
GET/api/public/availability/{name}
{
"domain": "alice.ansem",
"available": false,
"reason": "registered",
"priceSol": 0.1
}Owner actions
Repointing and transferring are signed operations, performed from the Manage page with the owner wallet.
- 1. The server issues a single-use nonce bound to your wallet, valid for five minutes.
- 2. Your wallet signs a message containing the action, the name, and that nonce.
- 3. The server verifies the Ed25519 signature against the owner wallet, burns the nonce, and applies the change.
.ansem registry action: retarget domain: alice.ansem nonce: 6f2c1ba9d0e4471c8f31a2b7c9d0e4f1
Error codes
Branch on the code, display the message.
| Code | Status | Meaning |
|---|---|---|
| INVALID_NAME | 400 | Characters outside a-z, 0-9 and hyphens. |
| INVALID_LENGTH | 400 | Shorter than 3 or longer than 63 characters. |
| RESERVED_NAME | 400 | The name is held back by the registry. |
| NOT_REGISTERED | 404 | No ownership record exists for that name. |
| REGISTRY_ERROR | 500 | The registry database could not be reached. |