API ReferenceTeams
All endpoints

Teams

Creates, lists, reads, updates, archives, and restores teams. This section also manages team memberships.

GET/api/v1/teamsList teams

#

Returns one page sorted by team name and team ID. By default, the response excludes archived teams.

Operation ID
listTeams
Prerequisites
None
Retry guidance
This operation is repeat-safe. Respect Retry-After and use bounded retries. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request GET \
  --url 'https://{company}.api.tellagen.com/api/v1/teams' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns teams and pagination fields.

Success response JSON
json
{
  "teams": [
    {
      "id": 42,
      "revision": 2,
      "company_id": 7,
      "name": "Platform Team",
      "slug": "platform_team",
      "description": "Core platform infrastructure",
      "member_count": 12,
      "created_at": "2025-01-10T09:00:00Z",
      "updated_at": "2025-01-10T09:00:00Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "has_more": true,
    "next_cursor": "opaque-server-cursor"
  }
}
Request and response contract

Query parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Query parameters
FieldTypeRequiredDescription
limitintegerNoThe maximum number of items in one page. The default is 50, and the maximum is 100.

Minimum: 1. · Maximum: 100. · Default: 50.

cursorstringNoThe next_cursor value from the previous page. Clients treat this value as opaque and do not create, inspect, or change it.

Minimum length: 1 characters. · Maximum length: 4096 characters.

include_archivedbooleanNoControls whether the response includes archived teams. The default is false.

Default: false.

Response 200

Returns teams and pagination fields.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
teamsobject[]AlwaysThe teams in this page.
teams[].idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

teams[].revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

teams[].company_idintegerAlwaysThe ID of the workspace that owns the team.

Minimum: 1.

teams[].namestringAlwaysThe display name of the team.
teams[].slugstringAlwaysThe permanent key used to identify the team.
teams[].descriptionstringOptionalThe workspace description of the team.
teams[].parent_team_idintegerOptionalThe positive ID of the parent team. This field is absent for a root team.

Minimum: 1.

teams[].member_countintegerOptionalThe number of active workspace members in the team.

Minimum: 0.

teams[].created_atstring (RFC 3339)AlwaysThe team creation time.
teams[].updated_atstring (RFC 3339)AlwaysThe time of the latest team change.
teams[].archived_atstring (RFC 3339)OptionalThe team archive time. This field is absent for an active team.
paginationobjectAlwaysPagination details for a collection response.
pagination.limitintegerAlwaysThe maximum number of items requested for this page.

Minimum: 1. · Maximum: 100.

pagination.has_morebooleanAlwaysIndicates whether another page is available.
pagination.next_cursorstringOptionalThe opaque cursor for the next page. This field is absent on the final page.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

POST/api/v1/teamsCreate team

#

Creates a team. If slug is omitted, the API creates it from name. A parent team must be active. If any team already uses the slug, the API returns 409. This includes archived teams.

Operation ID
createTeam
Retry guidance
Retry an identical request with the same Idempotency-Key used on the first attempt, within 24 hours. Never retry an unknown outcome automatically. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

For <idempotency-key>, choose a unique key on the first attempt. Reuse it only when retrying the identical request.

bash
curl --request POST \
  --url 'https://{company}.api.tellagen.com/api/v1/teams' \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Platform Team",
  "description": "Core platform infrastructure"
}'

Success: 201

Returns the created team.

Success response JSON
json
{
  "team": {
    "id": 42,
    "revision": 1,
    "company_id": 7,
    "name": "Platform Team",
    "slug": "platform_team",
    "description": "Core platform infrastructure",
    "created_at": "2025-01-30T12:00:00Z",
    "updated_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Request headers

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request headers
FieldTypeRequiredDescription
Idempotency-KeystringNoA key for safe retries of a create request. It must contain 1–128 visible, non-space ASCII characters. The same key applies only to an identical request.

Minimum length: 1 characters. · Maximum length: 128 characters. · Pattern: ^[\x21-\x7E]+$.

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
namestringYesThe team name. The length must be from 1 through 128 characters.

Minimum length: 1 characters. · Maximum length: 128 characters.

slugstringNoA permanent team key. It starts with a lowercase letter and contains lowercase letters, digits, or underscores. If slug is omitted, the API creates it from name.
descriptionstringNoThe workspace description of the team.
parent_team_idintegerNoThe positive ID of an active parent team. If the request omits parent_team_id, the API creates a root team.

Minimum: 1.

Response 201

Returns the created team.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
teamobjectAlwaysThe complete public record for a team.
team.idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

team.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

team.company_idintegerAlwaysThe ID of the workspace that owns the team.

Minimum: 1.

team.namestringAlwaysThe display name of the team.
team.slugstringAlwaysThe permanent key used to identify the team.
team.descriptionstringOptionalThe workspace description of the team.
team.parent_team_idintegerOptionalThe positive ID of the parent team. This field is absent for a root team.

Minimum: 1.

team.member_countintegerOptionalThe number of active workspace members in the team.

Minimum: 0.

team.created_atstring (RFC 3339)AlwaysThe team creation time.
team.updated_atstring (RFC 3339)AlwaysThe time of the latest team change.
team.archived_atstring (RFC 3339)OptionalThe team archive time. This field is absent for an active team.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

GET/api/v1/teams/{id}Get team

#

Returns one team by its positive numeric ID. A team remains available by ID after it is archived.

Operation ID
getTeam
Prerequisites
None
Retry guidance
This operation is repeat-safe. Respect Retry-After and use bounded retries. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request GET \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns the team.

Success response JSON
json
{
  "team": {
    "id": 42,
    "revision": 2,
    "company_id": 7,
    "name": "Platform Team",
    "slug": "platform_team",
    "description": "Core platform infrastructure",
    "created_at": "2025-01-10T09:00:00Z",
    "updated_at": "2025-01-10T09:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

Response 200

Returns the team.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
teamobjectAlwaysThe complete public record for a team.
team.idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

team.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

team.company_idintegerAlwaysThe ID of the workspace that owns the team.

Minimum: 1.

team.namestringAlwaysThe display name of the team.
team.slugstringAlwaysThe permanent key used to identify the team.
team.descriptionstringOptionalThe workspace description of the team.
team.parent_team_idintegerOptionalThe positive ID of the parent team. This field is absent for a root team.

Minimum: 1.

team.member_countintegerOptionalThe number of active workspace members in the team.

Minimum: 0.

team.created_atstring (RFC 3339)AlwaysThe team creation time.
team.updated_atstring (RFC 3339)AlwaysThe time of the latest team change.
team.archived_atstring (RFC 3339)OptionalThe team archive time. This field is absent for an active team.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

PATCH/api/v1/teams/{id}Update team

#

Updates an active team. If the request supplies a parent team, that team must be active. The update must not create a hierarchy cycle. Omitted fields stay unchanged.

Operation ID
updateTeam
Retry guidance
Read the current resource and reconcile changes before retrying with its current version. A stale version returns 412. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

Use the Tellagen-Resource-Version header from a GET of this resource for <resource-version>.

bash
curl --request PATCH \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}' \
  --header 'Authorization: Bearer <token>' \
  --header 'If-Tellagen-Resource-Version: <resource-version>' \
  --header 'Content-Type: application/json' \
  --data '{
  "description": "Core platform and infrastructure"
}'

Success: 200

Returns the updated team.

Success response JSON
json
{
  "team": {
    "id": 42,
    "revision": 3,
    "company_id": 7,
    "name": "Platform Team",
    "slug": "platform_team",
    "description": "Core platform and infrastructure",
    "created_at": "2025-01-10T09:00:00Z",
    "updated_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

Request headers

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request headers
FieldTypeRequiredDescription
If-Tellagen-Resource-VersionintegerYesThe current positive resource version from the latest response. API-key PATCH requests must send this value.

Minimum: 1.

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
namestringNoThe team name. The length must be from 1 through 128 characters.

Minimum length: 1 characters. · Maximum length: 128 characters.

descriptionstringNoThe replacement team description.
parent_team_idinteger | nullNoThe positive ID of an active parent team. A null value makes this team a root team.

Response 200

Returns the updated team.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
teamobjectAlwaysThe complete public record for a team.
team.idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

team.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

team.company_idintegerAlwaysThe ID of the workspace that owns the team.

Minimum: 1.

team.namestringAlwaysThe display name of the team.
team.slugstringAlwaysThe permanent key used to identify the team.
team.descriptionstringOptionalThe workspace description of the team.
team.parent_team_idintegerOptionalThe positive ID of the parent team. This field is absent for a root team.

Minimum: 1.

team.member_countintegerOptionalThe number of active workspace members in the team.

Minimum: 0.

team.created_atstring (RFC 3339)AlwaysThe team creation time.
team.updated_atstring (RFC 3339)AlwaysThe time of the latest team change.
team.archived_atstring (RFC 3339)OptionalThe team archive time. This field is absent for an active team.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (9)

Error responses (9)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
412
The resource changed after the client obtained its If-Tellagen-Resource-Version value.
428
An API-key PATCH request did not include the required If-Tellagen-Resource-Version header.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

DELETE/api/v1/teams/{id}Archive team

#

Archives a team. A repeated request returns 204 without changing the archive time or resource version. The API retains memberships and child-team relationships. The archived team remains available by ID. It cannot be updated.

Operation ID
archiveTeam
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request DELETE \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}' \
  --header 'Authorization: Bearer <token>'

Success: 204

No response body. Do not try to parse this response as JSON.

Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

Returns 204 with no body.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

POST/api/v1/teams/{id}/restoreRestore team

#

Restores an archived team and returns the active team. A repeated request returns the active team without changing its resource version. If the team has parent_team_id, that parent team must be active. Otherwise, the API returns 409 invalid_relationship_state. The API retains team memberships.

Operation ID
restoreTeam
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request POST \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}/restore' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns the complete active team.

Success response JSON
json
{
  "team": {
    "id": 42,
    "revision": 3,
    "company_id": 7,
    "name": "Platform Team",
    "slug": "platform_team",
    "description": "Core platform and infrastructure",
    "created_at": "2025-01-10T09:00:00Z",
    "updated_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

Response 200

Returns the complete active team.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
teamobjectAlwaysThe complete public record for a team.
team.idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

team.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

team.company_idintegerAlwaysThe ID of the workspace that owns the team.

Minimum: 1.

team.namestringAlwaysThe display name of the team.
team.slugstringAlwaysThe permanent key used to identify the team.
team.descriptionstringOptionalThe workspace description of the team.
team.parent_team_idintegerOptionalThe positive ID of the parent team. This field is absent for a root team.

Minimum: 1.

team.member_countintegerOptionalThe number of active workspace members in the team.

Minimum: 0.

team.created_atstring (RFC 3339)AlwaysThe team creation time.
team.updated_atstring (RFC 3339)AlwaysThe time of the latest team change.
team.archived_atstring (RFC 3339)OptionalThe team archive time. This field is absent for an active team.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

GET/api/v1/teams/{id}/membersList team members

#

Returns one page sorted by membership creation time and user ID. Each entry includes membership and user details.

Operation ID
listTeamMembers
Prerequisites
None
Retry guidance
This operation is repeat-safe. Respect Retry-After and use bounded retries. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request GET \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}/members' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns team members and pagination fields.

Success response JSON
json
{
  "members": [
    {
      "team_id": 42,
      "user_id": 100,
      "role": "lead",
      "email": "[email protected]",
      "display_name": "Jane Doe",
      "avatar_url": ""
    }
  ],
  "pagination": {
    "limit": 50,
    "has_more": false
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

Query parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Query parameters
FieldTypeRequiredDescription
limitintegerNoThe maximum number of items in one page. The default is 50, and the maximum is 100.

Minimum: 1. · Maximum: 100. · Default: 50.

cursorstringNoThe next_cursor value from the previous page. Clients treat this value as opaque and do not create, inspect, or change it.

Minimum length: 1 characters. · Maximum length: 4096 characters.

Response 200

Returns team members and pagination fields.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
membersobject[]AlwaysThe team memberships in this page.
members[].team_idintegerAlwaysThe positive numeric ID of the team.
members[].user_idintegerAlwaysThe positive numeric ID of the workspace member.
members[].rolestringAlwaysThe role in this team.
Possible values: "lead""member"
members[].emailstringAlwaysThe email address of the workspace member.
members[].display_namestringOptionalThe display name of the workspace member.
members[].avatar_urlstringOptionalThe avatar URL of the workspace member.
paginationobjectAlwaysPagination details for a collection response.
pagination.limitintegerAlwaysThe maximum number of items requested for this page.

Minimum: 1. · Maximum: 100.

pagination.has_morebooleanAlwaysIndicates whether another page is available.
pagination.next_cursorstringOptionalThe opaque cursor for the next page. This field is absent on the final page.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

POST/api/v1/teams/{id}/membersAdd team member

#

Adds an active workspace member to an active team. If the team membership already exists, the API updates its role.

Operation ID
addTeamMember
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request POST \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}/members' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "user_id": 100,
  "role": "lead"
}'

Success: 201

Returns the created or updated team membership.

Success response JSON
json
{
  "member": {
    "team_id": 42,
    "user_id": 100,
    "role": "lead",
    "created_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
user_idintegerYesThe positive ID of the active workspace member to add.

Minimum: 1.

rolestringNoThe role in this team. If the request omits role, the API uses member.

Default: "member".

Allowed values: "lead""member"

Response 201

Returns the created or updated team membership.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
memberobjectAlwaysThe team membership returned after a create or update request.
member.team_idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

member.user_idintegerAlwaysThe positive numeric ID of the workspace member.

Minimum: 1.

member.rolestringAlwaysThe role in this team.
Possible values: "lead""member"
member.created_atstring (RFC 3339)AlwaysThe membership creation time.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

PATCH/api/v1/teams/{id}/members/{userId}Update team member

#

Updates the team role for an active workspace member. If the team membership does not exist, the API returns 404.

Operation ID
updateTeamMember
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request PATCH \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}/members/{userId}' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "role": "member"
}'

Success: 200

Returns the updated team membership.

Success response JSON
json
{
  "member": {
    "team_id": 42,
    "user_id": 100,
    "role": "member",
    "created_at": "2025-01-10T09:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

userIdintegerYesA positive numeric user ID for an active workspace member.

Minimum: 1.

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
rolestringYesThe new team role.
Allowed values: "lead""member"

Response 200

Returns the updated team membership.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
memberobjectAlwaysThe team membership returned after a create or update request.
member.team_idintegerAlwaysThe positive numeric ID of the team.

Minimum: 1.

member.user_idintegerAlwaysThe positive numeric ID of the workspace member.

Minimum: 1.

member.rolestringAlwaysThe role in this team.
Possible values: "lead""member"
member.created_atstring (RFC 3339)AlwaysThe membership creation time.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

DELETE/api/v1/teams/{id}/members/{userId}Remove team member

#

Removes one user from the team. The operation does not remove the user from the workspace.

Operation ID
removeTeamMember
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request DELETE \
  --url 'https://{company}.api.tellagen.com/api/v1/teams/{id}/members/{userId}' \
  --header 'Authorization: Bearer <token>'

Success: 204

No response body. Do not try to parse this response as JSON.

Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric team ID returned by this API.

Minimum: 1.

userIdintegerYesA positive numeric user ID for an active workspace member.

Minimum: 1.

Returns 204 with no body.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

Read this resource as Markdown · OpenAPI contract