REST API
Members

Members

Members are users with an accepted Membership for your community. This page covers the public members directory + admin actions (kick / ban / approve / reject applications). Programmatic admin moves fire matching webhooks (member.kicked, member.banned, member.approved, member.rejected) — see Webhook event catalog.

Base URL: https://api.cobuntu.com/api/v1

Every endpoint requires an X-API-Key header. See Authentication for scope details.

GET /communities/{communityTag}/members — List public members directory

Scope: READ_PUBLIC

Path parameters:

ParamTypeDescription
communityTagstringYour community's tag (e.g. bela-escala, orbis).

Query parameters:

ParamTypeDefaultDescription
limitinteger20Page size. Default 20, max 100.
offsetinteger0Zero-based offset for pagination. Use either offset or cursor — not both.

Response (200):

[
  {
      "userId": "…",
      "name": "…",
      "usertag": "…",
      "profileImage": "…"  // nullable,
      "bio": "…"  // nullable,
      "joinedAt": "…",
    }
]
FieldTypeDescription
userIdstringStable user identifier; use this in admin actions (/members/{userId}/kick etc).
namestringDisplay name.
usertagstringPer-platform handle, unique across all of Cobuntu.
profileImagestring (nullable)Avatar URL (or null).
biostring (nullable)Self-written short bio (or null).
joinedAtstring (date-time)ISO 8601 timestamp of when this user's membership was ACCEPTED.

Example:

curl https://api.cobuntu.com/api/v1/communities/my-community/members \
  -H "X-API-Key: pk_live_..."

POST /communities/{communityTag}/applications/{requestId}/approve — Approve a pending membership application

Scope: WRITE_MEMBERS

Path parameters:

ParamTypeDescription
communityTagstringYour community's tag (e.g. bela-escala, orbis).
requestIdstringMembership request identifier (from the member.requested webhook or the admin app).

Response (200):

{
  "ok": false,
  "membershipId": "…",
  "userId": "…",
}
FieldTypeDescription
okbooleanAlways true on a 200 response.
membershipIdstringNewly-created membership id (mirror of the member.approved event payload).
userIdstringUser id the membership was created for.

Example:

curl -X POST \
  https://api.cobuntu.com/api/v1/communities/my-community/applications/EXAMPLE_ID/approve \
  -H "X-API-Key: sk_live_..."

POST /communities/{communityTag}/applications/{requestId}/reject — Reject a pending membership application

Scope: WRITE_MEMBERS

Path parameters:

ParamTypeDescription
communityTagstringYour community's tag (e.g. bela-escala, orbis).
requestIdstringMembership request identifier (from the member.requested webhook or the admin app).

Request body:

{
  "reason": "…",
}
FieldTypeDescription
reasonstringOptional internal note shown to other admins. Not sent to the applicant by default — wire an automation if you want a reject email.

Response (200):

{
  "ok": false,
}
FieldTypeDescription
okbooleanAlways true on a 200 response.

Example:

curl -X POST \
  https://api.cobuntu.com/api/v1/communities/my-community/applications/EXAMPLE_ID/reject \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'

POST /communities/{communityTag}/members/{userId}/ban — Ban a member (irreversible)

Scope: WRITE_MEMBERS

Path parameters:

ParamTypeDescription
communityTagstringYour community's tag (e.g. bela-escala, orbis).
userIdstringUser identifier from GET /members.

Request body:

{
  "reason": "…",
}
FieldTypeDescription
reasonstringOptional internal note. Bans are irreversible; the reason helps future admins understand prior decisions.

Response (200):

{
  "ok": false,
  "bannedAt": "…",
}
FieldTypeDescription
okbooleanAlways true on a 200 response.
bannedAtstring (date-time)Server timestamp. Bans are irreversible.

Example:

curl -X POST \
  https://api.cobuntu.com/api/v1/communities/my-community/members/EXAMPLE_ID/ban \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'

POST /communities/{communityTag}/members/{userId}/kick — Kick a member

Scope: WRITE_MEMBERS

Path parameters:

ParamTypeDescription
communityTagstringYour community's tag (e.g. bela-escala, orbis).
userIdstringUser identifier from GET /members.

Request body:

{
  "reason": "…",
}
FieldTypeDescription
reasonstringOptional internal note about why the member was kicked. Stored on the membership audit trail; not surfaced to the kicked member.

Response (200):

{
  "ok": false,
  "kickedAt": "…",
}
FieldTypeDescription
okbooleanAlways true on a 200 response.
kickedAtstring (date-time)Server timestamp of the action.

Example:

curl -X POST \
  https://api.cobuntu.com/api/v1/communities/my-community/members/EXAMPLE_ID/kick \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'