Supported NIPs

Every relay-side NIP nostrfy implements, and how the NIP-11 supported_nips list is computed.

Implemented NIPs

NIPDescription
1Basic protocol (events, subscriptions)
9Event deletion
11Relay information document
13Proof of work
17Private DMs (kind 14, wrapped in 15; ephemeral wraps 1059/21059 forwarded)
22Comments (kind 1111, threaded via the #e index)
26Delegated event signing
28Public chat
29Relay-based groups
32Labeling (kind 1985, #l/#L indexed)
33Parameterized replaceable events
34git stuff (kinds 1617-1633, 30617/30618 — opt-in via relay.enabled_git, off by default)
40Expiration timestamp
42Client authentication
43Relay access metadata (roles)
45Counting results (COUNT)
46Nostr Connect
47Nostr Wallet Connect
50Search capability (full-text, relevance-ordered)
57Lightning zaps (kinds 9734/9735)
59Gift wrap (recipient-only serving)
62Request to vanish
65Relay list metadata
66Relay discovery & liveness (self-publishes kind 30166)
67EOSE completeness hint
70Protected events
77Negentropy syncing
78Application-specific data (kind 30078, AUTH-gated)
84Highlights
85Trusted assertions
86Relay management API
87Cashu and Fedimint announcements
88Polls
94File metadata (kind 1063)
98HTTP auth
A3Payment targets (kind 10133, replaceable), a draft; served but not advertised in supported_nips

Blossom (BUD-01/02) is not a NIP and is not advertised in the NIP-11 document — it is served as a separate file server on the [blossom] hostname. See the Blossom file server page for details.

Dynamic NIP advertisement

The supported_nips list is not static: a NIP is dropped from it when every kind the NIP defines is rejected by the relay's access control.

  • blocked_kinds — blocking all kinds of a NIP hides it (e.g. blocking kind 5 hides NIP-09). Blocking only some kinds keeps the NIP.
  • allowed_kinds — a kind is only accepted when listed; a NIP whose kinds are all unlisted is hidden.
  • reject_ephemeral — ephemeral kinds that are not in the NIP-mandated exempt list (22242, 27235, 28934/28935/ 28936, 24133, 23194/23195, 24242, 21059) are rejected, so NIPs relying on them are hidden.
  • Prerequisites — NIP-29, NIP-43 and NIP-66 rely on relay-signed events and are hidden without relay.private_key; NIP-86 is hidden unless rpc.management_token or rpc.admin_pubkey is set (otherwise every management call is refused).
  • NIPs without dedicated kinds (11, 13, 26, 33, 40, 45, 50, 67, 70, 77) are always advertised when enabled.

Changes made at runtime — NIP-86 allowkind/disallowkind, or a SIGHUP reload of reject_ephemeral — are reflected in the next NIP-11 fetch. enabled_nips/disabled_nips still require a restart.