Skip to content

Community Types

The default type. Anyone with an AT Protocol account can join immediately.

POST /api/v1/communities/:did/members/join
{ "userDid": "did:plc:abc123" }
201 { "status": "joined", ... }

Join requests go to a pending queue. Admins review and approve or reject them.

POST /api/v1/communities/:did/members/join
{ "userDid": "did:plc:abc123" }
202 { "status": "pending", ... }
GET /api/v1/communities/:did/members/pending?adminDid=did:plc:admin
{
"pendingMembers": [
{ "userDid": "did:plc:abc", "handle": "alice.bsky.social", "avatar": "...", "requestedAt": "..." }
]
}

Approve:

POST /api/v1/communities/:did/members/approve
{ "adminDid": "did:plc:admin", "memberDid": "did:plc:abc" }

Reject:

POST /api/v1/communities/:did/members/reject
{ "adminDid": "did:plc:admin", "memberDid": "did:plc:abc", "reason": "Not a fit" }

Private communities will support invite-only membership where admins send direct invitations.

PUT /communities/:did/profile
{ "displayName": "My Community", "type": "admin-approved" }

Valid types: open, admin-approved, private.