Step 1 of 5
Add the expiration tag
The author picks a future Unix timestamp and adds ["expiration", "<timestamp>"] before signing. The tag is covered by the signature, so nobody can move the date later.
NIP-40
DraftEventsRelay
Adds an expiration tag so an event can say when it stops being relevant. Supporting relays stop serving it after that moment and clients hide it, which suits temporary announcements and time-limited offers.
Edit the form or the JSON: both stay in sync, the badge says whether the result is valid, and tapping any field explains it.
Not signed yet · Demo keys only. These personas' secret keys are public on purpose.
Select any field in the form or the JSON to see what it does.
Step 1 of 5
The author picks a future Unix timestamp and adds ["expiration", "<timestamp>"] before signing. The tag is covered by the signature, so nobody can move the date later.
No course chapter covers this NIP yet. The editor above is the quickest way in.
Clients check supported_nips in the relay information document before using expiring events.
Adds an optional tag to the basic event format.
Deletion requests remove an event on demand; expiration schedules its removal in advance.
Specification text is quoted in English from the nostr-protocol/nips repository. Our explanations and the interface are translated. Source on GitHub at commit 0046368
The expiration tag enables users to specify a unix timestamp at which the message SHOULD be considered expired (by relays and clients) and SHOULD be deleted by relays.
tag: expiration
values:
- [UNIX timestamp in seconds]: required
{
"pubkey": "<pub-key>",
"created_at": 1000000000,
"kind": 1,
"tags": [
["expiration", "1600000000"]
],
"content": "This message will expire at the specified timestamp and be deleted by relays.\n",
"id": "<event-id>"
}
Note: The timestamp should be in the same format as the created_at timestamp and should be interpreted as the time at which the message should be deleted by relays.
Clients SHOULD use the supported_nips field to learn if a relay supports this NIP. Clients SHOULD NOT send expiration events to relays that do not support this NIP.
Clients SHOULD ignore events that have expired.
Relays MAY NOT delete expired messages immediately on expiration and MAY persist them indefinitely. Relays SHOULD NOT send expired events to clients, even if they are stored. Relays SHOULD drop any events that are published to them if they are expired. An expiration timestamp does not affect storage of ephemeral events.
The events could be downloaded by third parties as they are publicly accessible all the time on the relays. So don't consider expiring messages as a security feature for your conversations or other uses.