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.

Request
curl -s https://tahoe.workonward.com/api/partner/v1/workspaces \
  -H "Authorization: Bearer $TAHOE_API_KEY"
Response
{
  "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.

Response
{
  "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.