{"id":"6f825bcfdf084f2990c732f8a30ed37ee731000715eb1ce81bac918108b38731","pubkey":"2b39b4ffe62933df970e19366c22c1e092f953f83fcfed754e0f04d5a3b459f9","created_at":1753644230,"kind":30817,"tags":[["d","nip-a0"],["title","NIP-A0: Voice Messages"],["summary","Kinds 1222 and 1244, short voice messages whose content is the URL of an audio file."],["s","draft"],["t","nostr"],["t","nip"],["k","1222","Voice Message"],["k","1244","Voice Message Comment"],["alt","A specification: NIP-A0: Voice Messages"],["client","openspecs-import"],["published_at","1753302715"],["proxy","https://github.com/nostr-protocol/nips/blob/656cecc7c0a815b6a2b218d3b5d6f078b3f4dbab/A0.md","web"],["x","f765b5936f5c702b8d5ee3a786aeacfd2f458c63dd6a3ce78a9505101f1816ca"]],"content":"NIP-A0\n======\n\nVoice Messages\n-----------\n\n**Status:** Draft\n\nThis NIP defines new events `kind: 1222` for root messages and `kind: 1244` for reply messages to be used for short voice messages, typically up to 60 seconds in length.\n\n## Specification\n\n### Event Kind `1222` and Kind `1244`\n\nThe `kind: 1222` event is defined as follows:\n\n-   `content`: MUST be a URL pointing directly to an audio file.\n    -   The audio file SHOULD be in `audio/mp4` (.m4a) format using AAC or Opus encoding. Clients MAY support other common audio formats like `audio/ogg`, `audio/webm`, or `audio/mpeg` (mp3), but `audio/mp4` is recommended for broad compatibility and efficiency.\n    -   The audio duration SHOULD be no longer than 60 seconds. Clients publishing `kind: 1222` events SHOULD enforce this limit or provide a clear warning to the user if exceeded.\n-   `tags`:\n    -   Tags MAY be included as per other NIPs (e.g., `t` for hashtags, `g` for geohash, etc.).\n\n  The `kind: 1244` event is defined as follows:\n  \n-    To be used for replies, `kind: 1244` events MUST follow the structure of `NIP-22`.\n-   `content`: MUST be a URL pointing directly to an audio file.\n    -   The audio file SHOULD be in `audio/mp4` (.m4a) format using AAC or Opus encoding. Clients MAY support other common audio formats like `audio/ogg`, `audio/webm`, or `audio/mpeg` (mp3), but `audio/mp4` is recommended for broad compatibility and efficiency.\n    -   The audio duration SHOULD be no longer than 60 seconds. Clients publishing `kind: 1222` events SHOULD enforce this limit or provide a clear warning to the user if exceeded.\n-   `tags`:\n    -   Tags MAY be included as per other NIPs (e.g., `t` for hashtags, `g` for geohash, etc.).\n\n\n## Visual representation with `imeta` (NIP-92) tag (optional)\n\nThe following imeta (NIP-92) tags MAY be included so clients can render a visual preview without having to download the audio file first:\n\n- `waveform`: amplitude values over time, space separated full integers, less than 100 values should be enough to render a nice visual\n- `duration`: audio length in seconds\n\n## Examples\n\n### Root Voice Message Example\n\n```json\n{\n  \"content\": \"https://blossom.primal.net/5fe7df0e46ee6b14b5a8b8b92939e84e3ca5e3950eb630299742325d5ed9891b.mp4\",\n  \"created_at\": 1752501052,\n  \"id\": \"...\",\n  \"kind\": 1222,\n  \"pubkey\": \"...\",\n  \"sig\": \"...\",\n  \"tags\": [\n    [\n      \"imeta\",\n      \"url https://blossom.primal.net/5fe7df0e46ee6b14b5a8b8b92939e84e3ca5e3950eb630299742325d5ed9891b.mp4\",\n      \"waveform 0 7 35 8 100 100 49 8 4 16 8 10 7 2 20 10 100 100 100 100 100 100 15 100 100 100 25 60 5 4 3 1 0 100 100 15 100 29 88 0 33 11 39 100 100 19 4 100 42 35 5 0 1 5 0 0 11 38 100 94 17 11 44 58 5 100 100 100 55 14 72 100 100 57 6 1 14 2 16 100 100 40 16 100 100 6 32 14 13 41 36 16 14 6 3 0 1 2 1 6 0\",\n      \"duration 8\"\n    ]\n  ]\n}","sig":"19e72f0218a1fba60354c2ccd1b381fba29c0a867c16cc89e364fea150c2a34d10c5b5788fd0862a3191bffde8780572d95c0932f46dfd8355def228c2316367"}