Articles are content items such as help topics or tech notes contained in sections. See Creating and editing articles in the knowledge base in Zendesk help.

Guide admins can create articles and edit all existing articles in the knowledge base. Agents who are not Guide admins can create and edit articles if they have management permissions. End users can neither create nor edit articles. See Understanding Guide roles and privileges.

The Articles API has certain limitations if content blocks have been enabled for one or more articles in the help center. See Help Center API limitations with content blocks.

JSON format

Articles are represented as JSON objects with the following properties:

Name Type Read-only Mandatory Description
author_id integer false false The id of the user who wrote the article (set to the user who made the request on create by default)
body string false false HTML body of the article. Unsafe tags and attributes may be removed before display. For a list of safe tags and attributes, see Allowing unsafe HTML in Help Center articles in Zendesk help
comments_disabled boolean false false True if comments are disabled; false otherwise
content_tag_ids array false false The list of content tags attached to the article
created_at string true false The time the article was created
draft boolean true false True if the translation for the current locale is a draft; false otherwise. false by default. Can be set when creating but not when updating. For updating, see Translations
edited_at string true false The time the article was last edited in its displayed locale
html_url string true false The url of the article in Help Center
id integer true false Automatically assigned when the article is created
label_names array false false An array of label names associated with this article. By default no label names are used. Only available on certain plans
locale string false true The locale that the article is being displayed in
outdated boolean true false Deprecated. Always false because the source translation is always the most up-to-date translation
outdated_locales array true false Locales in which the article was marked as outdated
permission_group_id integer false true The id of the permission group which defines who can edit and publish this article
position integer false false The position of this article in the article list. 0 by default
promoted boolean false false True if this article is promoted; false otherwise. false by default
section_id integer false false The id of the section to which this article belongs
source_locale string true false The source (default) locale of the article
title string false true The title of the article
updated_at string true false The time the article was last updated
url string true false The API url of the article
user_segment_id integer false true The id of the user segment which defines who can see this article. Set to null to make it accessible to everyone
vote_count integer true false The total number of upvotes and downvotes
vote_sum integer true false The sum of upvotes (+1) and downvotes (-1), which may be positive or negative

Example

{  "author_id": 3465,  "comments_disabled": false,  "id": 1635,  "locale": "en",  "permission_group_id": 13,  "title": "The article",  "user_segment_id": 12}

List Articles

  • GET /api/v2/help_center/{locale}/articles
  • GET /api/v2/help_center/articles
  • GET /api/v2/help_center/{locale}/categories/{category_id}/articles
  • GET /api/v2/help_center/categories/{category_id}/articles
  • GET /api/v2/help_center/{locale}/sections/{section_id}/articles
  • GET /api/v2/help_center/sections/{section_id}/articles
  • GET /api/v2/help_center/users/{user_id}/articles
  • GET /api/v2/help_center/incremental/articles?start_time={start_time}

These endpoints let you list all articles in Help Center, all articles in a given category or section, or all the articles authored by a specific agent. You can also list all articles with metadata that changed since a specified start time.

To list articles by content changes, not metadata changes, filter the articles by the updated_at timestamp of the articles' translations.

{/locale} is required only for end users or anonymous users. Admins and agents can omit it.

You can also use the Search API to list articles. See Search.

Allowed for

  • Agents
  • End users
  • Anonymous users

The response lists only the articles that the requesting agent, end user, or anonymous user can view in Help Center.

Pagination

  • Cursor pagination (recommended)
  • Offset pagination

See Pagination.

Sorting

You can sort the results with the sort_by and sort_order query string parameters.

GET /api/v2/help_center/en-us/articles.json?sort_by=updated_at&sort_order=asc

The sort_by parameter can have one of the following values:

value description
position order set manually using the Arrange Content page. Default order
title order alphabetically by title
created_at order by creation time
updated_at order by update time
edited_at order by the last time the title or body was edited

When sorting by title, the endpoint must specify a locale for the titles. Example:

/api/v2/help_center/en-us/articles.json?sort_by=title

Sorting by edited_at also requires a locale. The value specifies the locale in which the title or body was last changed.

The sort_order parameter can have one of the following values:

value description
asc ascending order
desc descending order

Note that if sorting parameters are not passed to the section-scoped articles endpoint (/api/v2/help_center/{locale}/sections/{section_id}/articles.json), articles will be returned in the order defined on the section itself. See Organizing knowledge base content in categories and sections for more information about defining sort orders on sections.

Options

Start Time

You can use the incremental article endpoint to list all the articles that were updated since a certain date and time. The endpoint takes a start_time parameter with a Unix epoch time. Example:

/api/v2/help_center/incremental/articles.json?start_time=1404345231
Label Names

You can specify that only articles with specific labels should be returned by adding a label_names parameter. The parameter takes a comma-separated list of up to 10 label names. Example:

/api/v2/help_center/en-us/articles.json?label_names=photos,camera

Only articles that have all the labels are returned. For example, label_names=photos,camera returns all articles that have both 'photo' AND 'camera' labels. If you want the articles that have either 'photo' OR 'camera' labels, you can use the Search Article endpoint with the label_names parameter (Professional and Enterprise).

Matching is case-sensitive. For example, 'camera' matches 'camera' but not 'Camera'.

Sideloads

The following sideloads are supported:

Name Will sideload
users the author
sections the section
categories the category
translations the article, section and category translations, if any

Unlike other sideloads, translations are embedded within the article because they're not shared between resources. Section and category translations are only sideloaded if present.

Parameters

Name Type In Required Description
label_names string Query false Only articles that have all the labels are returned.
sort_by string Query false Sorts the articles by one of the accepted values. Allowed values are "position", "title", "created_at", or "updated_at".
sort_order string Query false Selects the order of the results. Allowed values are "asc", or "desc".
start_time integer Query false You can use the incremental article endpoint to list all the articles that were updated since a certain date and time.
locale string Path true The locale the item is displayed in

Code Samples

curl
curl https://{subdomain}.zendesk.com/api/v2/help_center/{locale}/articles.json \  -v -u {email_address}:{password}
Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/articles?label_names=photos%2Ccamera&sort_by=&sort_order=&start_time=1404345231"	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 "username:password"
	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/api/v2/help_center/en-us/articles")		.newBuilder()		.addQueryParameter("label_names", "photos,camera")		.addQueryParameter("sort_by", "")		.addQueryParameter("sort_order", "")		.addQueryParameter("start_time", "1404345231");
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("GET", null)		.addHeader("Content-Type", "application/json")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');
var config = {  method: 'GET',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/articles',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },  params: {    'label_names': 'photos%2Ccamera',    'sort_by': '',    'sort_order': '',    'start_time': '1404345231',  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requests
url = "https://support.zendesk.com/api/v2/help_center/en-us/articles?label_names=photos%2Ccamera&sort_by=&sort_order=&start_time=1404345231"headers = {	"Content-Type": "application/json",}
response = requests.request(	"GET",	url,	auth=('<username>', '<password>'),	headers=headers)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/articles")uri.query = URI.encode_www_form("label_names": "photos,camera", "sort_by": "", "sort_order": "", "start_time": "1404345231")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")request.basic_auth "username", "password"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
{  "articles": [    {      "author_id": 888887,      "draft": true,      "id": 35467,      "locale": "en",      "permission_group_id": 123,      "title": "Article title",      "user_segment_id": 12    }  ]}

Show Article

  • GET /api/v2/help_center/{locale}/articles/{article_id}
  • GET /api/v2/help_center/articles/{article_id}

Shows the properties of an article.

Note: {/locale} is an optional parameter for admins and agents. End users and anonymous users must provide the parameter.

Allowed for

  • Agents
  • End users
  • Anonymous users

Sideloads

The following sideloads are supported:

Name Will sideload
users the author
sections the section
categories the category
translations the article, section and category translations, if any

Unlike other sideloads, translations are embedded within the article because they're not shared between resources. Section and category translations are only sideloaded if present.

Parameters

Name Type In Required Description
article_id integer Path true The unique ID of the article
locale string Path true The locale the item is displayed in

Code Samples

curl
curl https://{subdomain}.zendesk.com/api/v2/help_center/{locale}/articles/{article_id}.json \-v -u {email_address}:{password}
Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753"	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 "username:password"
	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/api/v2/help_center/en-us/articles/360026053753")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("GET", null)		.addHeader("Content-Type", "application/json")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');
var config = {  method: 'GET',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requests
url = "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753"headers = {	"Content-Type": "application/json",}
response = requests.request(	"GET",	url,	auth=('<username>', '<password>'),	headers=headers)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")request.basic_auth "username", "password"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
{  "article": {    "author_id": 3465,    "comments_disabled": true,    "content_tag_ids": [      "01GT23D51Y",      "01GT23FWWN"    ],    "id": 37486578,    "locale": "en_us",    "permission_group_id": 123,    "position": 42,    "promoted": false,    "title": "Article title",    "user_segment_id": 12  }}

Create Article

  • POST /api/v2/help_center/{locale}/sections/{section_id}/articles
  • POST /api/v2/help_center/sections/{section_id}/articles

Creates an article in the specified section. You must specify an article title, user_segment_id, and permission_group_id. A locale must be specified for the article, either as a parameter in the API request or in the URL. The specified locales must be enabled for the current Help Center. Optionally, you can attach existing content tags by their ids or specify multiple translations.

The current user is automatically subscribed to the article and will receive notifications when it changes.

The current user must be a member of the specified permission_group_id. To create a published article (draft=false or missing), the current user must have publishing rights as part of the permission_group_id that is provided. Otherwise, the article must be created using draft=true.

Supplying a notify_subscribers property with a value of false will prevent subscribers to the article from receiving an article creation email notification. This can be helpful when creating many articles at a time. Specify the property in the root of the JSON object, not in the "article" object.

Allowed for

  • Agents

Parameters

Name Type In Required Description
locale string Path true The locale the item is displayed in
section_id integer Path true The unique ID of the section

Example body

{  "article": {    "body": "Use a tripod",    "locale": "en-us",    "permission_group_id": 56,    "title": "Taking photos in low light",    "user_segment_id": 123  },  "notify_subscribers": false}

Code Samples

curl

For clarity, the example places the JSON payload in a separate file and the cURL statement imports the file.

article.json

{  "article": {    "title": "Taking photos in low light",    "body": "Use a tripod",    "locale": "en-us",    "user_segment_id": 123,    "permission_group_id": 56  },  "notify_subscribers": false}
With translations
{  "article": {    "translations": [      {        "locale": "en-us",        "title": "Taking photos in low light",        "body": "Use a tripod"      },      {        "locale": "fr",        "title": "Comment prendre des photos en basse lumiere",        "body": "Utilisez un trepied"      }    ],    "user_segment_id": 123,    "permission_group_id": 56  },  "notify_subscribers": false}
With content tags attached
{  "article": {    "title": "Taking photos in low light",    "body": "Use a tripod",    "content_tag_ids": ["01GT23D51Y", "01GT23FWWN"],    "locale": "en-us",    "user_segment_id": 123,    "permission_group_id": 56  },  "notify_subscribers": false}

curl snippet

curl https://{subdomain}.zendesk.com/api/v2/help_center/sections/{section_id}/articles.json \  -d @article.json \  -H "Content-Type: application/json" -X POST \  -v -u {email_address}:{password}
Go
import (	"fmt"	"io"	"net/http"	"strings")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/sections/360004785313/articles"	method := "POST"	payload := strings.NewReader(`{  "article": {    "body": "Use a tripod",    "locale": "en-us",    "permission_group_id": 56,    "title": "Taking photos in low light",    "user_segment_id": 123  },  "notify_subscribers": false}`)	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 "username:password"
	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/api/v2/help_center/en-us/sections/360004785313/articles")		.newBuilder();RequestBody body = RequestBody.create(MediaType.parse("application/json"),		"""{  \"article\": {    \"body\": \"Use a tripod\",    \"locale\": \"en-us\",    \"permission_group_id\": 56,    \"title\": \"Taking photos in low light\",    \"user_segment_id\": 123  },  \"notify_subscribers\": false}""");
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("POST", body)		.addHeader("Content-Type", "application/json")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var data = JSON.stringify({  "article": {    "body": "Use a tripod",    "locale": "en-us",    "permission_group_id": 56,    "title": "Taking photos in low light",    "user_segment_id": 123  },  "notify_subscribers": false});
var config = {  method: 'POST',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/sections/360004785313/articles',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },  data : data,};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requestsimport json
url = "https://support.zendesk.com/api/v2/help_center/en-us/sections/360004785313/articles"
payload = json.loads("""{  "article": {    "body": "Use a tripod",    "locale": "en-us",    "permission_group_id": 56,    "title": "Taking photos in low light",    "user_segment_id": 123  },  "notify_subscribers": false}""")headers = {	"Content-Type": "application/json",}
response = requests.request(	"POST",	url,	auth=('<username>', '<password>'),	headers=headers,	json=payload)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/sections/360004785313/articles")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")request.body = %q({  "article": {    "body": "Use a tripod",    "locale": "en-us",    "permission_group_id": 56,    "title": "Taking photos in low light",    "user_segment_id": 123  },  "notify_subscribers": false})request.basic_auth "username", "password"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end

Example response(s)

201 Created
// Status 201 Created
{  "article": {    "author_id": 3465,    "comments_disabled": true,    "content_tag_ids": [      "01GT23D51Y",      "01GT23FWWN"    ],    "id": 37486578,    "locale": "en_us",    "permission_group_id": 123,    "position": 42,    "promoted": false,    "title": "Article title",    "user_segment_id": 12  }}

Update Article

  • PUT /api/v2/help_center/{locale}/articles/{article_id}
  • PUT /api/v2/help_center/articles/{article_id}.json

These endpoints update article-level metadata such as its promotion status or sorting position. The endpoints do not update translation properties such as the article's title, body, locale, or draft. See Translations.

Allowed for

  • Agents

Parameters

Name Type In Required Description
article_id integer Path true The unique ID of the article
locale string Path true The locale the item is displayed in

Code Samples

curl

For clarity, the example places the JSON payload in a separate file and the cURL statement imports the file.

article.json

{  "article": {    "promoted": false,    "position": 42,    "comments_disabled": true,    "label_names": ["photo", "tripod"],    "content_tag_ids": ["01GT23D51Y", "01GT23FWWN"]  }}

curl snippet

curl https://{subdomain}.zendesk.com/api/v2/help_center/articles/{article_id}.json \  -d @article.json \  -H "Content-Type: application/json" -X PUT \  -v -u {email_address}:{password}
Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753"	method := "PUT"	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 "username:password"
	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/api/v2/help_center/en-us/articles/360026053753")		.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")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');
var config = {  method: 'PUT',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requests
url = "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753"headers = {	"Content-Type": "application/json",}
response = requests.request(	"PUT",	url,	auth=('<username>', '<password>'),	headers=headers)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753")request = Net::HTTP::Put.new(uri, "Content-Type": "application/json")request.basic_auth "username", "password"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
{  "article": {    "author_id": 3465,    "comments_disabled": true,    "content_tag_ids": [      "01GT23D51Y",      "01GT23FWWN"    ],    "id": 37486578,    "locale": "en_us",    "permission_group_id": 123,    "position": 42,    "promoted": false,    "title": "Article title",    "user_segment_id": 12  }}

Update Article Source Locale

  • PUT /api/v2/help_center/{locale}/articles/{article_id}/source_locale
  • PUT /api/v2/help_center/articles/{article_id}/source_locale

Updates the article's source_locale property. The source locale is the main language of the article. When you delete the article in the source locale, you delete all the article's translations.

The endpoint sets one of the article's translation as the source locale of the article. The article in the previous source locale becomes a translation, which you can delete separately.

The new source locale must be enabled in Guide. See Enabling languages for your help center. You can use the List all enabled locales and default locale endpoint to check for the enabled locales.

Allowed for

  • Agents

Parameters

Name Type In Required Description
article_id integer Path true The unique ID of the article
locale string Path true The locale the item is displayed in

Code Samples

curl
curl https://{subdomain}.zendesk.com/api/v2/help_center/articles/{article_id}/source_locale.json \  -d '{"article_locale": "fr"}' -v -u {email_address}:{password} -X PUT \  -H "Content-Type: application/json"
Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/source_locale"	method := "PUT"	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 "username:password"
	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/api/v2/help_center/en-us/articles/360026053753/source_locale")		.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")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');
var config = {  method: 'PUT',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/source_locale',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requests
url = "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/source_locale"headers = {	"Content-Type": "application/json",}
response = requests.request(	"PUT",	url,	auth=('<username>', '<password>'),	headers=headers)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/source_locale")request = Net::HTTP::Put.new(uri, "Content-Type": "application/json")request.basic_auth "username", "password"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
null

Associate Attachments in Bulk to Article

  • POST /api/v2/help_center/{locale}/articles/{article_id}/bulk_attachments
  • POST /api/v2/help_center/articles/{article_id}/bulk_attachments

You can associate attachments in bulk to only one article at a time, with a maximum of 20 attachments per request.

To create the attachments, see Create Unassociated Attachment.

Allowed for

  • Agents

Parameters

Name Type In Required Description
article_id integer Path true The unique ID of the article
locale string Path true The locale the item is displayed in

Code Samples

curl
curl https://{subdomain}.zendesk.com/api/v2/help_center/articles/{article_id}/bulk_attachments.json \  -d '{"attachment_ids": [10002, ...]}' \  -v -u {email_address}:{password} -X POST -H "Content-Type: application/json"
Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/bulk_attachments"	method := "POST"	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 "username:password"
	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/api/v2/help_center/en-us/articles/360026053753/bulk_attachments")		.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")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');
var config = {  method: 'POST',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/bulk_attachments',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requests
url = "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/bulk_attachments"headers = {	"Content-Type": "application/json",}
response = requests.request(	"POST",	url,	auth=('<username>', '<password>'),	headers=headers)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753/bulk_attachments")request = Net::HTTP::Post.new(uri, "Content-Type": "application/json")request.basic_auth "username", "password"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
null

Archive Article

  • DELETE /api/v2/help_center/{locale}/articles/{article_id}
  • DELETE /api/v2/help_center/articles/{article_id}

Archives the article. You can restore the article using the Help Center user interface. See Viewing and restoring archived articles.

Allowed for

  • Agents

Parameters

Name Type In Required Description
article_id integer Path true The unique ID of the article
locale string Path true The locale the item is displayed in

Code Samples

Curl
curl --request DELETE https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753 \--header "Content-Type: application/json" \-u username:password
curl https://{subdomain}.zendesk.com/api/v2/help_center/articles/{article_id}.json \  -v -u {email_address}:{password} -X DELETE
Go
import (	"fmt"	"io"	"net/http")
func main() {	url := "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753"	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 "username:password"
	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/api/v2/help_center/en-us/articles/360026053753")		.newBuilder();
Request request = new Request.Builder()		.url(urlBuilder.build())		.method("DELETE", null)		.addHeader("Content-Type", "application/json")		.addHeader("Authorization", Credentials.basic("your-email", "your-password"))		.build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');
var config = {  method: 'DELETE',  url: 'https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753',  headers: {	'Content-Type': 'application/json',	'Authorization': 'Basic <auth-value>', // Base64 encoded "username:password"  },};
axios(config).then(function (response) {  console.log(JSON.stringify(response.data));}).catch(function (error) {  console.log(error);});
Python
import requests
url = "https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753"headers = {	"Content-Type": "application/json",}
response = requests.request(	"DELETE",	url,	auth=('<username>', '<password>'),	headers=headers)
print(response.text)
Ruby
require "net/http"uri = URI("https://support.zendesk.com/api/v2/help_center/en-us/articles/360026053753")request = Net::HTTP::Delete.new(uri, "Content-Type": "application/json")request.basic_auth "username", "password"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|	http.request(request)end

Example response(s)

204 No Content
// Status 204 No Content
null