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:
| Param | Type | Description |
|---|---|---|
communityTag | string | Your community's tag (e.g. bela-escala, orbis). |
Query parameters:
| Param | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Page size. Default 20, max 100. |
offset | integer | 0 | Zero-based offset for pagination. Use either offset or cursor — not both. |
Response (200):
[
{
"userId": "…",
"name": "…",
"usertag": "…",
"profileImage": "…" // nullable,
"bio": "…" // nullable,
"joinedAt": "…",
}
]| Field | Type | Description |
|---|---|---|
userId | string | Stable user identifier; use this in admin actions (/members/{userId}/kick etc). |
name | string | Display name. |
usertag | string | Per-platform handle, unique across all of Cobuntu. |
profileImage | string (nullable) | Avatar URL (or null). |
bio | string (nullable) | Self-written short bio (or null). |
joinedAt | string (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:
| Param | Type | Description |
|---|---|---|
communityTag | string | Your community's tag (e.g. bela-escala, orbis). |
requestId | string | Membership request identifier (from the member.requested webhook or the admin app). |
Response (200):
{
"ok": false,
"membershipId": "…",
"userId": "…",
}| Field | Type | Description |
|---|---|---|
ok | boolean | Always true on a 200 response. |
membershipId | string | Newly-created membership id (mirror of the member.approved event payload). |
userId | string | User 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:
| Param | Type | Description |
|---|---|---|
communityTag | string | Your community's tag (e.g. bela-escala, orbis). |
requestId | string | Membership request identifier (from the member.requested webhook or the admin app). |
Request body:
{
"reason": "…",
}| Field | Type | Description |
|---|---|---|
reason | string | Optional 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,
}| Field | Type | Description |
|---|---|---|
ok | boolean | Always 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:
| Param | Type | Description |
|---|---|---|
communityTag | string | Your community's tag (e.g. bela-escala, orbis). |
userId | string | User identifier from GET /members. |
Request body:
{
"reason": "…",
}| Field | Type | Description |
|---|---|---|
reason | string | Optional internal note. Bans are irreversible; the reason helps future admins understand prior decisions. |
Response (200):
{
"ok": false,
"bannedAt": "…",
}| Field | Type | Description |
|---|---|---|
ok | boolean | Always true on a 200 response. |
bannedAt | string (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:
| Param | Type | Description |
|---|---|---|
communityTag | string | Your community's tag (e.g. bela-escala, orbis). |
userId | string | User identifier from GET /members. |
Request body:
{
"reason": "…",
}| Field | Type | Description |
|---|---|---|
reason | string | Optional 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": "…",
}| Field | Type | Description |
|---|---|---|
ok | boolean | Always true on a 200 response. |
kickedAt | string (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 */ }'