Teams
Manage teams in Zendesk Workforce Management (WFM).
Teams are organizational units in Zendesk Workforce Management (WFM) used to manage your roster and organization structure. You can create multiple teams and assign agents and managers to them. Managers of teams are responsible for receiving and responding to agents' time off and shift trade requests, along with any other requests that may arise. See Creating and managing teams in Zendesk WFM in Zendesk help.
Allowed for: WFM admins, users with organization structure permissions.
Available Operations
| Operation | Description |
|---|---|
| List Teams | Returns all teams in the account |
| Show Team | Returns a single team by ID |
| Create Team | Creates a new team |
| Update Team | Updates an existing team |
| Delete Team | Soft-deletes a team |
| Restore Team | Restores a soft-deleted team |
| Bulk Add Agents | Adds multiple agents to a team |
| Bulk Remove Agents | Removes multiple agents from a team |
Key Concepts
- Team: An organizational unit that groups agents together. Each team has a unique ID, name, and optional description. Teams are part of the organization structure in WFM.
- Manager: A user responsible for managing team members and their requests (time off, shift trades). Each team can have one manager assigned via
manager_id. - Agents: Team members who can be assigned to schedules and activities. Agents are assigned to teams via
agents_idsarray. - Soft Delete: Teams are soft-deleted by default, meaning they can be restored. Use
deleted_atandis_deletedfields to check status.
Important Notes
- Agents and managers can belong to multiple teams simultaneously.
- Bulk operations are logged for audit purposes.
Use Cases
- Create teams to organize your workforce by department, location, or function
- Assign managers to handle time off requests and shift trades
- Group agents for scheduling and reporting purposes
- Use bulk operations to efficiently manage agent assignments across teams
Filtering
deleted: Set to true to include soft-deleted teams in results
Related Articles
JSON format
Teams are represented as JSON objects with the following properties:
| Name | Type | Read-only | Mandatory | Description |
|---|---|---|---|---|
| agents_ids | array | false | true | List of agent IDs assigned to this team |
| deleted_at | string | false | true | Timestamp when the team was soft deleted, null if active |
| description | string | false | true | Description of the team |
| id | string | false | true | Unique identifier for the team |
| is_deleted | boolean | false | true | Flag indicating if the team is deleted |
| manager_id | integer | false | true | Agent ID of the team manager |
| name | string | false | true | Name of the team |
| tymeshift_account_id | integer | false | true | Tymeshift account ID the team belongs to |
List all teams
GET /v2/teams
Returns a list of all teams in the authenticated user's Workforce Management account. Teams are organizational units used to group agents and assign managers who handle time off requests, shift trades, and other team-related activities.
By default, only active teams are returned. Use the deleted query parameter to include soft-deleted teams.
Allowed for: WFM admins, users with organization structure permissions
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json"
Go
import ("fmt""io""net/http")func main() {url := "https://support.zendesk.com/v2/teams"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams").newBuilder();String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://support.zendesk.com/v2/teams',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": [{"agents_ids": [101,102,103],"deleted_at": null,"description": "Primary support team","id": "550e8400-e29b-41d4-a716-446655440000","is_deleted": false,"manager_id": 67890,"name": "Support Team Alpha","tymeshift_account_id": 12345}],"message": "ok","metadata": null,"success": true}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
Create a team
POST /v2/teams
Creates a new team in the Workforce Management system. Teams organize agents and assign managers responsible for handling time off requests, shift trades, and other team activities.
Agents and managers can belong to multiple teams. Managers are not automatically added as team members - they must also be included in the agents list if they should be part of the team roster.
Allowed for: WFM admins, users with organization structure permissions
Example body
{"agents_ids": [101,102],"description": "A new team for support","manager_id": 67890,"name": "New Support Team"}
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams \-d '{"name": "New Support Team", "manager_id": 67890, "agents_ids": [101, 102]}' \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json" \-X POST
Go
import ("fmt""io""net/http""strings")func main() {url := "https://support.zendesk.com/v2/teams"method := "POST"payload := strings.NewReader(`{"agents_ids": [101,102],"description": "A new team for support","manager_id": 67890,"name": "New Support Team"}`)req, err := http.NewRequest(method, url, payload)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams").newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),"""{\"agents_ids\": [101,102],\"description\": \"A new team for support\",\"manager_id\": 67890,\"name\": \"New Support Team\"}""");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("POST", body).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var data = JSON.stringify({"agents_ids": [101,102],"description": "A new team for support","manager_id": 67890,"name": "New Support Team"});var config = {method: 'POST',url: 'https://support.zendesk.com/v2/teams',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},data : data,};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsimport jsonfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams"payload = json.loads("""{"agents_ids": [101,102],"description": "A new team for support","manager_id": 67890,"name": "New Support Team"}""")headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("POST",url,auth=auth,headers=headers,json=payload)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")request.body = %q({"agents_ids": [101,102],"description": "A new team for support","manager_id": 67890,"name": "New Support Team"})email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": {"agents_ids": [101,102],"deleted_at": null,"description": "A new team for support","id": "550e8400-e29b-41d4-a716-446655440001","is_deleted": false,"manager_id": 67890,"name": "New Support Team","tymeshift_account_id": 12345},"message": "ok","metadata": null,"success": true}
400 Bad Request
// Status 400 Bad Request{"errors": [{"code": "InvalidInput","source": {"pointer": "/field"},"status": "400","title": "The field is invalid or missing."}]}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
Bulk add agents to teams
POST /v2/teams/bulk/add_agents
Adds multiple agents to one or more teams in a single bulk operation. This is more efficient than updating each team individually when you need to assign the same agents to multiple teams.
All assignments are logged for audit purposes. Agents can belong to multiple teams simultaneously.
Allowed for: WFM admins, users with organization structure permissions
Example body
{"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]}
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams/bulk/add_agents \-d '{"team_ids": ["550e8400-e29b-41d4-a716-446655440000"], "agent_ids": [101, 102]}' \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json" \-X POST
Go
import ("fmt""io""net/http""strings")func main() {url := "https://support.zendesk.com/v2/teams/bulk/add_agents"method := "POST"payload := strings.NewReader(`{"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]}`)req, err := http.NewRequest(method, url, payload)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams/bulk/add_agents").newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),"""{\"agent_ids\": [101,102],\"team_ids\": [\"550e8400-e29b-41d4-a716-446655440000\"]}""");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("POST", body).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var data = JSON.stringify({"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]});var config = {method: 'POST',url: 'https://support.zendesk.com/v2/teams/bulk/add_agents',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},data : data,};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsimport jsonfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams/bulk/add_agents"payload = json.loads("""{"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]}""")headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("POST",url,auth=auth,headers=headers,json=payload)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams/bulk/add_agents")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")request.body = %q({"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]})email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": [{"agent_id": 101,"status": "success","team_id": "550e8400-e29b-41d4-a716-446655440000"}],"message": "Agents bulk added.","metadata": null,"success": true}
400 Bad Request
// Status 400 Bad Request{"errors": [{"code": "InvalidInput","source": {"pointer": "/field"},"status": "400","title": "The field is invalid or missing."}]}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
500 Internal Server Error
// Status 500 Internal Server Error{"errors": [{"code": "InternalError","status": "500","title": "An unexpected error occurred."}]}
Bulk remove agents from teams
POST /v2/teams/bulk/remove_agents
Remove multiple agents from multiple teams in a single atomic request
Example body
{"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]}
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams/bulk/remove_agents \-d '{"team_ids": ["550e8400-e29b-41d4-a716-446655440000"], "agent_ids": [101, 102]}' \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json" \-X POST
Go
import ("fmt""io""net/http""strings")func main() {url := "https://support.zendesk.com/v2/teams/bulk/remove_agents"method := "POST"payload := strings.NewReader(`{"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]}`)req, err := http.NewRequest(method, url, payload)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams/bulk/remove_agents").newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),"""{\"agent_ids\": [101,102],\"team_ids\": [\"550e8400-e29b-41d4-a716-446655440000\"]}""");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("POST", body).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var data = JSON.stringify({"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]});var config = {method: 'POST',url: 'https://support.zendesk.com/v2/teams/bulk/remove_agents',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},data : data,};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsimport jsonfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams/bulk/remove_agents"payload = json.loads("""{"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]}""")headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("POST",url,auth=auth,headers=headers,json=payload)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams/bulk/remove_agents")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")request.body = %q({"agent_ids": [101,102],"team_ids": ["550e8400-e29b-41d4-a716-446655440000"]})email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": {"results": [{"agent_id": 101,"team_id": "550e8400-e29b-41d4-a716-446655440000"}]},"message": "Agents bulk removed.","metadata": null,"success": true}
400 Bad Request
// Status 400 Bad Request{"errors": [{"code": "InvalidInput","source": {"pointer": "/field"},"status": "400","title": "The field is invalid or missing."}]}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
500 Internal Server Error
// Status 500 Internal Server Error{"errors": [{"code": "InternalError","status": "500","title": "An unexpected error occurred."}]}
Restore a deleted team
POST /v2/teams/restore
Restores a previously soft-deleted team, making it active again. The team's original configuration including name, description, manager, and agent assignments are preserved.
You can find soft-deleted teams by using the List Teams endpoint with the deleted parameter.
Allowed for: WFM admins, users with organization structure permissions
Example body
{"id": "550e8400-e29b-41d4-a716-446655440000"}
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams/restore \-d '{"id": "550e8400-e29b-41d4-a716-446655440000"}' \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json" \-X POST
Go
import ("fmt""io""net/http""strings")func main() {url := "https://support.zendesk.com/v2/teams/restore"method := "POST"payload := strings.NewReader(`{"id": "550e8400-e29b-41d4-a716-446655440000"}`)req, err := http.NewRequest(method, url, payload)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams/restore").newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),"""{\"id\": \"550e8400-e29b-41d4-a716-446655440000\"}""");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("POST", body).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var data = JSON.stringify({"id": "550e8400-e29b-41d4-a716-446655440000"});var config = {method: 'POST',url: 'https://support.zendesk.com/v2/teams/restore',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},data : data,};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsimport jsonfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams/restore"payload = json.loads("""{"id": "550e8400-e29b-41d4-a716-446655440000"}""")headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("POST",url,auth=auth,headers=headers,json=payload)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams/restore")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")request.body = %q({"id": "550e8400-e29b-41d4-a716-446655440000"})email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": "success","message": "ok","metadata": null,"success": true}
400 Bad Request
// Status 400 Bad Request{"errors": [{"code": "InvalidInput","source": {"pointer": "/field"},"status": "400","title": "The field is invalid or missing."}]}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
404 Not Found
// Status 404 Not Found{"errors": [{"code": "ResourceNotFound","status": "404","title": "The requested resource could not be found."}]}
Show a team
GET /v2/teams/{id}
Returns details of a specific team including its name, description, manager, and assigned agents. This endpoint also returns soft-deleted teams, which can be identified by the is_deleted flag and deleted_at timestamp.
Allowed for: WFM admins, users with organization structure permissions
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| id | string | Path | true | Team UUID |
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams/{team_id} \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json"
Go
import ("fmt""io""net/http")func main() {url := "https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000").newBuilder();String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": {"agents_ids": [101,102,103],"deleted_at": null,"description": "Primary support team","id": "550e8400-e29b-41d4-a716-446655440000","is_deleted": false,"manager_id": 67890,"name": "Support Team Alpha","tymeshift_account_id": 12345},"message": "ok","metadata": null,"success": true}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
404 Not Found
// Status 404 Not Found{"errors": [{"code": "ResourceNotFound","status": "404","title": "The requested resource could not be found."}]}
Update a team
PUT /v2/teams/{id}
Updates the properties of an existing team. You can modify the team name, description, manager, and the list of assigned agents.
To add or remove agents from multiple teams at once, use the bulk add/remove agents endpoints instead.
Allowed for: WFM admins, users with organization structure permissions
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| id | string | Path | true | Team UUID |
Example body
{"agents_ids": [101,102,104],"description": "Updated description","manager_id": 67890,"name": "Updated Team Name"}
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams/{team_id} \-d '{"name": "Updated Team Name", "description": "Updated description"}' \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json" \-X PUT
Go
import ("fmt""io""net/http""strings")func main() {url := "https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000"method := "PUT"payload := strings.NewReader(`{"agents_ids": [101,102,104],"description": "Updated description","manager_id": 67890,"name": "Updated Team Name"}`)req, err := http.NewRequest(method, url, payload)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000").newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),"""{\"agents_ids\": [101,102,104],\"description\": \"Updated description\",\"manager_id\": 67890,\"name\": \"Updated Team Name\"}""");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("PUT", body).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var data = JSON.stringify({"agents_ids": [101,102,104],"description": "Updated description","manager_id": 67890,"name": "Updated Team Name"});var config = {method: 'PUT',url: 'https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},data : data,};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsimport jsonfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000"payload = json.loads("""{"agents_ids": [101,102,104],"description": "Updated description","manager_id": 67890,"name": "Updated Team Name"}""")headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("PUT",url,auth=auth,headers=headers,json=payload)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000")request = Net::HTTP::Put.new(uri, "Content-Type": "application/json")request.body = %q({"agents_ids": [101,102,104],"description": "Updated description","manager_id": 67890,"name": "Updated Team Name"})email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": {"agents_ids": [101,102,104],"deleted_at": null,"description": "Updated description","id": "550e8400-e29b-41d4-a716-446655440000","is_deleted": false,"manager_id": 67890,"name": "Updated Team Name","tymeshift_account_id": 12345},"message": "ok","metadata": null,"success": true}
400 Bad Request
// Status 400 Bad Request{"errors": [{"code": "InvalidInput","source": {"pointer": "/field"},"status": "400","title": "The field is invalid or missing."}]}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
404 Not Found
// Status 404 Not Found{"errors": [{"code": "ResourceNotFound","status": "404","title": "The requested resource could not be found."}]}
Delete a team
DELETE /v2/teams/{id}
Soft deletes a team by marking it as deleted without permanently removing it from the system. Soft-deleted teams can be restored using the restore endpoint.
Deleting a team does not remove the agents from the system - they remain available for assignment to other teams.
Allowed for: WFM admins, users with organization structure permissions
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| id | string | Path | true | Team UUID |
Code Samples
curl
curl https://{$subdomain}.zendesk.com/wfm/l5/api/v2/teams/{team_id} \-v -u {email_address}/token:{api_token} \-H "Content-Type: application/json" \-X DELETE
Go
import ("fmt""io""net/http")func main() {url := "https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000"method := "DELETE"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000").newBuilder();String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("DELETE", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'DELETE',url: 'https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("DELETE",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/v2/teams/550e8400-e29b-41d4-a716-446655440000")request = Net::HTTP::Delete.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": "success","message": "ok","metadata": null,"success": true}
400 Bad Request
// Status 400 Bad Request{"errors": [{"code": "InvalidInput","source": {"pointer": "/field"},"status": "400","title": "The field is invalid or missing."}]}
401 Unauthorized
// Status 401 Unauthorized{"errors": [{"code": "Unauthorized","status": "401","title": "Authentication credentials are invalid or missing."}]}
403 Forbidden
// Status 403 Forbidden{"errors": [{"code": "Forbidden","status": "403","title": "You do not have permission to access this resource."}]}
404 Not Found
// Status 404 Not Found{"errors": [{"code": "ResourceNotFound","status": "404","title": "The requested resource could not be found."}]}