Nostr - Notes and Other Stuff Transmitted by Relays, the simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.
It doesn't rely on any trusted central server, hence it is resilient; it is based on cryptographic keys and signatures, so it is tamperproof; it does not rely on P2P techniques, and therefore it works.
The NIPs exist to document what may be implemented by Nostr-compatible relay and client software.
NIPs listed here are not a protocol checklist. Nothing forces any software to implement any NIP. Each app picks the subset relevant to its use case. Don't implement something just because it exists in this repo. Other standards and NIPs may exist outside this repository (e.g. as pull requests) and may already be deployed in the wild -- they should also be considered for implementation.
List
- NIP-01: Basic protocol flow description
- NIP-02: Follow List
NIP-03: OpenTimestamps Attestations for Events --- unrecommended: vulnerable to one specific attack, needs updateNIP-04: Encrypted Direct Message --- unrecommended: deprecated in favor of NIP-17- NIP-05: Mapping Nostr keys to DNS-based internet identifiers
NIP-06: Basic key derivation from mnemonic seed phrase --- unrecommended: prefer a single nsec- NIP-07:
window.nostrcapability for web browsers NIP-08: Handling Mentions --- unrecommended: deprecated in favor of NIP-27- NIP-09: Event Deletion Request
- NIP-10: Text Notes and Threads
- NIP-11: Relay Information Document
- NIP-13: Proof of Work
- NIP-14: Subject tag in text events
NIP-15: Nostr Marketplace (for resilient marketplaces) --- unrecommended: too complicated, try 99 instead- NIP-17: Private Direct Messages
- NIP-18: Reposts
- NIP-19: bech32-encoded entities
- NIP-21:
nostr:URI scheme - NIP-22: Comment
- NIP-23: Long-form Content
- NIP-24: Extra metadata fields and tags
- NIP-25: Reactions
NIP-26: Delegated Event Signing --- unrecommended: adds unnecessary burden for little gain- NIP-27: Text Note References
NIP-28: Public Chat --- unrecommended: try NIP-29 instead- NIP-29: Relay-based Groups
- NIP-30: Custom Emoji
NIP-31: Dealing with Unknown Events --- unrecommended: unnecessarily bloated- NIP-32: Labeling
- NIP-34:
gitstuff - NIP-35: Torrents
- NIP-36: Sensitive Content
- NIP-37: Draft Events
- NIP-38: User Statuses
- NIP-39: Linking Profiles to Other Platforms
- NIP-40: Expiration Timestamp
- NIP-42: Authentication of clients to relays
- NIP-43: Relay Access Metadata and Requests
- NIP-44: Encrypted Payloads (Versioned)
- NIP-45: Counting results
- NIP-46: Nostr Remote Signing
- NIP-47: Nostr Wallet Connect
- NIP-48: Bridged Events
- NIP-49: Private Key Encryption (
ncryptsec) - NIP-50: Search Capability
- NIP-51: Lists
- NIP-52: Calendar Events
- NIP-53: Live Streaming and Spaces
- NIP-54: Wiki
- NIP-55: Android Signer Application
- NIP-56: Reporting
- NIP-57: Lightning Zaps
- NIP-58: Badges
- NIP-59: Gift Wrap
- NIP-5A: Static Websites (nsites)
- NIP-60: Cashu Wallet
- NIP-61: Nutzaps
- NIP-62: Request to Vanish
- NIP-64: Chess (PGN)
- NIP-65: Relay List Metadata
- NIP-66: Relay Discovery and Liveness Monitoring
- NIP-67: EOSE Completeness Hint
- NIP-68: Picture-first feeds
- NIP-69: Peer-to-peer Order events
- NIP-70: Protected Events
- NIP-71: Video Events
NIP-72: Moderated Communities --- unrecommended: try NIP-29 instead- NIP-73: External Content IDs
- NIP-75: Zap Goals
- NIP-77: Negentropy Syncing
- NIP-78: Application-specific data
- NIP-7D: Forum Threads
- NIP-84: Highlights
- NIP-85: Trusted Assertions
- NIP-86: Relay Management API
- NIP-87: Cashu and Fedimint Discoverability
- NIP-88: Polls
- NIP-89: Recommended Application Handlers
NIP-90: Data Vending Machines --- unrecommended: this got totally out of control, prefer use-case-specific microstandards- NIP-92: Media Attachments Metadata (
imeta) - NIP-94: File Metadata
NIP-96: HTTP File Storage Integration --- unrecommended: replaced by Blossom- NIP-98: HTTP Auth
- NIP-99: Classified Listings
- NIP-A0: Voice Messages
- NIP-A4: Public Messages
- NIP-B0: Web Bookmarks
- NIP-B7: Blossom
NIP-BE: Nostr BLE Communications Protocol --- unrecommended: only implemented once and unclear whether it works, requires review- NIP-C0: Code Snippets
- NIP-C7: Chats
- NIP-CC: Geocaching
NIP-EE: E2EE Messaging using MLS Protocol --- unrecommended: superseded by the Marmot Protocol- NIP-F4: Podcasts
Event Kinds
This table is not exhaustive. For a machine-readable registry of all known event kinds prefer https://github.com/nostr-protocol/registry-of-kinds (or alternative registries following the same YAML schema).
| kind | description | NIP |
|---|---|---|
0 | User Metadata | 01 |
1 | Short Text Note | 10 |
3 | Follows | 02 |
4 | Encrypted Direct Messages | 04 |
5 | Event Deletion Request | 09 |
6 | Repost | 18 |
7 | Reaction | 25 |
8 | Badge Award | 58 |
9 | Chat Message | C7 |
11 | Thread | 7D |
13 | Seal | 59 |
14 | Direct Message | 17 |
15 | File Message | 17 |
16 | Generic Repost | 18 |
17 | Reaction to a website | 25 |
20 | Picture | 68 |
21 | Video Event | 71 |
22 | Short-form Portrait Video Event | 71 |
24 | Public Message | A4 |
30 | internal reference | NKBIP-03 |
31 | external web reference | NKBIP-03 |
32 | hardcopy reference | NKBIP-03 |
33 | prompt reference | NKBIP-03 |
40 | Channel Creation | 28 |
41 | Channel Metadata | 28 |
42 | Channel Message | 28 |
43 | Channel Hide Message | 28 |
44 | Channel Mute User | 28 |
54 | Podcast Episode | F4 |
62 | Request to Vanish | 62 |
64 | Chess (PGN) | 64 |
78 | Application-specific Data | 78 |
443 | KeyPackage | Marmot |
444 | Welcome Message | Marmot |
445 | Group Event | Marmot |
818 | Merge Requests | 54 |
1018 | Poll Response | 88 |
1021 | Bid | 15 |
1022 | Bid confirmation | 15 |
1234 | Draft Checkpoint | 37 |
1040 | OpenTimestamps | 03 |
1059 | Gift Wrap | 59 |
1063 | File Metadata | 94 |
1068 | Poll | 88 |
1111 | Comment | 22 |
1222 | Voice Message | A0 |
1244 | Voice Message Comment | A0 |
1311 | Live Chat Message | 53 |
1337 | Code Snippet | C0 |
1617 | Patches | 34 |
1618 | Pull Requests | 34 |
1619 | Pull Request Updates | 34 |
1621 | Issues | 34 |
1622 | Git Replies (deprecated) | 34 |
1630-1633 | Status | 34 |
1971 | Problem Tracker | nostrocket |
1984 | Reporting | 56 |
1985 | Label | 32 |
1987 | AI Embeddings / Vector lists | NKBIP-02 |
2003 | Torrent | 35 |
2004 | Torrent Comment | 35 |
2022 | Coinjoin Pool | joinstr |
4550 | Community Post Approval | 72 |
7374 | Reserved Cashu Wallet Tokens | 60 |
7375 | Cashu Wallet Tokens | 60 |
7376 | Cashu Wallet History | 60 |
7516 | Geocache log | CC |
7517 | Geocache proof of find | CC |
8000 | Add User | 43 |
8001 | Remove User | 43 |
9000-9030 | Group Control Events | 29 |
9041 | Zap Goal | 75 |
9321 | Nutzap | 61 |
9734 | Zap Request | 57 |
9735 | Zap | 57 |
9802 | Highlights | 84 |
10000 | Mute list | 51 |
10001 | Pin list | 51 |
10002 | Relay List Metadata | 65, 51 |
10003 | Bookmark list | 51 |
10004 | Communities list | 51 |
10005 | Public chats list | 51 |
10006 | Blocked relays list | 51 |
10007 | Search relays list | 51 |
10008 | Profile Badges | 51, 58 |
10009 | User groups | 51, 29 |
10011 | External Identities | 39 |
10012 | Favorite relays list | 51 |
10013 | Private event relay list | 37 |
10015 | Interests list | 51 |
10019 | Nutzap Mint Recommendation | 61 |
10020 | Media follows | 51 |
10030 | User emoji list | 51 |
10050 | Relay list to receive DMs | 51, 17 |
10051 | KeyPackage Relays List | Marmot |
10054 | Favorite podcasts list | 51 |
10063 | User server list | B7 |
10064 | Authored podcasts list | 51 |
10096 | File storage server list | 96 (deprecated) |
10154 | Podcast Metadata | F4 |
10166 | Relay Monitor Announcement | 66 |
10312 | Room Presence | 53 |
13194 | Wallet Info | 47 |
13534 | Membership Lists | 43 |
5128 | nsite manifest snapshot | 5A |
15128 | Root nsite manifest | 5A |
17375 | Cashu Wallet Event | 60 |
22242 | Client Authentication | 42 |
23194 | Wallet Request | 47 |
23195 | Wallet Response | 47 |
24133 | Nostr Connect | 46 |
24242 | Blobs stored on mediaservers | B7 |
27235 | HTTP Auth | 98 |
28934 | Join Request | 43 |
28935 | Invite Request | 43 |
28936 | Leave Request | 43 |
30000 | Follow sets | 51 |
30002 | Relay sets | 51 |
30003 | Bookmark sets | 51 |
30004 | Curation sets | 51 |
30005 | Video sets | 51 |
30006 | Picture sets | 51 |
30007 | Kind mute sets | 51 |
30008 | Badge sets | 51, 58 |
30009 | Badge Definition | 58 |
30015 | Interest sets | 51 |
30017 | Create or update a stall | 15 |
30018 | Create or update a product | 15 |
30019 | Marketplace UI/UX | 15 |
30020 | Product sold as an auction | 15 |
30023 | Long-form Content | 23 |
30024 | Draft Long-form Content | 23 |
30030 | Emoji sets | 51 |
30040 | Curated Publication Index | NKBIP-01 |
30041 | Curated Publication Content | NKBIP-01 |
30063 | Release artifact sets | 51 |
30078 | Application-specific Data | 78 |
30166 | Relay Discovery | 66 |
30267 | App curation sets | 51 |
30311 | Live Event | 53 |
30312 | Interactive Room | 53 |
30313 | Conference Event | 53 |
30315 | User Statuses | 38 |
30382 | User Trusted Assertion | 85 |
30383 | Event Trusted Assertion | 85 |
30384 | Addressable Trusted Assertion | 85 |
30402 | Classified Listing | 99 |
30403 | Draft Classified Listing | 99 |
30617 | Repository announcements | 34 |
30618 | Repository state announcements | 34 |
30818 | Wiki article | 54 |
30819 | Redirects | 54 |
31234 | Draft Event | 37 |
31922 | Date-Based Calendar Event | 52 |
31923 | Time-Based Calendar Event | 52 |
31924 | Calendar | 52 |
31925 | Calendar Event RSVP | 52 |
31989 | Handler recommendation | 89 |
31990 | Handler information | 89 |
32267 | Software Application | |
34235 | Addressable Video Event | 71 |
34236 | Addressable Short Video Event | 71 |
34550 | Community Definition | 72 |
34128 | Legacy nsite manifest | 5A (deprecated) |
35128 | Named nsite manifest | 5A |
38172 | Cashu Mint Announcement | 87 |
38173 | Fedimint Announcement | 87 |
37516 | Geocache Listing | CC |
37517 | Geocache Curation List | CC |
38383 | Peer-to-peer Order events | 69 |
39000-9 | Group metadata events | 29 |
39089 | Starter packs | 51 |
39092 | Media starter packs | 51 |
39701 | Web bookmarks | B0 |
Message types
Client to Relay
| type | description | NIP |
|---|---|---|
EVENT | used to publish events | 01 |
REQ | used to request events and subscribe to new updates | 01 |
CLOSE | used to stop previous subscriptions | 01 |
AUTH | used to send authentication events | 42 |
COUNT | used to request event counts | 45 |
Relay to Client
| type | description | NIP |
|---|---|---|
EOSE | used to notify clients all stored events have been sent | 01 |
EVENT | used to send events requested to clients | 01 |
NOTICE | used to send human-readable messages to clients | 01 |
OK | used to notify clients if an EVENT was successful | 01 |
CLOSED | used to notify clients that a REQ was ended and why | 01 |
AUTH | used to send authentication challenges | 42 |
COUNT | used to send requested event counts to clients | 45 |
License
All NIPs are public domain.