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.

terminal
curl https://ansemns.fun/api/public/resolve/alice.ansem
javascript
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 envelope
{
  "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.

200 response
{
  "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}

200 response
{
  "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. 1. The server issues a single-use nonce bound to your wallet, valid for five minutes.
  2. 2. Your wallet signs a message containing the action, the name, and that nonce.
  3. 3. The server verifies the Ed25519 signature against the owner wallet, burns the nonce, and applies the change.
signed message
.ansem registry
action: retarget
domain: alice.ansem
nonce: 6f2c1ba9d0e4471c8f31a2b7c9d0e4f1

Error codes

Branch on the code, display the message.

CodeStatusMeaning
INVALID_NAME400Characters outside a-z, 0-9 and hyphens.
INVALID_LENGTH400Shorter than 3 or longer than 63 characters.
RESERVED_NAME400The name is held back by the registry.
NOT_REGISTERED404No ownership record exists for that name.
REGISTRY_ERROR500The registry database could not be reached.