Supported NIPs reference

Every relay-side NIP nostrfy implements — kinds, notes and caveats — and how the NIP-11 supported_nips list is computed dynamically.

Implemented NIPs

NIPDescription
1Basic protocol (events, subscriptions)
9Event deletion
11Relay information document
13Proof of work
17Private DMs (kind 14 wrapped in kind 15; kind 1059 and ephemeral kind 21059 gift wraps served recipient-only when NIP-42 auth is on)
22Comments (kind 1111, threaded via the #e index)
26Delegated event signing
28Public chat (client-side: stored and served as plain events, not advertised)
29Relay-based groups
32Labeling (kind 1985, #l/#L indexed)
33Parameterized replaceable events
34git stuff (kinds 1617-1619, 1621, 1622, 1630-1633, 30617/30618 — opt-in via relay.enabled_git, off by default)
40Expiration timestamp
42Client authentication
43Relay access metadata (roles) — kinds 33534/13534/8000/8001 plus ephemeral 28934/28935/28936; the relay-signed metadata is AUTH-gated. Invite codes are issued with NIP-86 createclaim/deleteclaim; a kind:28934 carrying a listed code admits its author
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 (kinds 30166/10166 stored and served; self-publishes kind 30166)
67EOSE completeness hint
70Protected events (the relay's own relay-signed events stay readable)
77Negentropy syncing (a failed replacement closes the id with NEG-ERR per NIP-77)
78Application-specific data (kind 30078, AUTH-gated)
84Highlights
85Trusted assertions (kinds 30382/30383/30384/30385/10040, addressable)
86Relay management API
87Cashu and Fedimint announcements (kinds 38000/38172/38173)
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 (1, 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.