API reference
Workspaces and users
A workspace is the tenant boundary — every other endpoint reads inside exactly one. These four tell you which ones you can reach and who works in them.
GET/workspacesworkspaces:read
Every workspace this credential can reach. For a single-workspace key that is one row; for a cross-workspace key it is the list you iterate to know what ?workspace_id= values are legal.
curl -s https://tahoe.workonward.com/api/partner/v1/workspaces \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "list",
"data": [
{
"object": "workspace",
"id": "wsp_4Kd8sPm2Qx7L",
"name": "WorkOnward Talent",
"created_at": "2025-11-04T08:12:44.201Z"
}
],
"has_more": false,
"next_cursor": null
}GET/workspaces/{workspace_handle}workspaces:read
One workspace. A handle your credential cannot reach returns 404, not 403 — confirming that a workspace exists but is not yours would itself be a leak.
GET/workspaces/{workspace_handle}/usersusers:read
The people in a workspace and their roles. Useful for mapping a Tahoe recruiter to a user in your own system so that activity you mirror is attributed to the right person.
{
"object": "list",
"data": [
{
"object": "workspace_user",
"id": "usr_2Pq7mKd4Rx8v",
"workspace_id": "wsp_4Kd8sPm2Qx7L",
"name": "Priya Raman",
"email": "[email protected]",
"role": "admin",
"status": "active",
"created_at": "2025-11-04T08:14:02.660Z"
}
],
"has_more": false,
"next_cursor": null
}GET/users/{user_handle}users:read
One user, by handle. The same shape as a row from the list above. Use it to resolve a usr_ handle you stored earlier — for example the owner of a list or the actor on a stage transition.
