Workspaces
The workspaces a key may use, and their members.
Who am I#
GET
/meThe account behind the key, its plan, and the key's scopes. A cheap way to test a key.
Request#
Shell
curl "https://api.lifebutler.io/v1/me" \
-H "Authorization: Bearer $LIFEBUTLER_KEY"Response 200#
| Field | Type | Description |
|---|---|---|
userId | string | |
plan | string | pro or premium. |
key | object | |
key.id | string | |
key.scopes | array of string | |
key.expiresAt | string or null | |
sharedWorkspaceLimit | number | Shared workspaces your plan allows for the API (the personal one is always included). |
JSON
{
"userId": "Ab3Cd5Ef7G",
"plan": "string",
"key": {
"id": "Ab3Cd5Ef7G",
"scopes": [
"string"
],
"expiresAt": "2026-11-20T19:30:00+01:00"
},
"sharedWorkspaceLimit": 1
}List workspaces#
GET
/workspacesThe workspaces this key was granted, each with a status. Only workspaces where you are owner or admin can be used; the ids are what every other call takes as workspaceId.
Request#
Shell
curl "https://api.lifebutler.io/v1/workspaces" \
-H "Authorization: Bearer $LIFEBUTLER_KEY"Response 200#
| Field | Type | Description | |||
|---|---|---|---|---|---|
data | array of Workspace | ||||
data[].id | string | ||||
data[].name | string | Empty for the personal workspace. | |||
data[].type | string | personal, family, flat, friends, club, trip or company. | |||
data[].personal | boolean | ||||
data[].role | string or null | Your role: owner or admin (null when not accessible). | |||
data[].aiEnabled | boolean | AI features (document analysis, smart search, butler) are turned on by the workspace admins. | |||
data[].status | active \ | admin_required \ | workspace_limit \ | not_found | active, or why this key can't use the workspace right now. |
JSON
{
"data": [
{
"id": "Ab3Cd5Ef7G",
"name": "Einkauf",
"type": "string",
"personal": false,
"role": "string",
"aiEnabled": false,
"status": "active"
}
]
}Get a workspace#
GET
/workspaces/{workspaceId}Name, type and whether AI features are on.
Path#
| Field | Type | Description |
|---|---|---|
workspaceId | string | Workspace id (from list_workspaces). |
Request#
Shell
curl "https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a" \
-H "Authorization: Bearer $LIFEBUTLER_KEY"Response 200#
| Field | Type | Description | |||
|---|---|---|---|---|---|
id | string | ||||
name | string | Empty for the personal workspace. | |||
type | string | personal, family, flat, friends, club, trip or company. | |||
personal | boolean | ||||
role | string or null | Your role: owner or admin (null when not accessible). | |||
aiEnabled | boolean | AI features (document analysis, smart search, butler) are turned on by the workspace admins. | |||
status | active \ | admin_required \ | workspace_limit \ | not_found | active, or why this key can't use the workspace right now. |
JSON
{
"id": "Ab3Cd5Ef7G",
"name": "Einkauf",
"type": "string",
"personal": false,
"role": "string",
"aiEnabled": false,
"status": "active"
}List members#
GET
/workspaces/{workspaceId}/membersEveryone in the workspace, including members without an account. Use the ids to assign tasks and invite to appointments.
Path#
| Field | Type | Description |
|---|---|---|
workspaceId | string | Workspace id (from list_workspaces). |
Request#
Shell
curl "https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a/members" \
-H "Authorization: Bearer $LIFEBUTLER_KEY"Response 200#
| Field | Type | Description |
|---|---|---|
data | array of Member | |
data[].id | string | Use in attendeeIds / assigneeIds. |
data[].name | string | |
data[].role | string | owner, admin, adult, child or guest. |
data[].hasAccount | boolean | false for members without an account (kids, pets, grandparents). |
JSON
{
"data": [
{
"id": "Ab3Cd5Ef7G",
"name": "Einkauf",
"role": "string",
"hasAccount": false
}
]
}