Skip to main content

GET /register

Build a top-level .sns registration without signing or submitting a transaction.

Request

GET /register

Query parameters

buyer

Required. Base58 public key that buys the domain, pays transaction fees, and signs the registration.

domain

Required. One non-empty TLD-less domain label. The value is trimmed and converted to lowercase.

space

Required. Integer account size from 0 through 10000 bytes.

serialize

Optional. true returns a base64-encoded unsigned legacy transaction. Omitted or false returns instruction objects.

referrer

Optional. Base58 referrer public key. A supported SDK referrer can add idempotent associated-token-account creation; an unsupported referrer is ignored.

mint

Optional. Base58 payment-mint public key. The route uses mainnet USDC when omitted. A custom mint must have a configured Pyth price feed.

rpc

Optional. A non-empty Solana RPC URL that overrides the proxy Worker's RPC_URL binding for this request.

Response

A successful request returns 200 OK:

type SerializedInstruction = {
programId: string;
keys: Array<{
isSigner: boolean;
isWritable: boolean;
pubkey: string;
}>;
data: string;
};

type RegisterResponse = {
s: "ok";
result: SerializedInstruction[] | string;
};

Instruction-object responses use base58 public keys and base64 data. With serialize=true, the string is a base64 unsigned legacy transaction whose fee payer is buyer and whose recent blockhash comes from the selected RPC.

The proxy derives the buyer's associated token account. It never signs, sends, relays, or confirms the returned transaction.

Example

curl --get "https://sdk-proxy-v2.sns.id/register" \
--data-urlencode "buyer=<BUYER_PUBLIC_KEY>" \
--data-urlencode "domain=<DOMAIN_NAME>" \
--data-urlencode "space=1000"
{
"s": "ok",
"result": [
{
"programId": "<PROGRAM_ID>",
"keys": [
{
"isSigner": true,
"isWritable": true,
"pubkey": "<ACCOUNT_PUBLIC_KEY>"
}
],
"data": "<BASE64_DATA>"
}
]
}

Errors

StatusresultWhen
400Invalid inputA required value is invalid, or a custom mint has no configured feed.
502RPC unavailableThe selected RPC returns a JSON-RPC error.
500Internal errorNo RPC is configured, or another failure occurs.