You can use the API to get or set skill information.
Skills are represented as JSON objects with the following properties:
| description | string | false | false | The description of the skill | 
| enabled | integer | false | false | Describes whether the skill is enabled | 
| id | integer | true | false | The ID of the skill | 
| members | array | false | false | The member agent IDs for the account | 
| name | string | false | false | The name of the skill | 
 
Example
{  "description": "English language",  "enabled": 1,  "id": 1,  "members": [    1,    2,    3  ],  "name": "english"}
List Skills
Lists all the skills for your account.
Allowed for
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills \  -v -H "Authorization: Bearer {token}"
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills"	method := "GET"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("GET", null)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'GET',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills"headers = {	"Content-Type": "application/json",}
response = requests.request(	"GET",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  200 OK
[  {    "description": "English language",    "enabled": 1,    "id": 1,    "members": [      1,      2,      3    ],    "name": "english"  },  {    "description": "Spanish language",    "enabled": 0,    "id": 2,    "members": [      4,      5,      6    ],    "name": "spanish"  }]
 
Show Skill
GET /api/v2/chat/skills/{skill_id} 
Allowed for
Parameters
| skill_id | integer | Path | true | The ID of the skill | 
 
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills/(skill_id) \  -v -H "Authorization: Bearer {token}"
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills/1"	method := "GET"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills/1")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("GET", null)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'GET',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills/1',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills/1"headers = {	"Content-Type": "application/json",}
response = requests.request(	"GET",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills/1")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  200 OK
{  "description": "English language",  "enabled": 1,  "id": 1,  "members": [    1,    2,    3  ],  "name": "english"}
 
Show Skill by Name
GET /api/v2/chat/skills/name/{skill_name} 
Allowed for
Parameters
| skill_name | string | Path | true | The name of the skill | 
 
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills/name/{name} \  -v -H "Authorization: Bearer {token}"
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese"	method := "GET"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("GET", null)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'GET',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese"headers = {	"Content-Type": "application/json",}
response = requests.request(	"GET",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  200 OK
{  "description": "English language",  "enabled": 1,  "id": 1,  "members": [    1,    2,    3  ],  "name": "english"}
 
Create Skill
Allowed for
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills \  -d '{        "name" : "mandarin",        "description" : "Chinese language",        "enabled" : 1,        "members" : [1, 2, 3]      }' \  -v -H "Authorization: Bearer {token}" \  -H "Content-Type: application/json" -X POST
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills"	method := "POST"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills")		.newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),		"""""");
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("POST", body)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'POST',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills"headers = {	"Content-Type": "application/json",}
response = requests.request(	"POST",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  201 Created
{  "description": "Chinese language",  "enabled": 1,  "id": 4,  "members": [    1,    2,    3  ],  "name": "mandarin"}
 
Update Skill
PUT /api/v2/chat/skills/{skill_id} 
Allowed for
Parameters
| skill_id | integer | Path | true | The ID of the skill | 
 
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills/{skill_id} \  -d '{"name": "cantonese"}' \  -v -H "Authorization: Bearer {token}"  -H "Content-Type: application/json" -X PUT
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills/1"	method := "PUT"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills/1")		.newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),		"""""");
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("PUT", body)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'PUT',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills/1',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills/1"headers = {	"Content-Type": "application/json",}
response = requests.request(	"PUT",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills/1")request = Net::HTTP::Put.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  200 OK
{  "description": "Chinese language",  "enabled": 1,  "id": 4,  "members": [    1,    2,    3  ],  "name": "cantonese"}
 
Update Skill by Name
PUT /api/v2/chat/skills/name/{skill_name} 
Allowed for
Parameters
| skill_name | string | Path | true | The name of the skill | 
 
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills/name/{name} \  -d '{"name": "cantonese"}' \  -v -H "Authorization: Bearer {token}" \  -H "Content-Type: application/json" -X PUT
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese"	method := "PUT"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese")		.newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),		"""""");
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("PUT", body)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'PUT',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese"headers = {	"Content-Type": "application/json",}
response = requests.request(	"PUT",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese")request = Net::HTTP::Put.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  200 OK
{  "description": "Chinese language",  "enabled": 1,  "id": 4,  "members": [    1,    2,    3  ],  "name": "cantonese"}
 
Delete Skill
DELETE /api/v2/chat/skills/{skill_id} 
Allowed for
Parameters
| skill_id | integer | Path | true | The ID of the skill | 
 
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills/{skill_id} \  -v -H "Authorization: Bearer {token}" -X DELETE
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills/1"	method := "DELETE"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills/1")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("DELETE", null)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'DELETE',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills/1',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills/1"headers = {	"Content-Type": "application/json",}
response = requests.request(	"DELETE",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills/1")request = Net::HTTP::Delete.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  204 No Content
 
Delete Skill by Name
DELETE /api/v2/chat/skills/name/{skill_name} 
Allowed for
Parameters
| skill_name | string | Path | true | The name of the skill | 
 
Code Samples
  curl
curl https://{subdomain}.zendesk.com/api/v2/chat/skills/name/{name} \  -v -H "Authorization: Bearer {token}" -X DELETE
 
  Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese"	method := "DELETE"	req, err := http.NewRequest(method, url, nil)
	if err != nil {		fmt.Println(err)		return	}	req.Header.Add("Content-Type", "application/json")
	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://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("DELETE", null)		.addHeader("Content-Type", "application/json")		.build();Response response = client.newCall(request).execute();
 
  Nodejs
var axios = require('axios');
var config = {  method: 'DELETE',  url: 'https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese',  headers: {	'Content-Type': 'application/json',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
 
  Python
import requests
url = "https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese"headers = {	"Content-Type": "application/json",}
response = requests.request(	"DELETE",	url,	headers=headers)
print(response.text)
 
  Ruby
require "net/http"uri = URI("https://subdomain.zendesk.com/api/v2/chat/skills/name/cantonese")request = Net::HTTP::Delete.new(uri, "Content-Type": "application/json")response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end
 
Example response(s)
  204 No Content