Skip to content

Kind 39000: Group Metadata

Overview

This event contains metadata about a relay-based group, including its name, picture, description, and visibility settings. It is generated and signed by the relay itself and serves as an authoritative source of information about the group.

Specification

PropertyValue
Kind Number39000
Event RangeAddressable
Defined inNIP-29

Content Format

The content field is typically empty, as the metadata is stored in tags.

Schema

""

Tags

Tag NameDescriptionFormatRequired
dGroup identifier["d", "<group-id>"]Yes
nameGroup name["name", "<group-name>"]No
pictureGroup picture URL["picture", "<picture-url>"]No
aboutGroup description["about", "<description>"]No
public or privateGroup visibility["public"] or ["private"]No
open or closedGroup join policy["open"] or ["closed"]No

Client Behavior

Clients should use this event to display information about the group, such as its name, picture, and description. They should also use the visibility and join policy tags to determine how to handle group access and join requests.

When this event is not found, clients may still connect to the group but should treat it as having a different status: unmanaged.

Relay Behavior

This event MUST be generated and signed by the relay's master key. Relays shouldn't accept these events if they're signed by anyone else.

Relays should create or update this event when:

  1. A new group is created (kind 9007).
  2. Group metadata is updated via a kind 9002 event from an authorized user.

If a group is forked and hosted in multiple relays, there will be multiple versions of this event in each different relay.

Use Cases

  • Displaying group information in client UIs.
  • Determining whether a group is public or private.
  • Determining whether new members can freely join or need approval.

Example

json
{
  "id": "...",
  "pubkey": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "created_at": 1671217411,
  "kind": 39000,
  "tags": [
    ["d", "vegans-united"],
    ["name", "Vegans United"],
    ["about", "A place where vegans fight with each other"],
    ["picture", "https://vegans-united.com/new-logo.png"],
    ["public"],
    ["open"]
  ],
  "content": "",
  "sig": "..."
}

References

Notes

The public tag indicates the group can be read by anyone, while private indicates that only authenticated users can read the group content.

The open tag signals that anyone can request to join and the request will be automatically granted, while closed signals that members must be pre-approved or that requests to join will be manually handled.