Groups

Returns all groups except internal system groups. Groups can also be created; they are live immediately and can be targeted by content.

Required scope: read:groups for reading, write:groups for creating.

Endpoints

GET
/api/open/v1/groups

List groups (paginated). Filter: ?type=department|profession|custom

GET
/api/open/v1/groups/{id}

Get a single group

POST
/api/open/v1/groups

Create a group (returns 201 with the group)

List groups

curl "https://customer.monotree.com/api/open/v1/groups?type=department" \
  -H "Authorization: Bearer mono_your_token_here"
Query paramNotes
typeOne of department, profession, custom.
page, per_page, sinceStandard pagination.

Response

{
  "data": {
    "id": 1,
    "name": "Kitchen Staff",
    "type": "department",
    "managers": [
      { "id": 42, "name": "John Doe" }
    ],
    "created_at": "2026-01-15T10:00:00+00:00"
  }
}

Field notes

  • managers lists the users flagged as manager of the group. It appears on the /groups endpoints only — not when groups are embedded elsewhere (e.g. on a user).
  • Group types: department (organizational/location unit), profession (job title equivalent, synced from the HR system), custom (free-form).

Create a group

curl -X POST https://customer.monotree.com/api/open/v1/groups \
  -H "Authorization: Bearer mono_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{"name": "Nørrebro", "type": "department"}'
FieldNotes
nameRequired. Max 255 characters. Names are not unique: creating "Nørrebro" twice gives two departments.
typeOptional. department (default), profession or custom.
is_openOptional boolean, custom groups only. Lets employees join the group themselves. Sending true on a department or profession returns 422.

Returns 201 with the same group object as GET /groups/{id}. The group is published right away, so content targeted at it reaches members immediately.