1NIP-682======34Picture-first feeds5-------------------67`draft` `optional`89This NIP defines event kind `20` for picture-first clients. Images must be self-contained. They are hosted externally and referenced using `imeta` tags.1011The idea is for this type of event to cater to Nostr clients resembling platforms like Instagram, Flickr, Snapchat, or 9GAG, where the picture itself takes center stage in the user experience.1213## Picture Events1415Picture events contain a `title` tag and description in the `.content`.1617They may contain multiple images to be displayed as a single post.1819```yaml20{21 "id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>,22 "pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,23 "created_at": <Unix timestamp in seconds>,24 "kind": 20,25 "content": "<description of post>",26 "tags": [27 ["title", "<short title of post>"],2829 // Picture Data30 [31 "imeta",32 "url https://nostr.build/i/my-image.jpg",33 "m image/jpeg",34 "thumbhash zOcFFIIKmXdCinaXaHcmcHUFSA==",35 "blurhash eVF$^OI:${M{o#*0-nNFxakD-?xVM}WEWB%iNKxvR-oetmo#R-aen$",36 "dim 3024x4032",37 "alt A scenic photo overlooking the coast of Costa Rica",38 "x <sha256 hash as specified in NIP 94>",39 "fallback https://nostrcheck.me/alt1.jpg",40 "fallback https://void.cat/alt1.jpg"41 ],42 [43 "imeta",44 "url https://nostr.build/i/my-image2.jpg",45 "m image/jpeg",46 "thumbhash zOcFFIIKmXgzmWaXWIcmcFQEGA",47 "dim 3024x4032",48 "alt Another scenic photo overlooking the coast of Costa Rica",49 "x <sha256 hash as specified in NIP 94>",50 "fallback https://nostrcheck.me/alt2.jpg",51 "fallback https://void.cat/alt2.jpg",5253 "annotate-user <32-bytes hex of a pubkey>:<posX>:<posY>" // Tag users in specific locations in the picture54 ],5556 ["content-warning", "<reason>"], // if NSFW5758 // Tagged users59 ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>"],60 ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>"],6162 // Specify the media type for filters to allow clients to filter by supported kinds63 ["m", "image/jpeg"],6465 // Hashes of each image to make them queryable66 ["x", "<sha256>"]6768 // Hashtags69 ["t", "<tag>"],70 ["t", "<tag>"],7172 // location73 ["location", "<location>"], // city name, state, country74 ["g", "<geohash>"],7576 // When text is written in the image, add the tag to represent the language77 ["L", "ISO-639-1"],78 ["l", "en", "ISO-639-1"]79 ]80}81```8283The `imeta` tag `annotate-user` places a user link in the specific position in the image.8485Only the following media types are accepted:86- `image/apng`: Animated Portable Network Graphics (APNG)87- `image/avif`: AV1 Image File Format (AVIF)88- `image/gif`: Graphics Interchange Format (GIF)89- `image/jpeg`: Joint Photographic Expert Group image (JPEG)90- `image/png`: Portable Network Graphics (PNG)91- `image/webp`: Web Picture format (WEBP)9293Picture events might be used with [NIP-71](71.md)'s kind `22` to display short vertical videos in the same feed.