{"id":"86063c737dcc6b8ae5d36cd9851d5435ea459d952b2e52efc6f2a59e55813dbc","pubkey":"8d7a152d0cadf3898853840fae21af7fd3f156be9e12eeec36b0e64ad1121dbb","created_at":1782908291,"kind":30817,"tags":[["d","nostr-flash-custom-event-kinds"],["title","Nostr Flash — Custom Event Kinds"],["alt","Nostr Implementation Possibility: Nostr Flash — Custom Event Kinds"],["client","NostrHub"]],"content":"# Nostr Flash — Custom Event Kinds\n\n## Kind 7033 — Flash Post\n\nRegular (non-replaceable) event representing an ephemeral photography post.\n\n### Tags\n\n| Tag   | Description |\n|-------|-------------|\n| `url` | Direct URL to the image file (Blossom CDN) |\n| `m`   | MIME type of the image (`image/webp`, `image/jpeg`, etc.) |\n| `x`   | SHA-256 hex hash of the image file |\n| `dim` | Image dimensions in `WxH` format |\n| `lifetime` | Survival timer in seconds (e.g. `3600` = 1 hour) |\n| `alt` | Accessibility caption (≤280 chars) |\n| `t`   | Hashtag for categorisation |\n| `imeta` | Full Blossom image metadata (NIP-94 compatible) |\n| `encrypted` | Set to `nip44` when content is NIP-44 encrypted |\n| `p`   | Hex pubkey of the encrypted recipient (for private posts) |\n\n### Content\n\n- **Public posts**: Human-readable caption text.\n- **Private posts**: NIP-44 encrypted JSON payload containing `{ \"caption\": \"...\", \"imageUrl\": \"...\" }`.\n\n## Kind 7034 — Flash Boost\n\nRegular (non-replaceable) reaction event that extends the survival timer of a flash post.\n\n### Tags\n\n| Tag         | Description |\n|-------------|-------------|\n| `e`         | Hex event ID of the flash post being boosted |\n| `p`         | Hex pubkey of the flash post author |\n| `extension` | Number of seconds to add to the post's survival timer |\n| `rating`    | Optional score (1–5) for quality rating |\n\n### Content\n\nOptional free-text comment (may be empty).\n\n## Expiration Logic\n\n```text\nexpiresAt = (event.created_at + parseInt(lifetime_tag) + sum(extension_tags_from_boosts)) * 1000\nisExpired = Date.now() > expiresAt\n```\n\nExpired events are hidden from the active feed and shown in the Archive (read-only).","sig":"73512b7e9b1af70fdb00ecbec403fc109e78f91c69c9f2e95b953d5bb4ecee1bb1f277c41a69b4f40a1603b4663ce23994745c615f473c297172e460740cd157"}