Create and manage groups, invite members, and control access with the Groups API endpoints.
Groups
Groups are the primary organizational unit in Curyloop. They represent teams, communities, or projects that share knowledge together.
List Groups
Retrieve all groups you're a member of.
GET /api/v1/groups
Response
json
{
"data": [
{
"id": "uuid",
"name": "Engineering Team",
"slug": "engineering-team",
"description": "Frontend and backend engineering discussions",
"is_public": false,
"member_count": 12,
"created_at": "2026-01-15T10:00:00Z"
}
]
}
Get Group
Retrieve a single group by ID.
GET /api/v1/groups/:id
Response
json
{
"data": {
"id": "uuid",
"name": "Engineering Team",
"slug": "engineering-team",
"description": "Frontend and backend engineering discussions",
"is_public": false,
"member_count": 12,
"role": "admin",
"created_at": "2026-01-15T10:00:00Z"
}
}
Create Group
Create a new group. You become the owner automatically.
POST /api/v1/groups
Body
json
{
"name": "Design Team",
"description": "UI/UX research and design system discussions",
"is_public": false
}
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Group name (max 100 chars) |
description | string | No | Group description |
is_public | boolean | No | Default false |
Response
json
{
"data": {
"id": "uuid",
"name": "Design Team",
"slug": "design-team",
"created_at": "2026-03-07T10:00:00Z"
}
}
List Members
Retrieve all members of a group.
GET /api/v1/groups/:id/members
Response
json
{
"data": [
{
"user_id": "uuid",
"name": "Jane Doe",
"email": "jane@example.com",
"role": "admin",
"joined_at": "2026-01-15T10:00:00Z"
}
]
}
Invite Member
Invite a new member to the group. Requires admin or owner role.
POST /api/v1/groups/:id/invite
Body
json
{
"email": "newmember@example.com",
"role": "member"
}
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Email to invite |
role | string | No | member (default) or admin |