Skip to content
GET /member

Org members, each enriched with the matching global user profile so a directory renders without a second lookup. `user` is null when the profile row is unavailable.

Query Parameters

qstring

Case-insensitive substring match on the member's name or email. LIKE wildcards are matched literally. Max 200 characters.

role_idstring

Only members holding this role (role_…) — where a role's member_count leads. Combines with q; a q matching more members than the search ceiling answers 400 rather than a partial list.

Response Body

next_cursorstring,null
prev_cursorstring,null
resultobject[]
joined_atstring · date-time
rolesobject[]

Roles held. Replace the whole set with PATCH /member/{userId}.

4 properties
idstring

Role id (role_…).

is_systemboolean
namestring
seat_classstring
Possible values:
billablefree_admin
statusstring

Only active members can act in the organization.

teamsobject[]
2 properties
idstring

Team id (team_…).

namestring
userobject,null

Global profile. Null when the profile row could not be resolved.

4 properties
avatar_urlstring,null
emailstring · email
idstring
namestring,null
user_idstring

User id (usr_…). A membership has no id of its own.

viastring,null

How they joined — invite, verified domain, SCIM, and so on.

curl -X GET 'https://api.elaichi.ai/member' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json'
const response = await fetch('https://api.elaichi.ai/member', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/member"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)
print(response.json())