Endpoints
The relay
| Endpoint | Protocol | Purpose |
|---|---|---|
wss://relay.yourdomain/ | Nostr over websocket | The relay itself |
https://relay.yourdomain/ with Accept: application/nostr+json | HTTP | The NIP-11 information document |
https://relay.yourdomain/ (browser) | HTTP | A neutral Floonet landing page with the Floonet logo |
The name authority
All endpoints are served under the operator’s domain via the shared proxy. (NIP-98) means the request must carry a NIP-98 Authorization event (kind 27235, u + method + payload tags, bounded timestamp, replay-protected).
| Endpoint | Auth | Purpose |
|---|---|---|
GET /.well-known/nostr.json?name={name} | none | NIP-05 resolution: returns {"names": {"{name}": "<pubkey>"}} |
POST /api/v1/register | NIP-98 | Claim a name for the signing key. Refused until payment confirms when FLOONET_PAY_MODE=name; the refusal response carries the quote and invoice so a wallet can generate the pay page. |
DELETE /api/v1/register/{name} | NIP-98 | Release a name (only by its owner) |
GET /api/v1/by-pubkey/{pubkey} | none | Reverse lookup: the name currently held by a key |
GET /api/v1/profile/{name} | none | Profile data for a name |
GET /api/v1/name/{name} | none | Availability: is this name free, reserved, or taken |
GET /api/v1/health | none | Health probe for monitoring |
Example
$ curl 'https://relay.yourdomain/.well-known/nostr.json?name=alice'
{
"names": {
"alice": "7d2f19c0...a4c41a"
}
}
Rules enforced behind the endpoints
Name validation (lowercase [a-z0-9._-], alphanumeric ends, cap 20), one active name per key, reserved list and look-alike folding, replay windows, and the name-change cooldown. Details: The name authority.