DevelopersResolver 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.devEndpoints
| GET /health | Liveness. Returns ok. |
|---|
| POST /api/links | Register or update a handle. Send handle, metaAddress, wallet and signature. |
|---|
| GET /api/links/:handle | Resolve a handle to its record. |
|---|
| GET /api/links/:handle/available | Whether a handle is free, for the check button. |
|---|
A record
| handle | The name that was claimed. |
|---|
| metaAddress | The public watch and spend keys, 64 bytes, base58. |
|---|
| wallet | The public address that claimed it. This is not a key. |
|---|
| signature | Ed25519 over the message below. |
|---|
| updatedAt | When 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
| 201 | The handle was registered. |
|---|
| 200 | The record was updated, or returned. |
|---|
| 400 | bad_json, invalid_handle, bad_meta_address |
|---|
| 401 | bad_signature |
|---|
| 404 | not_found |
|---|
| 409 | handle_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.