Groups
Create a group
Create ONE group. Accepts `name`, `emoji`, `description`, `parent_id` (for nested groups), and an optional `groups_contacts` array to add starter members. **Requires `Idempotency-Key`.** Returns `{ da
POST /v2/groups/
Parameters
Header parameters
Idempotency-Key
string required
Required. UUID per logical operation, reused on every retry. See
apps/rest-api/src/shared/idempotency.ts for the full contract. Missing → 400 BadRequest; same key + different body → 409 Conflict.Request body
Content-Type: application/json
group
object required
group.name
string required
group.emoji
string
group.description
string
group.parent_id
string (uuid)
group.parent
any
group.id
string (uuid)
group.groups_contacts
array<object>
group.groups_contacts[].contact_id
string (uuid)
group.groups_contacts[].contact
any
Example
{
"group": {
"name": "string"
}
}
Responses
201 — Created
Content-Type: application/json
data
object required
data.group
any required
Example
{
"data": {
"group": null
}
}
400
No response body.
401
No response body.
403
No response body.
404
No response body.
409
No response body.
429
No response body.
500
No response body.
Code samples
curl https://api.prod.getdex.com/v2/groups/ \
--request POST \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"group": {
"name": "string"
}
}'
fetch('https://api.prod.getdex.com/v2/groups/', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
group: {
name: 'string'
}
})
})
requests.post("https://api.prod.getdex.com/v2/groups/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"group": {
"name": "string"
}
}
)
List groups
List all of the authenticated user's groups. Returns the canonical list envelope: `{ data: { groups: [...] } }`. Supports `?orderBy[name]=asc|desc` and `?orderBy[number_of_contacts]=asc|desc`, plus `?
Count groups
Return the count of the authenticated user's groups. Cheap path for a sidebar badge / quota check without loading the full list.

