Developers

Resolver API

A handle is a short name for a set of public keys. The resolver keeps that mapping, and nothing else.

Base URL

https://stealth-pay-resolver.tata888.workers.dev

Endpoints

GET /healthLiveness. Returns ok.
POST /api/linksRegister or update a handle. Send handle, metaAddress, wallet and signature.
GET /api/links/:handleResolve a handle to its record.
GET /api/links/:handle/availableWhether a handle is free, for the check button.

A record

handleThe name that was claimed.
metaAddressThe public watch and spend keys, 64 bytes, base58.
walletThe public address that claimed it. This is not a key.
signatureEd25519 over the message below.
updatedAtWhen the record was last written.

The signature is over stealth-pay/link/v1:<handle>:<metaAddress>. The browser checks it when a handle resolves. The server can refuse to serve a handle but cannot quietly point one at keys its owner did not sign for.

Status codes

201The handle was registered.
200The record was updated, or returned.
400bad_json, invalid_handle, bad_meta_address
401bad_signature
404not_found
409handle_taken, already claimed by another wallet

Notes

  • Records live in Cloudflare KV, which is eventually consistent. A handle claimed a second ago can take a few seconds to resolve everywhere.
  • Cross origin requests are allowed only from the origins listed in the worker’s ALLOWED_ORIGINS.
  • Only public keys are stored, and the resolver holds no funds. A raw link carries the keys itself and needs no resolver at all.