Skip to main content

Teams

A team is a named group of users inside a company account. These endpoints create and change teams and manage who belongs to them.

Every endpoint below shows its parameters and response fields in the middle. On the right you find request samples in cURL, JavaScript and Python, an example response and Try it, which sends the request for real with your own token.

Lists the teams of a directory​

GET/v1.0/directories/{directoryId}/teamsTry it →
Field overview from the specification

Each item has:

  • teamId (string): id of the team.
  • name (string): team name.
  • code (string | null): optional team code.
  • isScimGroup (boolean): whether the team is synced from a SCIM identity provider.
  • memberCount (number): number of active members.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: code, isScimGroup, memberCount, name, teamId.

    Example: code,isScimGroup

Response

  • teamIdstringrequired

    Id of the team.

  • namestringrequired

    Team name.

  • codestringrequirednullable

    Optional team code.

  • isScimGroupbooleanrequired

    Whether the team is synced from a SCIM identity provider.

  • memberCountnumberrequired

    Number of active members.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Creates a team​

POST/v1.0/directories/{directoryId}/teamsTry it →

Only admins/owners may create teams.

Field overview from the specification

Body fields:

  • name (string, required): team name.
  • code (string, optional): optional team code.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: code, isScimGroup, memberCount, name, teamId.

    Example: code,isScimGroup

Request body application/json

  • namestringrequired

    Team name.

  • codestringoptionalnullable

    Optional team code.

Response

  • teamIdstringrequired

    Id of the team.

  • namestringrequired

    Team name.

  • codestringrequirednullable

    Optional team code.

  • isScimGroupbooleanrequired

    Whether the team is synced from a SCIM identity provider.

  • memberCountnumberrequired

    Number of active members.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 403

    Forbidden (insufficient permissions).

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Updates a team (rename + optional code)​

PATCH/v1.0/directories/{directoryId}/teams/{teamId}Try it →

Only admins/owners.

Field overview from the specification

Body fields:

  • name (string, required): new team name.
  • code (string, optional): new team code; null clears it, omit to leave unchanged.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

  • teamIdstringrequired

    Id of the team.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: code, isScimGroup, memberCount, name, teamId.

    Example: code,isScimGroup

Request body application/json

  • namestringrequired

    New team name.

  • codestringoptionalnullable

    New team code; null to clear, omit to leave unchanged.

Response

  • teamIdstringrequired

    Id of the team.

  • namestringrequired

    Team name.

  • codestringrequirednullable

    Optional team code.

  • isScimGroupbooleanrequired

    Whether the team is synced from a SCIM identity provider.

  • memberCountnumberrequired

    Number of active members.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 403

    Forbidden (insufficient permissions).

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Removes (archives) a team​

DELETE/v1.0/directories/{directoryId}/teams/{teamId}Try it →

Soft-delete (archive) of the team and all its memberships. Only admins/owners.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

  • teamIdstringrequired

    Id of the team.

Status codes

  • 204Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 403

    Forbidden (insufficient permissions).

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Lists the memberships of a team​

GET/v1.0/directories/{directoryId}/teams/{teamId}/membershipsTry it →

Membership scalars only (userId, isMainTeam); fetch user details via GET .../teams/{teamId}/memberships/users/{userId}.

Field overview from the specification

Each item has:

  • teamId (string): id of the team.
  • userId (string): id of the member user.
  • isMainTeam (boolean): whether this team is the user’s main team.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

  • teamIdstringrequired

    Id of the team.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: isMainTeam, teamId, userId.

    Example: isMainTeam,teamId

Response

  • teamIdstringrequired

    Id of the team.

  • userIdstringrequired

    Id of the member user.

  • isMainTeambooleanrequired

    Whether this team is the user’s main team.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Sets the members of a team (full replace-set)​

PUT/v1.0/directories/{directoryId}/teams/{teamId}/membershipsTry it →

Only admins/owners.

Field overview from the specification

Body fields:

  • userIds (array of strings, required): full replace-set of member user ids. Users not in the list are removed.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

  • teamIdstringrequired

    Id of the team.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: isMainTeam, teamId, userId.

    Example: isMainTeam,teamId

Request body application/json

  • userIdsstring[]required

    Full replace-set of member user ids. Users not in the list are removed.

Response

  • teamIdstringrequired

    Id of the team.

  • userIdstringrequired

    Id of the member user.

  • isMainTeambooleanrequired

    Whether this team is the user’s main team.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 403

    Forbidden (insufficient permissions).

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Lists the users (members) of a team​

GET/v1.0/directories/{directoryId}/teams/{teamId}/memberships/usersTry it →
Field overview from the specification

Each item has:

  • userId (string): id of the user.
  • email (string): email address of the user.
  • firstName (string): first name.
  • lastName (string): last name.
  • pictureFileUrl (string | null): absolute URL of the profile picture, or null. Requires the same Bearer token as the API.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

  • teamIdstringrequired

    Id of the team.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: email, firstName, lastName, pictureFileUrl, userId.

    Example: email,firstName

Response

  • userIdstringrequired

    Id of the user.

  • emailstringrequired

    Email address of the user.

  • firstNamestringrequired

    First name.

  • lastNamestringrequired

    Last name.

  • pictureFileUrlstringrequirednullable

    Absolute URL of the profile picture, or null. Requires the same Bearer token as the API.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.

Returns a single user (member) of a team​

GET/v1.0/directories/{directoryId}/teams/{teamId}/memberships/users/{userId}Try it →

The user must be a member of the team, otherwise 404.

Field overview from the specification

Response fields:

  • userId (string): id of the user.
  • email (string): email address of the user.
  • firstName (string): first name.
  • lastName (string): last name.
  • pictureFileUrl (string | null): absolute URL of the profile picture, or null. Requires the same Bearer token as the API.

Path parameters

  • directoryIdstringrequired

    Id of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by GET /v1.0/me/directories/memberships.

  • teamIdstringrequired

    Id of the team.

  • userIdstringrequired

    Id of the user.

Query parameters

  • fieldsstringoptional

    Comma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.

    Only first-level fields can be named. A nested list such as attendees, tags or sectionItems is returned whole or not at all; attendees.name is not supported.

    On a paged response the selection applies to the entries in items; page, pageSize, total and hasMore are always returned. An unknown name is rejected with 400 rather than ignored.

    Selectable here: email, firstName, lastName, pictureFileUrl, userId.

    Example: email,firstName

Response

  • userIdstringrequired

    Id of the user.

  • emailstringrequired

    Email address of the user.

  • firstNamestringrequired

    First name.

  • lastNamestringrequired

    Last name.

  • pictureFileUrlstringrequirednullable

    Absolute URL of the profile picture, or null. Requires the same Bearer token as the API.

Status codes

  • 200Success
  • 400

    Invalid request (validation error).

  • 401

    Missing or invalid bearer token.

  • 404

    Resource not found or not accessible.

  • 429

    Rate limit exceeded (per token/IP). Transcription uploads may also return code FUP_LIMIT_EXCEEDED or TOO_MANY_CONCURRENT_TRANSCRIPTIONS.

  • 500

    Internal server error.