Intro

NIPs

NIPs stand for Nostr Implementation Possibilities. They exist to document what may be implemented by Nostr-compatible relay and client software.



List

Event Kinds

kinddescriptionNIP
0Metadata1
1Short Text Note1
2Recommend Relay
3Contacts2
4Encrypted Direct Messages4
5Event Deletion9
6Repost18
7Reaction25
8Badge Award58
16Generic Repost18
40Channel Creation28
41Channel Metadata28
42Channel Message28
43Channel Hide Message28
44Channel Mute User28
1063File Metadata94
1311Live Chat Message53
1040OpenTimestamps03
1984Reporting56
1985Label32
4550Community Post Approval72
9041Zap Goal75
9734Zap Request57
9735Zap57
10000Mute List51
10001Pin List51
10002Relay List Metadata65
13194Wallet Info47
22242Client Authentication42
23194Wallet Request47
23195Wallet Response47
24133Nostr Connect46
27235HTTP Auth98
30000Categorized People List51
30001Categorized Bookmark List51
30008Profile Badges58
30009Badge Definition58
30017Create or update a stall15
30018Create or update a product15
30023Long-form Content23
30024Draft Long-form Content23
30078Application-specific Data78
30311Live Event53
30315User Statuses38
30402Classified Listing99
30403Draft Classified Listing99
31922Date-Based Calendar Event52
31923Time-Based Calendar Event52
31924Calendar52
31925Calendar Event RSVP52
31989Handler recommendation89
31990Handler information89
34550Community Definition72

Message types

Client to Relay

typedescriptionNIP
EVENTused to publish events01
REQused to request events and subscribe to new updates01
CLOSEused to stop previous subscriptions01
AUTHused to send authentication events42
COUNTused to request event counts45

Relay to Client

typedescriptionNIP
EOSEused to notify clients all stored events have been sent01
EVENTused to send events requested to clients01
NOTICEused to send human-readable messages to clients01
OKused to notify clients if an EVENT was successful01
AUTHused to send authentication challenges42
COUNTused to send requested event counts to clients45

Please update these lists when proposing NIPs introducing new event kinds.

Standardized Tags

namevalueother parametersNIP
eevent id (hex)relay URL, marker01, 10
ppubkey (hex)relay URL, petname01, 02
acoordinates to an eventrelay URL01
didentifier--01
altsummary--31
ggeohash--52
iidentityproof39
kkind number (string)--18, 25, 72
llabel, label namespaceannotations32
Llabel namespace--32
mMIME type--94
ra reference (URL, etc)petname
rrelay urlmarker65
thashtag--
amountmillisatoshis, stringified--57
bolt11bolt11 invoice--57
challengechallenge string--42
content-warningreason--36
delegationpubkey, conditions, delegation token--26
descriptioninvoice/badge description--57, 58
emojishortcode, image URL--30
expirationunix timestamp (string)--40
goalevent id (hex)relay URL75
imageimage URLdimensions in pixels23, 58
lnurlbech32 encoded lnurl--57
locationlocation string--52, 99
namebadge name--58
noncerandom--13
preimagehash of bolt11 invoice--57
pricepricecurrency, frequency99
proxyexternal IDprotocol48
published_atunix timestamp (string)--23
relayrelay url--42
relaysrelay list--57
subjectsubject--14
summaryarticle summary--23
thumbbadge thumbnaildimensions in pixels58
titlearticle title--23
zappubkey (hex), relay URLweight57

Criteria for acceptance of NIPs

  1. They should be implemented in at least two clients and one relay -- when applicable.
  2. They should make sense.
  3. They should be optional and backwards-compatible: care must be taken such that clients and relays that choose to not implement them do not stop working when interacting with the ones that choose to.
  4. There should be no more than one way of doing the same thing.
  5. Other rules will be made up when necessary.

Mailing Lists

The nostr ecosystem is getting large with many different organizations, relays and clients. Following the nips repo on github is becoming more difficult and noisy. To coordinate on protocol development outside of github, there are mailing lists where you can work on NIPs before submitting them here:

License

All NIPs are public domain.