NIP-43: Relay Access Metadata and Requests
NIP-43 defines how relays publish membership information and how users request admission, invites, or removal from restricted relays. It gives relay access control a standard event surface instead of forcing every private or semi-private relay to invent its own join protocol.
How It Works
The spec combines several event kinds:
- kind
13534publishes a relay membership list - kind
8000announces that a member was added - kind
8001announces that a member was removed - kind
28934lets a user submit a join request with a claim code - kind
28935lets a relay return an invite code on demand - kind
28936lets a user request that their own access be revoked
Membership state is intentionally not derived from one event alone. A client may need to consult both the relay-signed membership events and the member’s own events before deciding whether access is current.
Why It Matters
NIP-43 gives restricted relays a standard way to express admission and membership state. That matters for group systems, invite-only communities, and relays that need machine-readable onboarding without dropping down to out-of-band web forms or manual operator workflows.
The open clarification in PR #2267 tightens one practical point: relays should maintain one authoritative membership state per pubkey. That helps clients avoid ambiguous replay histories where an old add or remove event can be misread as current state.
Interop Notes
NIP-43 depends on the relay advertising support through its NIP-11 document. Join requests, invite requests, and leave requests should only be sent to relays that explicitly say they support this NIP.
Because the events sit in relay-controlled and user-controlled spaces at the same time, implementations need clear conflict rules. That is why the membership-state clarification matters more than it first appears.
Primary sources:
- NIP-43 Specification
- PR #2267 - Clarify membership state handling
Mentioned in:
See also: