Nostr Implementation Possibilities
Go to file
2024-02-12 11:42:10 -05:00
01.md clarify parameterized replaceable events 2023-09-04 14:25:04 +03:00
02.md Update 02.md 2023-03-06 16:37:42 -03:00
03.md Several NIP examples (3, 11) weren't quoting the field keys (JSON keys must be quoted) 2023-01-18 09:42:32 -03:00
04.md fix grammar and typos 2023-04-07 11:45:06 -03:00
05.md Reword set_metadata to metadata (#741) 2023-08-25 11:17:05 -03:00
06.md Use account instead of address_index 2023-04-04 14:11:50 -04:00
07.md Update 07.md Implementation 2023-05-31 14:08:24 -03:00
08.md Update 08.md 2023-04-19 22:32:08 +09:00
09.md NIP-09: Add a tag deletion (#600) 2023-06-15 20:23:40 -03:00
10.md remove harmful remark from nip-10. 2023-08-17 08:17:24 -03:00
11.md add NIP-22 created_at limits to Server-Limitations 2023-09-01 07:48:32 -03:00
12.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
13.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
14.md Adjust NIP-14 title to other NIPs 2023-07-12 07:28:49 -03:00
15.md Rename countries to regions. (#465) 2023-08-15 11:02:54 -03:00
16.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
18.md typo on nip 18. 2023-06-18 11:36:23 -03:00
19.md Define how to encode a non-parameterized replaceable event as a naddr 2023-08-25 08:27:24 -03:00
20.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
21.md Change NIP-21 URL->URI 2023-05-01 15:16:30 -03:00
22.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
23.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
25.md NIP-25: Handle empty string as + 2023-08-10 23:32:54 -03:00
26.md Fix typo "NIP: 26" to "NIP-26" 2023-06-12 12:45:52 +09:00
27.md Add links to NIP-21 2023-04-11 00:16:12 -03:00
28.md More explicit 2023-05-13 13:30:42 -03:00
30.md allow underscores in an emoji shortcode 2023-05-17 12:38:16 -03:00
31.md update NIP to use alt tag 2023-06-08 22:27:00 +02:00
32.md Remove some examples from nip 32 to keep things concise 2023-06-17 09:07:08 -07:00
33.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
36.md Add labeling to nip 56 as well 2023-06-13 09:31:15 -07:00
38.md rename 315 to 38. 2023-08-25 08:42:49 -03:00
39.md NIP-39: minor readability changes 2023-03-13 04:43:17 +03:00
40.md fix grammar and typos 2023-04-07 11:45:06 -03:00
42.md Update 42.md 2023-01-11 00:05:15 -03:00
45.md Allow relays indicate whether probabilistic count was used in NIP-45 2023-08-27 15:34:55 +02:00
46.md Update 46.md 2023-03-15 19:40:40 -03:00
47.md fixed typos 2023-06-26 14:55:24 -03:00
48.md NIP-48: Proxy Tags 2023-08-03 14:40:45 -05:00
50.md Fix NIP-50 typo 2023-02-01 07:06:25 -03:00
51.md fix typos 2023-08-17 16:21:21 +02:00
52.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
53.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
56.md Minor JSON fix 2023-07-25 12:33:16 +09:00
57.md remove bracket from kind attribute in example. 2023-08-23 12:55:32 -03:00
58.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
65.md Simplifies NIP-65 (#700) 2023-08-11 07:12:50 -03:00
72.md merge nips 12, 16, 20 and 33 into nip 01 (#703) 2023-08-13 13:47:45 -03:00
75.md NIP-75: Zap Goals (#757) 2023-09-01 15:07:52 +02:00
78.md fix grammar and typos 2023-04-07 11:45:06 -03:00
81.md Updating NIP-81 to add private and public statuses 2024-02-12 11:42:10 -05:00
89.md Reword set_metadata to metadata (#741) 2023-08-25 11:17:05 -03:00
94.md Add dim tag to NIP 94 2023-04-28 13:05:35 -03:00
98.md fix typo 2023-06-17 18:49:02 +01:00
99.md Update title 2023-07-18 22:52:18 +02:00
README.md NIP-75: Zap Goals (#757) 2023-09-01 15:07:52 +02:00

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

kind description NIP
0 Metadata 1
1 Short Text Note 1
2 Recommend Relay
3 Contacts 2
4 Encrypted Direct Messages 4
5 Event Deletion 9
6 Repost 18
7 Reaction 25
8 Badge Award 58
16 Generic Repost 18
40 Channel Creation 28
41 Channel Metadata 28
42 Channel Message 28
43 Channel Hide Message 28
44 Channel Mute User 28
1063 File Metadata 94
1311 Live Chat Message 53
1984 Reporting 56
1985 Label 32
4550 Community Post Approval 72
9041 Zap Goal 75
9734 Zap Request 57
9735 Zap 57
10000 Mute List 51
10001 Pin List 51
10002 Relay List Metadata 65
13194 Wallet Info 47
22242 Client Authentication 42
23194 Wallet Request 47
23195 Wallet Response 47
24133 Nostr Connect 46
27235 HTTP Auth 98
30000 Categorized People List 51
30001 Categorized Bookmark List 51
30008 Profile Badges 58
30009 Badge Definition 58
30017 Create or update a stall 15
30018 Create or update a product 15
30023 Long-form Content 23
30024 Draft Long-form Content 23
30078 Application-specific Data 78
30311 Live Event 53
30315 User Statuses 38
30402 Classified Listing 99
30403 Draft Classified Listing 99
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
34550 Community Definition 72

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
AUTH used to send authentication challenges 42
COUNT used to send requested event counts to clients 45

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

Standardized Tags

name value other parameters NIP
e event id (hex) relay URL, marker 01, 10
p pubkey (hex) relay URL, petname 01, 02
a coordinates to an event relay URL 01
d identifier -- 01
alt Alt tag -- 31
g geohash -- 52
i identity proof 39
k kind number (string) -- 18, 72
l label, label namespace annotations 32
L label namespace -- 32
r a reference (URL, etc) petname
r relay url marker 65
t hashtag --
amount millisatoshis, stringified -- 57
bolt11 bolt11 invoice -- 57
challenge challenge string -- 42
content-warning reason -- 36
delegation pubkey, conditions, delegation token -- 26
description badge description -- 58
description invoice description -- 57
emoji shortcode, image URL -- 30
expiration unix timestamp (string) -- 40
goal event id (hex) relay URL 75
image image URL dimensions in pixels 23, 58
lnurl bech32 encoded lnurl -- 57
location location string -- 52, 99
name badge name -- 58
nonce random -- 13
preimage hash of bolt11 invoice -- 57
price price currency, frequency 99
proxy external ID protocol 48
published_at unix timestamp (string) -- 23
relay relay url -- 42
relays relay list -- 57
subject subject -- 14
summary article summary -- 23
thumb badge thumbnail dimensions in pixels 58
title article title -- 23
zap pubkey (hex), relay URL weight 57

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.