Workspaces and users
Workspaces your key can read and their members.
A workspace is one Tahoe customer account, with its own jobs, candidates and team. Every other endpoint reads inside exactly one workspace. These four endpoints tell you which workspaces your key can reach and who works in them.
GET/workspacesworkspaces:read
Every workspace your key can reach. For most keys that is a single row. For a cross-workspace key it is the list of values you may pass as ?workspace_id= on other calls. The list pages with limit and cursor like every other list.
curl https://tahoe.workonward.com/api/partner/v1/workspaces \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "list",
"data": [
{
"object": "workspace",
"id": "wsp_4Kd8sPm2Qx7L",
"name": "Kestrel Labs Talent",
"created_at": "2025-11-04T08:12:44.201Z",
"updated_at": "2026-09-02T16:40:03.118Z",
"links": {
"self": "/api/partner/v1/workspaces/wsp_4Kd8sPm2Qx7L",
"users": "/api/partner/v1/workspaces/wsp_4Kd8sPm2Qx7L/users",
"jobs": "/api/partner/v1/jobs?workspace_id=wsp_4Kd8sPm2Qx7L"
}
}
],
"has_more": false,
"next_cursor": null
}GET/workspaces/{workspace_handle}workspaces:read
One workspace, in the same shape as a row above. A handle your key cannot reach returns 404, not 403: telling you that a workspace exists but is not yours would itself be a leak.
GET/workspaces/{workspace_handle}/usersusers:read
The members of a workspace and their roles. Use it to map a Tahoe recruiter to a user in your own system, so that activity you mirror is credited to the right person. A team is small, so the whole membership comes back in one page and next_cursor is always null.
curl https://tahoe.workonward.com/api/partner/v1/workspaces/wsp_4Kd8sPm2Qx7L/users \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "list",
"data": [
{
"object": "user",
"id": "usr_2Pq7mKd4Rx8v",
"workspace_id": "wsp_4Kd8sPm2Qx7L",
"email": "[email protected]",
"first_name": "Jordan",
"last_name": "Rivera",
"is_verified": true,
"role": "owner",
"photo_url": null,
"created_at": "2025-11-04T08:12:44.201Z",
"updated_at": "2026-09-30T09:15:27.402Z",
"last_login_at": "2026-10-06T13:02:51.774Z",
"links": { "self": "/api/partner/v1/users/usr_2Pq7mKd4Rx8v" }
},
{
"object": "user",
"id": "usr_8Xn3qLw5Tz2c",
"workspace_id": "wsp_4Kd8sPm2Qx7L",
"email": "[email protected]",
"first_name": "Sam",
"last_name": "Okafor",
"is_verified": true,
"role": "member",
"photo_url": null,
"created_at": "2026-02-11T15:20:09.330Z",
"updated_at": "2026-09-12T10:44:18.006Z",
"last_login_at": "2026-10-05T08:31:40.912Z",
"links": { "self": "/api/partner/v1/users/usr_8Xn3qLw5Tz2c" }
}
],
"has_more": false,
"next_cursor": null
}| Field | Meaning |
|---|---|
role | The member’s role in this workspace: owner, admin, member or viewer. |
is_verified | Whether the member has confirmed their email address. |
last_login_at | When they last signed in to Tahoe, or null. |
GET/users/{user_handle}users:read
One user, in the same shape as a row above. Use it to resolve a usr_ handle you stored earlier. The user must belong to the workspace the request addresses (pass ?workspace_id= with a cross-workspace key). Anyone else returns 404.
curl https://tahoe.workonward.com/api/partner/v1/users/usr_8Xn3qLw5Tz2c \
-H "Authorization: Bearer $TAHOE_API_KEY"Related
- Meta:
/meshows which workspaces your key reaches and whether it must name one. - Conventions: handles, pagination and the list envelope.