12<html lang="en">3<head>4<meta charset="utf-8">5<meta name="viewport" content="width=device-width, initial-scale=1">6<title>NIP-22 - Comment — Nostr Instruction Manual</title>7<meta name="description" content="NIP-22: the kind 1111 comment event. Uppercase tags point to the root scope, lowercase tags point to the parent item. Complete manual page.">8<link rel="preload" href="../assets/fonts/michroma-400-latin.woff2" as="font" type="font/woff2" crossorigin>9<link rel="preload" href="../assets/fonts/exo2-var-latin.woff2" as="font" type="font/woff2" crossorigin>10<link rel="preload" href="../assets/fonts/sairacondensed-600-latin.woff2" as="font" type="font/woff2" crossorigin>11<link rel="preload" href="../assets/fonts/sairacondensed-700-latin.woff2" as="font" type="font/woff2" crossorigin>12<link rel="preload" href="../assets/fonts/sairacondensed-500-latin.woff2" as="font" type="font/woff2" crossorigin>13<link rel="preload" href="../assets/fonts/sharetechmono-400-latin.woff2" as="font" type="font/woff2" crossorigin>14<link rel="preload" href="../assets/fonts/exo2-400i-latin.woff2" as="font" type="font/woff2" crossorigin>15<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">16<link rel="stylesheet" href="../assets/manual.css">17</head>18<body>1920<svg width="0" height="0" style="position:absolute">21 <defs>22 <marker id="arr" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto">23 <path d="M1,1 L8,4.5 L1,8 Z" fill="#f26a00"/>24 </marker>25 <marker id="arrb" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto">26 <path d="M1,1 L8,4.5 L1,8 Z" fill="#2e5f9e"/>27 </marker>28 </defs>29</svg>3031<div class="page">32 <span class="staple s1"></span><span class="staple s2"></span>3334 <header class="band">35 <a class="logo" href="../index.html">NOSTR<b>▸</b>PROTOCOL MANUAL</a>36 <span class="booklet-note">Chapter 22 - Social</span>37 </header>38 <nav class="tabs">39 <a href="../index.html">Contents</a>40 <a href="#overview" class="on">Overview</a>41 <a href="#spec">Spec</a>42 <a href="#examples">Examples</a>43 <a href="#history">History</a>44 </nav>4546 <div class="chapter">47 <div class="nipno" data-n="22">22</div>48 <div class="titles">49 <div class="kicker">Nostr Implementation Possibility - Hex № 22</div>50 <h1>Comment</h1>51 <p class="sub">One universal comment event that can thread under any Nostr event — or under any URL, hashtag, geohash, or podcast episode.</p>52 </div>53 </div>5455 <main class="spread">56 <div class="main">5758 <h2 class="bar" id="overview"><span class="num">1</span> Overview</h2>59 <p>A <strong>comment</strong> is a threading note. It is always scoped to a <strong>root</strong>: either a root event or an external identifier from <a href="73.html">NIP-73</a>. This NIP defines the comment as <code>kind:1111</code>.</p>60 <p>Every comment carries two sets of pointers. Uppercase tag names point to the root scope. Lowercase tag names point to the <strong>parent</strong> item, the thing the comment answers directly. For a top-level comment, root and parent are the same item. For a reply to a comment, the root stays fixed and the parent is the earlier comment.</p>61 <p>The two-level design lets a client fetch a whole thread with one filter on the uppercase tags. It also lets the client rebuild the reply tree from the lowercase tags. Blog posts, files, live events, websites, and podcast episodes all use the same comment kind.</p>6263 <div class="box hint">64 <span class="tag">Hint!</span>65 <p>Memory aid: BIG letters point to the BIG picture (the root of the thread). Small letters point to the small step (the direct parent). A top-level comment repeats the same target in both cases.</p>66 </div>6768 <figure class="diagram">69 <div class="frame">70 <svg viewBox="0 0 560 240" role="img" aria-label="A root event with a top-level comment and a reply; uppercase tags always point to the root, lowercase tags point to the direct parent">71 <rect class="d-actor" x="200" y="12" width="160" height="44" rx="8"/>72 <text class="d-actor-label" x="280" y="32" text-anchor="middle">Root event</text>73 <text class="d-note" x="280" y="48" text-anchor="middle">e.g. kind 30023</text>74 <rect class="d-actor" x="200" y="98" width="160" height="44" rx="8"/>75 <text class="d-actor-label" x="280" y="118" text-anchor="middle">Comment</text>76 <text class="d-note" x="280" y="134" text-anchor="middle">kind 1111</text>77 <rect class="d-actor" x="200" y="184" width="160" height="44" rx="8"/>78 <text class="d-actor-label" x="280" y="204" text-anchor="middle">Reply</text>79 <text class="d-note" x="280" y="220" text-anchor="middle">kind 1111</text>80 <path class="d-msg" d="M255,96 L255,60"/>81 <path class="d-msg blue" d="M305,96 L305,60"/>82 <path class="d-msg blue" d="M305,182 L305,146"/>83 <path class="d-msg d-flow" d="M198,206 C120,180 120,70 196,38"/>84 <text class="d-label" x="205" y="82" text-anchor="middle">A/E K P</text>85 <text class="d-label" x="360" y="82" text-anchor="middle">a/e k p</text>86 <text class="d-label" x="360" y="168" text-anchor="middle">e k p</text>87 <text class="d-label" x="95" y="126" text-anchor="middle">A/E K P</text>88 <circle r="4" fill="#f26a00">89 <animateMotion dur="2.6s" repeatCount="indefinite" path="M198,206 C120,180 120,70 196,38"/>90 </circle>91 </svg>92 </div>93 <figcaption>Fig. 22-1 — <b>Root vs parent.</b> Orange uppercase pointers always reach the root. Blue lowercase pointers reach the direct parent.</figcaption>94 </figure>9596 <h2 class="bar" id="spec"><span class="num">2</span> The Comment Event</h2>97 <p>A comment uses <code>kind:1111</code>. The <code>content</code> field is plaintext. Do not put HTML, Markdown, or any other formatting in it. The template below shows the full tag layout:</p>9899 <div class="crt">100 <div class="titlebar">Wire format - kind 1111 comment</div>101<pre>{102 <span class="k">"kind"</span>: 1111,103 <span class="k">"content"</span>: <span class="c"><comment, plaintext></span>,104 <span class="k">"tags"</span>: [105 <span class="c">-- root scope: event address, event id, or I-value --</span>106 [<span class="c"><"A", "E" or "I"></span>, <span class="c"><address, id or I-value></span>, <span class="c"><relay or web page hint></span>, <span class="c"><root pubkey, if an E tag></span>],107 [<span class="s">"K"</span>, <span class="c"><root kind></span>],108 [<span class="s">"P"</span>, <span class="c"><root pubkey></span>, <span class="c"><relay-url-hint></span>],109110 <span class="c">-- parent item: event address, event id, or i-value --</span>111 [<span class="c"><"a", "e" or "i"></span>, <span class="c"><address, id or i-value></span>, <span class="c"><relay or web page hint></span>, <span class="c"><parent pubkey, if an e tag></span>],112 [<span class="s">"k"</span>, <span class="c"><parent kind></span>],113 [<span class="s">"p"</span>, <span class="c"><parent pubkey></span>, <span class="c"><relay-url-hint></span>]114 ]115 <span class="c">-- other fields per NIP-01 --</span>116}</pre>117 </div>118119 <p>Three rules are mandatory:</p>120 <ul>121 <li>A comment MUST point to the root scope with uppercase tag names: <code>K</code>, <code>E</code>, <code>A</code>, or <code>I</code>.</li>122 <li>A comment MUST point to the parent item with lowercase tag names: <code>k</code>, <code>e</code>, <code>a</code>, or <code>i</code>.</li>123 <li>A comment MUST point to the authors when one is available, that is, when it tags a Nostr event. Use <code>P</code> for the root author and <code>p</code> for the parent author.</li>124 </ul>125 <p>The tags <code>K</code> and <code>k</code> MUST be present. They define the event kind of the root item and of the parent item.</p>126127 <div class="tscroll"><table class="ref">128 <caption>Tag reference</caption>129 <tr><th>Tag</th><th>Level</th><th>Points to</th><th>Extra elements</th></tr>130 <tr><td class="btn">A</td><td>root</td><td>the root event address (addressable event)</td><td>relay hint</td></tr>131 <tr><td class="btn">E</td><td>root</td><td>the root event id</td><td>relay hint, then the root event's pubkey</td></tr>132 <tr><td class="btn">I</td><td>root</td><td>an external identifier (<a href="73.html">NIP-73</a>)</td><td>web page hint</td></tr>133 <tr><td class="btn">K</td><td>root</td><td>the root item kind. Mandatory.</td><td>—</td></tr>134 <tr><td class="btn">P</td><td>root</td><td>the pubkey of the root event's author</td><td>relay URL hint</td></tr>135 <tr><td class="btn">a</td><td>parent</td><td>the parent event address</td><td>relay hint</td></tr>136 <tr><td class="btn">e</td><td>parent</td><td>the parent event id</td><td>relay hint, then the parent event's pubkey</td></tr>137 <tr><td class="btn">i</td><td>parent</td><td>an external identifier (<a href="73.html">NIP-73</a>)</td><td>web page hint</td></tr>138 <tr><td class="btn">k</td><td>parent</td><td>the parent item kind. Mandatory.</td><td>—</td></tr>139 <tr><td class="btn">p</td><td>parent</td><td>the pubkey of the parent item's author</td><td>relay URL hint</td></tr>140 </table></div>141142 <div class="box tech">143 <span class="tag">Tech Note</span>144 <p>The first example in the source states a rule that the normative text does not: when the parent event is replaceable or addressable, also include an <code>e</code> tag with its event id next to the <code>a</code> tag. Follow it — it pins the exact version you answered. The same example also has a JSON slip: a missing comma after the <code>P</code> tag line.</p>145 </div>146147 <h2 class="bar" id="external"><span class="num">3</span> External Scopes</h2>148 <p>Comments can thread under things that are not Nostr events. The <code>I</code> and <code>i</code> tags create scopes for hashtags, geohashes, URLs, and other external identifiers.</p>149 <p><a href="73.html">NIP-73</a> lists the possible values for <code>i</code> tags. It also lists the <code>k</code> values that go with an external identity, such as <code>web</code> or <code>podcast:item:guid</code>. The uppercase versions <code>I</code> and <code>K</code> use the same type of values, but they relate to the root item instead of the parent one.</p>150 <p>An external scope has no Nostr author. In that case the comment carries no <code>P</code> or <code>p</code> tag for it.</p>151152 <figure class="diagram">153 <div class="frame">154 <svg viewBox="0 0 560 180" role="img" aria-label="Choosing root tags: a Nostr event root uses A or E plus K plus P; an external root uses I plus K">155 <rect class="d-actor" x="10" y="65" width="130" height="50" rx="8"/>156 <text class="d-actor-label" x="75" y="87" text-anchor="middle">Root scope</text>157 <text class="d-note" x="75" y="104" text-anchor="middle">what is it?</text>158 <rect class="d-actor" x="330" y="15" width="220" height="60" rx="8"/>159 <text class="d-actor-label" x="440" y="38" text-anchor="middle">Nostr event</text>160 <text class="d-note" x="440" y="56" text-anchor="middle">["A" or "E"] + ["K"] + ["P"]</text>161 <rect class="d-actor" x="330" y="105" width="220" height="60" rx="8"/>162 <text class="d-actor-label" x="440" y="128" text-anchor="middle">External identifier</text>163 <text class="d-note" x="440" y="146" text-anchor="middle">["I"] + ["K"] - no "P" tag</text>164 <path class="d-msg d-flow" d="M142,78 C230,60 250,50 327,45"/>165 <path class="d-msg blue d-flow" d="M142,102 C230,120 250,130 327,135"/>166 <text class="d-label" x="225" y="48" text-anchor="middle">id or address</text>167 <text class="d-label" x="225" y="140" text-anchor="middle">url, hashtag, ...</text>168 </svg>169 </div>170 <figcaption>Fig. 22-2 — <b>Two scope families.</b> Nostr roots get author tags. External roots use <a href="73.html">NIP-73</a> identifiers and have none.</figcaption>171 </figure>172173 <h2 class="bar" id="mentions"><span class="num">4</span> Citations and Mentions</h2>174 <p>A comment body can reference other events and users through <a href="21.html">NIP-21</a> <code>nostr:</code> URIs. Two extra tags mirror those references:</p>175 <ul>176 <li><code>q</code> tags MAY be used when the <code>content</code> cites an event with <a href="21.html">NIP-21</a>.</li>177 <li><code>p</code> tags SHOULD be used when the <code>content</code> mentions a pubkey with <a href="21.html">NIP-21</a>.</li>178 </ul>179 <div class="crt">180 <div class="titlebar">Citation tag - q</div>181<pre>[<span class="s">"q"</span>, <span class="c"><event-id> or <event-address></span>, <span class="c"><relay-url></span>, <span class="c"><pubkey-if-a-regular-event></span>]</pre>182 </div>183184 <h2 class="bar" id="examples"><span class="num">5</span> Worked Examples</h2>185 <p>The source spec walks through six cases. All six follow, with the fields that matter. A top-level comment repeats the root target in the lowercase parent tags.</p>186187 <h3>Comment on a blog post</h3>188 <p>The root is a <a href="23.html">NIP-23</a> long-form article, an addressable event of kind 30023. The parent is addressable, so the comment carries both an <code>a</code> tag and an <code>e</code> tag that pins the exact event id.</p>189 <div class="crt">190 <div class="titlebar">Top-level comment on kind 30023</div>191<pre>{192 <span class="k">"kind"</span>: 1111,193 <span class="k">"content"</span>: <span class="s">"Great blog post!"</span>,194 <span class="k">"tags"</span>: [195 [<span class="s">"A"</span>, <span class="s">"30023:3c9849…ec11289:f9347ca7"</span>, <span class="s">"wss://example.relay"</span>],196 [<span class="s">"K"</span>, <span class="s">"30023"</span>],197 [<span class="s">"P"</span>, <span class="s">"3c9849…ec11289"</span>, <span class="s">"wss://example.relay"</span>],198199 [<span class="s">"a"</span>, <span class="s">"30023:3c9849…ec11289:f9347ca7"</span>, <span class="s">"wss://example.relay"</span>],200 [<span class="s">"e"</span>, <span class="s">"5b4fc7…e07651"</span>, <span class="s">"wss://example.relay"</span>], <span class="c">-- pins the exact version</span>201 [<span class="s">"k"</span>, <span class="s">"30023"</span>],202 [<span class="s">"p"</span>, <span class="s">"3c9849…ec11289"</span>, <span class="s">"wss://example.relay"</span>]203 ]204}</pre>205 </div>206207 <h3>Comment on a file, and a reply to it</h3>208 <p>The root is a <a href="94.html">NIP-94</a> file event of kind 1063. It is a regular event, so <code>E</code> is used with the root pubkey as the fourth element. The reply keeps the same root tags and swaps the parent tags to the first comment. The parent kind becomes <code>1111</code>.</p>209 <div class="crt">210 <div class="titlebar">Comment, then reply - kind 1063 root</div>211<pre><span class="c">-- top-level comment --</span>212{213 <span class="k">"kind"</span>: 1111, <span class="k">"content"</span>: <span class="s">"Great file!"</span>,214 <span class="k">"tags"</span>: [215 [<span class="s">"E"</span>, <span class="s">"768ac8…42f5e6"</span>, <span class="s">"wss://example.relay"</span>, <span class="s">"3721e0…bbe5bb"</span>],216 [<span class="s">"K"</span>, <span class="s">"1063"</span>],217 [<span class="s">"P"</span>, <span class="s">"3721e0…bbe5bb"</span>],218 [<span class="s">"e"</span>, <span class="s">"768ac8…42f5e6"</span>, <span class="s">"wss://example.relay"</span>, <span class="s">"3721e0…bbe5bb"</span>],219 [<span class="s">"k"</span>, <span class="s">"1063"</span>],220 [<span class="s">"p"</span>, <span class="s">"3721e0…bbe5bb"</span>]221 ]222}223224<span class="c">-- reply to that comment: root unchanged, parent = the comment --</span>225{226 <span class="k">"kind"</span>: 1111, <span class="k">"content"</span>: <span class="s">"This is a reply to \"Great file!\""</span>,227 <span class="k">"tags"</span>: [228 [<span class="s">"E"</span>, <span class="s">"768ac8…42f5e6"</span>, <span class="s">"wss://example.relay"</span>, <span class="s">"fd913c…54cc9a"</span>],229 [<span class="s">"K"</span>, <span class="s">"1063"</span>],230 [<span class="s">"P"</span>, <span class="s">"fd913c…54cc9a"</span>],231 [<span class="s">"e"</span>, <span class="s">"5c83da…7226f36"</span>, <span class="s">"wss://example.relay"</span>, <span class="s">"93ef2e…3e7f546"</span>],232 [<span class="s">"k"</span>, <span class="s">"1111"</span>],233 [<span class="s">"p"</span>, <span class="s">"93ef2e…3e7f546"</span>]234 ]235}</pre>236 </div>237238 <h3>Comment on a website URL</h3>239 <p>The root is a plain web page. The scope is an <code>I</code> tag with the URL, and the "kind" is the string <code>web</code>. There is no Nostr author, so there are no <code>P</code> or <code>p</code> tags.</p>240 <div class="crt">241 <div class="titlebar">Top-level comment on a URL</div>242<pre>{243 <span class="k">"kind"</span>: 1111, <span class="k">"content"</span>: <span class="s">"Nice article!"</span>,244 <span class="k">"tags"</span>: [245 [<span class="s">"I"</span>, <span class="s">"https://abc.com/articles/1"</span>],246 [<span class="s">"K"</span>, <span class="s">"web"</span>],247 [<span class="s">"i"</span>, <span class="s">"https://abc.com/articles/1"</span>],248 [<span class="s">"k"</span>, <span class="s">"web"</span>]249 ]250}</pre>251 </div>252253 <h3>Comment on a podcast episode, and a reply to it</h3>254 <p>The root is a podcast episode GUID from <a href="73.html">NIP-73</a>. The <code>I</code> tag carries a web page hint as its third element. The reply keeps the external root and points its lowercase tags at the first comment, which is a Nostr event with an author.</p>255 <div class="crt">256 <div class="titlebar">Podcast comment, then reply</div>257<pre><span class="c">-- top-level comment --</span>258{259 <span class="k">"id"</span>: <span class="s">"80c48d…bdac05"</span>, <span class="k">"pubkey"</span>: <span class="s">"252f10…2d9f111"</span>,260 <span class="k">"kind"</span>: 1111, <span class="k">"content"</span>: <span class="s">"This was a great episode!"</span>,261 <span class="k">"tags"</span>: [262 [<span class="s">"I"</span>, <span class="s">"podcast:item:guid:d98d18…690f31f"</span>, <span class="s">"https://fountain.fm/episode/z1y9TM…QRuqXl"</span>],263 [<span class="s">"K"</span>, <span class="s">"podcast:item:guid"</span>],264 [<span class="s">"i"</span>, <span class="s">"podcast:item:guid:d98d18…690f31f"</span>, <span class="s">"https://fountain.fm/episode/z1y9TM…QRuqXl"</span>],265 [<span class="s">"k"</span>, <span class="s">"podcast:item:guid"</span>]266 ]267}268269<span class="c">-- reply: external root stays, parent = the comment above --</span>270{271 <span class="k">"kind"</span>: 1111, <span class="k">"content"</span>: <span class="s">"I'm replying to the above comment."</span>,272 <span class="k">"tags"</span>: [273 [<span class="s">"I"</span>, <span class="s">"podcast:item:guid:d98d18…690f31f"</span>, <span class="s">"https://fountain.fm/episode/z1y9TM…QRuqXl"</span>],274 [<span class="s">"K"</span>, <span class="s">"podcast:item:guid"</span>],275 [<span class="s">"e"</span>, <span class="s">"80c48d…bdac05"</span>, <span class="s">"wss://example.relay"</span>, <span class="s">"252f10…2d9f111"</span>],276 [<span class="s">"k"</span>, <span class="s">"1111"</span>],277 [<span class="s">"p"</span>, <span class="s">"252f10…2d9f111"</span>]278 ]279}</pre>280 </div>281282 <div class="box hint">283 <span class="tag">Hint!</span>284 <p>To load a full thread, subscribe with one filter on the uppercase tags: <code>{"kinds":[1111], "#E":[<root id>]}</code> (or <code>#A</code> / <code>#I</code>). Then rebuild the tree from each comment's lowercase <code>e</code> tag.</p>285 </div>286287 <h2 class="bar" id="history"><span class="num">6</span> Version History</h2>288 <p>The number 22 has lived two lives. The Comment spec arrived in late 2024, in a slot left empty by a deleted NIP. Notable changes, newest first:</p>289 <ul class="patchnotes">290 <li><span class="ver">2026</span><span class="when">2026-08</span>Allowed <code>kind:1111</code> replies to kind-1 notes, reversing the 2025 warning against it.</li>291 <li><span class="ver">2025</span><span class="when">2025-02</span>Clarified what an I-tag is and how external scopes work.</li>292 <li><span class="ver">2025</span><span class="when">2025-01</span>Added a warning against replying to kind-1 notes with comments (removed again in 2026).</li>293 <li><span class="ver">2024</span><span class="when">2024-12</span>Added the <code>P</code> and <code>p</code> author tags.</li>294 <li><span class="ver">2024</span><span class="when">2024-11</span>arthurfranca introduced the Comment spec as the new NIP-22 (#1233).</li>295 <li><span class="ver">2023</span><span class="when">2023-12</span>The old NIP-22 was deleted (#897); the number became vacant.</li>296 <li class="minor"><span class="ver">2025-26</span><span class="when">2025-26</span>Typo, JSON format, and code-fence fixes.</li>297 <li><span class="ver">Origin</span><span class="when">2022-07</span>Jeff Thibault created the original NIP-22, an unrelated spec on <code>created_at</code> limits.</li>298 </ul>299300 <div class="box tech">301 <span class="tag">Tech Note</span>302 <p>The file's git history before 2024-11 belongs to the deleted "event <code>created_at</code> limits" spec, not to Comment. External references to "NIP-22" from 2022-2023 mean that older, unrelated spec.</p>303 </div>304305 <div class="credits">306 <h3 class="cardhead">Original Proposal - Credits</h3>307 <table>308 <tr><td>Author</td><td>arthurfranca (the Comment spec; the earlier, unrelated NIP-22 was by Jeff Thibault)</td></tr>309 <tr><td>First commit</td><td>2024-11-07 — “NIP-22 - Comment” (<a href="https://github.com/nostr-protocol/nips/pull/1233">PR #1233</a>); the file itself dates to 2022-07-22</td></tr>310 <tr><td>Status</td><td>draft - optional — clients choose whether to implement comments</td></tr>311 <tr><td>Source</td><td><a href="https://github.com/nostr-protocol/nips/blob/master/22.md">22.md on GitHub</a> - <a href="https://github.com/nostr-protocol/nips/commits/master/22.md">full change history</a></td></tr>312 </table>313 </div>314315 <h2 class="bar"><span class="num">7</span> See Also</h2>316 <ul>317 <li><a href="01.html">NIP-01</a> — the base event format, tags, and the <code>a</code>/<code>e</code>/<code>p</code> tag shapes reused here.</li>318 <li><a href="73.html">NIP-73</a> — the external content identifiers used in <code>I</code>/<code>i</code> tags and their <code>k</code> values.</li>319 <li><a href="21.html">NIP-21</a> — <code>nostr:</code> URIs for the citations and mentions that <code>q</code> and <code>p</code> tags mirror.</li>320 <li><a href="10.html">NIP-10</a> — the older threading scheme for kind-1 text notes.</li>321 <li><a href="23.html">NIP-23</a> — long-form articles, a common root for comments.</li>322 <li><a href="94.html">NIP-94</a> — file metadata events, used in the worked example.</li>323 </ul>324 </div>325326 <aside>327 <div class="cartridge">328 <div class="inner">329 <h3 class="cardhead">Spec Card</h3>330 <div class="lights"><span class="led on"></span><span class="led on"></span><span class="led on"></span></div>331 <dl>332 <dt>Status</dt><dd><span class="chip draft">draft</span><span class="chip">optional</span></dd>333 <dt>Defines</dt><dd>kind 1111 - K/E/A/I/P root tags - k/e/a/i/p parent tags - q citations</dd>334 <dt>Kind(s)</dt><dd>1111</dd>335 <dt>Requires</dt><dd><a href="01.html">NIP-01</a> - <a href="73.html">NIP-73</a> for external scopes</dd>336 <dt>First commit</dt><dd>2022-07-22 (Comment spec: 2024-11-07)</dd>337 <dt>Last updated</dt><dd>2026-08-24</dd>338 </dl>339 </div>340 </div>341 </aside>342 </main>343344 <nav class="navbtns">345 <a href="21.html">◀ NIP-21: nostr: URI scheme</a>346 <a href="23.html">NIP-23: Long-form Content ▶</a>347 </nav>348349 <footer class="pagefoot">350 <a href="../index.html">Nostr Protocol Manual</a>351 <span class="pageno">NIP 22 / F4</span>352 </footer>353</div>354355<script src="../assets/webmcp.js" defer></script>356</body>357</html>