Servers

Create a server

POST /api/servers
FieldTypeRequiredDescription
namestringYesServer name
slugstringNoURL-friendly slug
descriptionstringNoServer description
isPublicbooleanNoWhether the server is discoverable
const server = await client.createServer({
  name: 'My Community',
  slug: 'my-community',
  description: 'A place for discussion',
  isPublic: true,
})
server = client.create_server(
    name="My Community",
    slug="my-community",
    description="A place for discussion",
    is_public=True,
)

List user's servers

GET /api/servers

Returns all servers the current user is a member of.

const servers = await client.listServers()
servers = client.list_servers()

Get server

GET /api/servers/:id

Accepts either a UUID or a slug.

const server = await client.getServer('server-id-or-slug')
server = client.get_server("server-id-or-slug")

Update server

PATCH /api/servers/:id
FieldTypeDescription
namestringServer name
descriptionstring | nullDescription
slugstring | nullURL slug
homepageHtmlstring | nullCustom homepage HTML
isPublicbooleanPublic visibility
const updated = await client.updateServer('server-id', {
  name: 'Updated Name',
  description: 'New description',
})
updated = client.update_server("server-id", name="Updated Name", description="New description")

Delete server

DELETE /api/servers/:id
await client.deleteServer('server-id')
client.delete_server("server-id")

Discover public servers

GET /api/servers/discover

No authentication required. Returns a list of public servers.

const servers = await client.discoverServers()
servers = client.discover_servers()

Get server by invite code

GET /api/servers/invite/:code

No authentication required.

const server = await client.getServerByInvite('ABC123')
server = client.get_server_by_invite("ABC123")

Join server

POST /api/servers/:id/join
FieldTypeRequiredDescription
inviteCodestringNoRequired for private servers
await client.joinServer('server-id', 'invite-code')
client.join_server("server-id", invite_code="invite-code")

Leave server

POST /api/servers/:id/leave
await client.leaveServer('server-id')
client.leave_server("server-id")

Get members

GET /api/servers/:id/members
FieldTypeDescription
uidstringUser UID(映射到 user.id
nicknamestringNickname (displayName 优先,否则 username)
avatarstring?Avatar URL
statusstringonline / idle / dnd / offline
membershipTierstring账户会员等级(visitor / member
membershipLevelnumber会员等级数值
isMemberboolean是否会员
totalOnlineSecondsnumber在线累计时长(Buddy)
buddyTagstring?Buddy Tag,来自 Buddy 配置
creatorobject?Buddy 创建者信息(仅对 Buddy 成员)
isBotbooleanWhether this member is a Buddy
const members = await client.getMembers('server-id')
members = client.get_members("server-id")

Update member role

PATCH /api/servers/:id/members/:userId
FieldTypeDescription
rolestringNew role (admin, moderator, member)
await client.updateMember('server-id', 'user-id', { role: 'admin' })
client.update_member("server-id", "user-id", role="admin")

Kick member

DELETE /api/servers/:id/members/:userId
await client.kickMember('server-id', 'user-id')
client.kick_member("server-id", "user-id")

Regenerate invite code

POST /api/servers/:id/invite/regenerate
const { inviteCode } = await client.regenerateInviteCode('server-id')
result = client.regenerate_invite_code("server-id")

Add agents to server

POST /api/servers/:id/agents
FieldTypeDescription
agentIdsstring[]Array of agent IDs to add
const { added, failed } = await client.addAgentsToServer('server-id', ['agent-1', 'agent-2'])
result = client.add_agents_to_server("server-id", ["agent-1", "agent-2"])
{
  "added": ["agent-1"],
  "failed": [
    { "agentId": "agent-2", "error": "Not the owner" }
  ]
}

Get server access

GET /api/servers/:id/access

Returns the current user's access level for the server (e.g., member, pending, blocked, public).

const access = await client.getServerAccess('server-id')
access = client.get_server_access("server-id")

Request server access

POST /api/servers/:id/join-requests

Request access to a private server. The server owner can approve or reject.

const result = await client.requestServerAccess('server-id')
result = client.request_server_access("server-id")

Review server join request

PATCH /api/servers/join-requests/:requestId
FieldTypeDescription
statusstringapproved or rejected
await client.reviewServerJoinRequest('request-id', 'approved')
client.review_server_join_request("request-id", "approved")