Skip to content

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.

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

Request
curl https://tahoe.workonward.com/api/partner/v1/workspaces/wsp_4Kd8sPm2Qx7L/users \
  -H "Authorization: Bearer $TAHOE_API_KEY"
Response
{
  "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
}
FieldMeaning
roleThe member’s role in this workspace: owner, admin, member or viewer.
is_verifiedWhether the member has confirmed their email address.
last_login_atWhen 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.

Request
curl https://tahoe.workonward.com/api/partner/v1/users/usr_8Xn3qLw5Tz2c \
  -H "Authorization: Bearer $TAHOE_API_KEY"
  • Meta: /me shows which workspaces your key reaches and whether it must name one.
  • Conventions: handles, pagination and the list envelope.