diff --git a/descriptions/0/api.intercom.io.yaml b/descriptions/0/api.intercom.io.yaml
index dcbc3ebd..916bac7c 100644
--- a/descriptions/0/api.intercom.io.yaml
+++ b/descriptions/0/api.intercom.io.yaml
@@ -1434,6 +1434,21 @@ paths:
in: header
schema:
"$ref": "#/components/schemas/intercom_version"
+ - name: page
+ in: query
+ required: false
+ description: The page of results to fetch. Defaults to the first page.
+ example: 1
+ schema:
+ type: integer
+ - name: per_page
+ in: query
+ required: false
+ description: The number of results to return per page. Defaults to 25. Maximum is 250.
+ example: 25
+ schema:
+ type: integer
+ maximum: 250
tags:
- Articles
operationId: listArticles
@@ -1441,7 +1456,7 @@ paths:
`https://api.intercom.io/articles`.\n\n> \U0001F4D8 How are the articles sorted
and ordered?\n>\n> Articles will be returned in descending order on the `updated_at`
attribute. This means if you need to iterate through results then we'll show
- the most recently updated articles first.\n"
+ the most recently updated articles first.\n\nRequires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.\n"
responses:
'200':
description: successful
@@ -1462,9 +1477,15 @@ paths:
type: article
workspace_id: this_is_an_id64_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '61'
title: This is the article title
description: ''
body: ''
@@ -1473,20 +1494,31 @@ paths:
state: published
created_at: 1734537283
updated_at: 1734537283
- has_unpublished_changes: false
- draft_updated_at: null
url: http://help-center.test/myapp-64/en/articles/39-this-is-the-article-title
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
created_by_id: 5017691
updated_by_id: 5017691
- exclude_from_article_suggestions: false
- help_center_audience: everyone
- scheduled_publish_at: null
- scheduled_unpublish_at: null
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article_list"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Per page too large:
+ value:
+ type: error.list
+ request_id: ea1a3101-3e36-5689-ada2-68bd7a32748a
+ errors:
+ - code: parameter_invalid
+ message: Per Page is too big
+ schema:
+ "$ref": "#/components/schemas/error"
'401':
description: Unauthorized
content:
@@ -1512,9 +1544,10 @@ paths:
- Articles
operationId: createArticle
description: "You can create a new article by making a POST request to `https://api.intercom.io/articles`.\n\n>
- \U0001F4D8 Tags cannot be managed via the Articles API\n>\n> Article tags are
- read-only in responses. To create, update, or delete tags, use the Intercom
- UI or the Tags API endpoints.\n"
+ \U0001F4D8 Tags are managed separately\n>\n> Tags are returned in article responses
+ but cannot be set in the request body. To add or remove an article's tags,
+ use the `POST /articles/{article_id}/tags` and `DELETE /articles/{article_id}/tags/{id}`
+ endpoints.\n\nRequires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.\n"
responses:
'200':
description: article created
@@ -1526,7 +1559,9 @@ paths:
id: '42'
type: article
workspace_id: this_is_an_id68_that_should_be_at_least_4
- parent_ids: []
+ parent_ids:
+ - 145
+ folder_id: null
statistics:
type: article_statistics
views: 0
@@ -1541,6 +1576,11 @@ paths:
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '69'
title: Thanks for everything
description: Description of the Article
body:
Body of the Article
@@ -1549,22 +1589,19 @@ paths:
state: published
created_at: 1734537288
updated_at: 1734537288
- has_unpublished_changes: false
- draft_updated_at: null
url: http://help-center.test/myapp-68/en/articles/42-thanks-for-everything
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
created_by_id: 5017691
updated_by_id: 5017691
- exclude_from_article_suggestions: false
- help_center_audience: everyone
- scheduled_publish_at: null
- scheduled_unpublish_at: null
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'400':
- description: Bad Request
+ description: Bad Request. A JSON request whose body is an empty object returns `400` with no response body.
content:
application/json:
examples:
@@ -1593,6 +1630,48 @@ paths:
field: scheduled_unpublish_at
message: Cannot set scheduled_publish_at and scheduled_unpublish_at
in the same request
+ Missing title:
+ value:
+ type: error.list
+ request_id: b052ee5c-f602-5d9a-8356-94544cd9b12a
+ errors:
+ - code: parameter_not_found
+ message: Title is a required parameter
+ Unsupported locale:
+ value:
+ type: error.list
+ request_id: 00e07e24-9182-5d6a-8830-4a977fd902c9
+ errors:
+ - code: data_invalid
+ message: Locale 'xx' isn't supported.
+ Collection not found:
+ value:
+ type: error.list
+ request_id: 4c9f130d-bfb7-5cab-9a98-7c9fa6650ea9
+ errors:
+ - code: parameter_invalid
+ message: Collection not found
+ Publish time in the past:
+ value:
+ type: error.list
+ request_id: b0015de0-8628-523f-bca1-780ed3bdcc75
+ errors:
+ - code: parameter_invalid
+ message: scheduled_publish_at must be in the future
+ schema:
+ "$ref": "#/components/schemas/error"
+ '404':
+ description: 'Not found: the author, an audience, the folder or a collection in `parent_ids` does not exist.'
+ content:
+ application/json:
+ examples:
+ Author not found:
+ value:
+ type: error.list
+ request_id: e1650d39-7d30-554f-aeb1-b4aa32837f1a
+ errors:
+ - code: not_found
+ message: Admin not found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -1607,6 +1686,34 @@ paths:
errors:
- code: unauthorized
message: Access Token Invalid
+ Author not authorised:
+ value:
+ type: error.list
+ request_id: 4be1f5b3-3590-5eb7-83df-6d852559f097
+ errors:
+ - code: action_forbidden
+ message: author_id 991267497 is not authorised on this workspace
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable Entity
+ content:
+ application/json:
+ examples:
+ Body and body_markdown both provided:
+ value:
+ type: error.list
+ request_id: a560a2a1-1b69-5178-8953-b3d8c982eb29
+ errors:
+ - code: parameter_invalid
+ message: body and body_markdown are mutually exclusive - please provide only one
+ Invalid availability value:
+ value:
+ type: error.list
+ request_id: 3a0b96f7-6f76-5b2e-899a-776192cb6235
+ errors:
+ - code: parameter_invalid
+ message: ai_chatbot_availability must be true or false
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -1657,8 +1764,10 @@ paths:
tags:
- Articles
operationId: retrieveArticle
- description: You can fetch the details of a single article by making a GET request
- to `https://api.intercom.io/articles/`.
+ description: |
+ You can fetch the details of a single article by making a GET request to `https://api.intercom.io/articles/`.
+
+ Requires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: Article found
@@ -1671,6 +1780,7 @@ paths:
type: article
workspace_id: this_is_an_id74_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
statistics:
type: article_statistics
views: 0
@@ -1685,6 +1795,11 @@ paths:
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '73'
title: This is the article title
description: ''
body: ''
@@ -1693,18 +1808,15 @@ paths:
state: published
created_at: 1734537292
updated_at: 1734537292
- has_unpublished_changes: false
- draft_updated_at: null
url: http://help-center.test/myapp-74/en/articles/45-this-is-the-article-title
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
created_by_id: 5017691
updated_by_id: 5017691
- exclude_from_article_suggestions: false
- help_center_audience: everyone
- scheduled_publish_at: null
- scheduled_unpublish_at: null
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'404':
@@ -1753,10 +1865,10 @@ paths:
- Articles
operationId: updateArticle
description: "You can update the details of a single article by making a PUT
- request to `https://api.intercom.io/articles/`.\n\n> \U0001F4D8 Tags cannot be
- managed via the Articles API\n>\n> Article tags are read-only in responses.
- To create, update, or delete tags, use the Intercom UI or the Tags API
- endpoints.\n"
+ request to `https://api.intercom.io/articles/`.\n\n> \U0001F4D8 Tags are managed separately\n>\n> Tags are returned in article responses
+ but cannot be set in the request body. To add or remove an article's tags,
+ use the `POST /articles/{article_id}/tags` and `DELETE /articles/{article_id}/tags/{id}`
+ endpoints.\n\nRequires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.\n"
responses:
'200':
description: successful
@@ -1769,6 +1881,7 @@ paths:
type: article
workspace_id: this_is_an_id80_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
statistics:
type: article_statistics
views: 0
@@ -1783,6 +1896,11 @@ paths:
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '79'
title: Christmas is here!
description: ''
body: New gifts in store for the jolly season
@@ -1791,51 +1909,57 @@ paths:
state: published
created_at: 1734537297
updated_at: 1734537298
- has_unpublished_changes: false
- draft_updated_at: null
url: http://help-center.test/myapp-80/en/articles/48-christmas-is-here
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
created_by_id: 5017691
updated_by_id: 5017691
- exclude_from_article_suggestions: false
- help_center_audience: everyone
- scheduled_publish_at: null
- scheduled_unpublish_at: null
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'400':
- description: Bad Request
+ description: Bad Request. A JSON request whose body is an empty object returns `400` with no response body.
content:
application/json:
examples:
- Scheduling conflict:
+ Publish and unpublish in the same request:
value:
type: error.list
- request_id: 8d11c1f4-0a55-4f7f-8e2f-4f6c1f3b2c11
+ request_id: 884b59c8-2bae-51de-b300-e9b78dfa793c
errors:
- code: parameter_invalid
- field: scheduled_publish_at
- message: Cannot schedule a publish while setting state to draft
- Conflicting pending schedules:
+ message: Cannot schedule a publish and unpublish in the same request
+ Publish time in the past:
value:
type: error.list
- request_id: 0a82a3a4-94f1-4f1a-bea1-aaf41a8d3c22
+ request_id: 9936f252-ad05-5bf2-b681-c94d83904f71
errors:
- code: parameter_invalid
- field: scheduled_unpublish_at
- message: Cannot set scheduled_publish_at and scheduled_unpublish_at
- in the same request
- Unpublish before publish:
+ message: scheduled_publish_at must be in the future
+ Unpublish on an article that is not published:
value:
type: error.list
- request_id: 11aa22bb-33cc-44dd-55ee-66ff77889900
+ request_id: 4d09d60a-6f62-5b5e-b71a-92c949fad184
errors:
- code: parameter_invalid
- field: scheduled_unpublish_at
- message: Cannot schedule unpublish for an article that has never
- been published
+ message: Cannot schedule an unpublish on an article that is not currently published
+ Unsupported locale:
+ value:
+ type: error.list
+ request_id: bf534ebb-919e-5f80-91d0-35de1deffc4a
+ errors:
+ - code: data_invalid
+ message: Locale 'xx' isn't supported.
+ Collection not found:
+ value:
+ type: error.list
+ request_id: f1c380ad-c52e-50ba-a678-70a258799efe
+ errors:
+ - code: parameter_invalid
+ message: Collection not found
schema:
"$ref": "#/components/schemas/error"
'404':
@@ -1850,6 +1974,13 @@ paths:
errors:
- code: not_found
message: Resource Not Found
+ Author not found:
+ value:
+ type: error.list
+ request_id: da7836a0-95a1-5926-969c-6bc26f5a6633
+ errors:
+ - code: not_found
+ message: Admin not found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -1864,6 +1995,34 @@ paths:
errors:
- code: unauthorized
message: Access Token Invalid
+ Author not authorised:
+ value:
+ type: error.list
+ request_id: f62b30e2-5b2e-561d-b1e8-01a84a380ee2
+ errors:
+ - code: action_forbidden
+ message: author_id 991267508 is not authorised on this workspace
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable Entity
+ content:
+ application/json:
+ examples:
+ Body and body_markdown both provided:
+ value:
+ type: error.list
+ request_id: 2ee5920d-5fd3-5adc-8a58-d3e0cf3723c1
+ errors:
+ - code: parameter_invalid
+ message: body and body_markdown are mutually exclusive - please provide only one
+ Invalid availability value:
+ value:
+ type: error.list
+ request_id: f504af40-1675-56e1-8d06-28eae3412526
+ errors:
+ - code: parameter_invalid
+ message: ai_chatbot_availability must be true or false
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -1902,7 +2061,10 @@ paths:
tags:
- Articles
operationId: deleteArticle
- description: You can delete a single article by making a DELETE request to `https://api.intercom.io/articles/`.
+ description: |
+ You can delete a single article by making a DELETE request to `https://api.intercom.io/articles/`.
+
+ Requires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: successful
@@ -1944,6 +2106,27 @@ paths:
message: Access Token Invalid
schema:
"$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable Entity
+ content:
+ application/json:
+ examples:
+ Article has dependent procedures:
+ value:
+ type: error.list
+ request_id: d3212011-eabc-5be0-8011-9eb5ff048813
+ errors:
+ - code: content_has_procedure_dependencies
+ message: Article has dependent procedures and cannot be deleted
+ Article is referenced elsewhere:
+ value:
+ type: error.list
+ request_id: ade54c49-399e-52cd-8cc7-951307c40e06
+ errors:
+ - code: dependent_references_blocked
+ message: Can't delete this public article because it is used by "Refund policy" in Main Fin. Remove those references first.
+ schema:
+ "$ref": "#/components/schemas/error"
"/articles/{id}/draft":
get:
summary: Retrieve an article draft
@@ -1983,6 +2166,26 @@ paths:
type: article
workspace_id: this_is_an_id74_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
+ statistics:
+ type: article_statistics
+ views: 0
+ conversations: 0
+ reactions: 0
+ happy_reaction_percentage: 0
+ neutral_reaction_percentage: 0
+ sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
+ tags:
+ type: tag.list
+ tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '73'
title: This is the draft title
description: ''
body: Unpublished changes staged as a draft
@@ -1991,12 +2194,15 @@ paths:
state: published
created_at: 1734537292
updated_at: 1734537292
- has_unpublished_changes: true
- draft_updated_at: 1734537292
url: http://help-center.test/myapp-74/en/articles/45-this-is-the-article-title
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: true
+ draft_updated_at: 1734537292
schema:
"$ref": "#/components/schemas/article"
'404':
@@ -2028,9 +2234,11 @@ paths:
The article must already be published; staging a draft on an article that
has never been published returns `422`.
- Only versioned text content (such as `title` and `body`) is staged.
- Non-versioned fields like AI availability are ignored, leaving the live
- values untouched.
+ Only text content is staged: `title`, `description`, `body` or
+ `body_markdown`, and `author_id`, including per-locale values in
+ `translated_content`. Any other field in the request body, such as `state`,
+ `parent_id`, `folder_id`, `audience_ids`, the AI availability fields or the
+ scheduling fields, is still validated but not applied, so the live article is left untouched.
Requires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
@@ -2045,6 +2253,26 @@ paths:
type: article
workspace_id: this_is_an_id80_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
+ statistics:
+ type: article_statistics
+ views: 0
+ conversations: 0
+ reactions: 0
+ happy_reaction_percentage: 0
+ neutral_reaction_percentage: 0
+ sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
+ tags:
+ type: tag.list
+ tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '79'
title: Christmas is here!
description: ''
body: New gifts in store for the jolly season
@@ -2053,18 +2281,21 @@ paths:
state: published
created_at: 1734537297
updated_at: 1734537298
- has_unpublished_changes: true
- draft_updated_at: 1734537298
url: http://help-center.test/myapp-80/en/articles/48-christmas-is-here
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: true
+ draft_updated_at: 1734537298
schema:
"$ref": "#/components/schemas/article"
'404':
"$ref": "#/components/responses/ObjectNotFound"
'422':
- description: Article must be published before a draft can be staged
+ description: Article is not published, or a requested locale is not published
content:
application/json:
examples:
@@ -2131,6 +2362,26 @@ paths:
type: article
workspace_id: this_is_an_id80_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
+ statistics:
+ type: article_statistics
+ views: 0
+ conversations: 0
+ reactions: 0
+ happy_reaction_percentage: 0
+ neutral_reaction_percentage: 0
+ sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
+ tags:
+ type: tag.list
+ tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '79'
title: Christmas is here!
description: ''
body: New gifts in store for the jolly season
@@ -2139,12 +2390,15 @@ paths:
state: published
created_at: 1734537297
updated_at: 1734537299
- has_unpublished_changes: false
- draft_updated_at: null
url: http://help-center.test/myapp-80/en/articles/48-christmas-is-here
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'404':
@@ -2218,15 +2472,15 @@ paths:
- name: per_page
in: query
required: false
- description: The number of results to return per page.
- example: 25
+ description: The number of results to return per page. Defaults to 10.
+ example: 10
schema:
type: integer
- name: locale
in: query
required: false
description: Filter versions to a specific locale. Use the locale identifier
- (for example `en`, `fr`). If the locale is not configured for the workspace,
+ (for example `en`, `fr`). If the article has no content in that locale,
a `400` is returned.
example: en
schema:
@@ -2254,7 +2508,7 @@ paths:
pages:
type: pages
page: 1
- per_page: 25
+ per_page: 10
total_pages: 1
total_count: 2
data:
@@ -2283,17 +2537,17 @@ paths:
schema:
"$ref": "#/components/schemas/article_version_list"
'400':
- description: Unknown locale
+ description: No content for the requested locale
content:
application/json:
examples:
- Unknown locale:
+ No content for locale:
value:
type: error.list
request_id: 6f3c2b1a-2d4e-4f6a-9b8c-1a2b3c4d5e6f
errors:
- code: parameter_invalid
- message: Unknown locale
+ message: No content found for locale 'fr' on article 123
schema:
"$ref": "#/components/schemas/error"
'404':
@@ -2325,8 +2579,8 @@ paths:
- name: locale
in: query
required: false
- description: Return the version's content for a specific locale. If the locale
- is not configured for the workspace, a `400` is returned.
+ description: Return the version's content for a specific locale. If the article
+ has no content in that locale, a `400` is returned.
example: en
schema:
type: string
@@ -2365,17 +2619,17 @@ paths:
schema:
"$ref": "#/components/schemas/article_version"
'400':
- description: Unknown locale
+ description: No content for the requested locale
content:
application/json:
examples:
- Unknown locale:
+ No content for locale:
value:
type: error.list
request_id: 6f3c2b1a-2d4e-4f6a-9b8c-1a2b3c4d5e6f
errors:
- code: parameter_invalid
- message: Unknown locale
+ message: No content found for locale 'fr' on article 123
schema:
"$ref": "#/components/schemas/error"
'404':
@@ -2465,7 +2719,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'404':
- description: Article or tag not found
+ description: Article, tag or teammate not found
content:
application/json:
examples:
@@ -2483,6 +2737,13 @@ paths:
errors:
- code: tag_not_found
message: Tag not found
+ Admin not found:
+ value:
+ type: error.list
+ request_id: 7a34a204-9fae-5335-b818-1da0df3b5234
+ errors:
+ - code: admin_not_found
+ message: Admin not found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -2584,18 +2845,24 @@ paths:
- name: phrase
in: query
required: false
- description: The phrase within your articles to search for.
+ description: The phrase within your articles to search for. Maximum length is 500 characters.
example: Getting started
schema:
type: string
+ maxLength: 500
- name: state
in: query
required: false
description: The state of the Articles returned. One of `published`, `draft`
- or `all`.
+ or `all`. Defaults to `published`.
example: published
schema:
type: string
+ enum:
+ - published
+ - draft
+ - all
+ default: published
- name: help_center_id
in: query
required: false
@@ -2611,10 +2878,29 @@ paths:
example: false
schema:
type: boolean
+ - name: page
+ in: query
+ required: false
+ description: The page of results to fetch. Defaults to the first page.
+ example: 1
+ schema:
+ type: integer
+ - name: per_page
+ in: query
+ required: false
+ description: The number of results to return per page. Defaults to 10.
+ example: 10
+ schema:
+ type: integer
tags:
- Articles
operationId: searchArticles
- description: You can search for articles by making a GET request to `https://api.intercom.io/articles/search`.
+ description: |
+ You can search for articles by making a GET request to `https://api.intercom.io/articles/search`.
+
+ If no articles match the search, `data` is an empty array rather than an object.
+
+ Requires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: Search successful
@@ -2631,9 +2917,15 @@ paths:
type: article
workspace_id: this_is_an_id92_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '91'
title: Title 1
description: ''
body: ''
@@ -2643,23 +2935,67 @@ paths:
created_at: 1734537306
updated_at: 1734537306
url:
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
created_by_id: 5017691
updated_by_id: 5017691
- exclude_from_article_suggestions: false
- help_center_audience: everyone
- scheduled_publish_at: null
- scheduled_unpublish_at: null
+ has_unpublished_changes: false
+ draft_updated_at: null
highlights: []
pages:
type: pages
page: 1
total_pages: 1
per_page: 10
+ No results:
+ value:
+ type: list
+ total_count: 0
+ data: []
+ pages:
+ type: pages
+ page: 1
+ total_pages: 1
+ per_page: 10
schema:
"$ref": "#/components/schemas/article_search_response"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Phrase too long:
+ value:
+ type: error.list
+ request_id: 1bc9b60b-0786-5071-8f02-7a1774b9e60c
+ errors:
+ - code: parameter_invalid
+ message: Phrase is too long
+ Invalid state:
+ value:
+ type: error.list
+ request_id: 45ab1896-953a-51ff-ab2a-208ae54fd42c
+ errors:
+ - code: parameter_mismatch
+ message: Article state must be one of published, draft, all
+ Invalid help center:
+ value:
+ type: error.list
+ request_id: 4a19af49-61cb-5405-a03e-240ff7d4e685
+ errors:
+ - code: invalid_help_center_id
+ message: Invalid Help Center ID
+ Invalid pagination:
+ value:
+ type: error.list
+ request_id: a88426cc-4cdd-5084-baf4-4db7b55bd4f9
+ errors:
+ - code: data_invalid
+ message: Pagination data must be a number greater than 0
+ schema:
+ "$ref": "#/components/schemas/error"
'401':
description: Unauthorized
content:
@@ -3953,7 +4289,7 @@ paths:
description: |
You can fetch a list of all URL redirects for a help center by making a GET request to `https://api.intercom.io/help_center/help_centers/{help_center_id}/redirects`.
- Redirects are returned in descending order on the `updated_at` attribute.
+ Redirects are returned in ascending alphabetical order of `from_url`.
Requires the `read_help_center_redirects_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
@@ -4307,13 +4643,35 @@ paths:
in: header
schema:
"$ref": "#/components/schemas/intercom_version"
+ - name: page
+ in: query
+ required: false
+ description: The page of results to fetch. Defaults to the first page.
+ example: 1
+ schema:
+ type: integer
+ - name: per_page
+ in: query
+ required: false
+ description: The number of results to return per page. Defaults to 20. Maximum is 250.
+ example: 20
+ schema:
+ type: integer
+ maximum: 250
+ - name: help_center_id
+ in: query
+ required: false
+ description: Only return collections that belong to this Help Center.
+ example: 123
+ schema:
+ type: integer
tags:
- Help Center
operationId: listAllCollections
description: |
You can fetch a list of all collections by making a GET request to `https://api.intercom.io/help_center/collections`.
- Collections will be returned in descending order on the `updated_at` attribute. This means if you need to iterate through results then we'll show the most recently updated collections first.
+ Requires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: Successful
@@ -4325,9 +4683,10 @@ paths:
type: list
data:
- id: '159'
+ type: collection
workspace_id: this_is_an_id96_that_should_be_at_least_4
name: English collection title
- url: http://help-center.test/myapp-96/collection-17
+ url: http://help-center.test/myapp-96/en/collections/159-english-collection-title
order: 17
created_at: 1734537309
updated_at: 1734537309
@@ -4336,9 +4695,10 @@ paths:
parent_id:
help_center_id: 79
- id: '160'
+ type: collection
workspace_id: this_is_an_id96_that_should_be_at_least_4
name: English section title
- url: http://help-center.test/myapp-96/section-1
+ url: http://help-center.test/myapp-96/en/collections/160-english-section-title
order: 1
created_at: 1734537309
updated_at: 1734537309
@@ -4354,6 +4714,27 @@ paths:
total_pages: 1
schema:
"$ref": "#/components/schemas/collection_list"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Per page too large:
+ value:
+ type: error.list
+ request_id: a53bbddf-0c1f-5347-ad35-6e77920c9856
+ errors:
+ - code: parameter_invalid
+ message: Per Page is too big
+ Invalid help center:
+ value:
+ type: error.list
+ request_id: 806bb340-2357-544e-8fc2-8500543d72bd
+ errors:
+ - code: invalid_help_center_id
+ message: Invalid help center id
+ schema:
+ "$ref": "#/components/schemas/error"
'401':
description: Unauthorized
content:
@@ -4378,7 +4759,10 @@ paths:
tags:
- Help Center
operationId: createCollection
- description: You can create a new collection by making a POST request to `https://api.intercom.io/help_center/collections.`
+ description: |
+ You can create a new collection by making a POST request to `https://api.intercom.io/help_center/collections`.
+
+ Requires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: collection created
@@ -4388,9 +4772,10 @@ paths:
collection created:
value:
id: '165'
+ type: collection
workspace_id: this_is_an_id100_that_should_be_at_least_
name: Thanks for everything
- url: http://help-center.test/myapp-100/
+ url: http://help-center.test/myapp-100/en/collections/165-thanks-for-everything
order: 1
created_at: 1734537312
updated_at: 1734537312
@@ -4412,6 +4797,20 @@ paths:
errors:
- code: parameter_not_found
message: Name is a required parameter.
+ Invalid help center:
+ value:
+ type: error.list
+ request_id: 68bc842d-927f-5ac0-a16c-27cfa23c2f2f
+ errors:
+ - code: invalid_help_center_id
+ message: Invalid help center id
+ Parent collection not found:
+ value:
+ type: error.list
+ request_id: aefba0b8-1416-5186-9b13-2d2ea4c4eedd
+ errors:
+ - code: parameter_invalid
+ message: Parent collection doesn't exist
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -4460,8 +4859,10 @@ paths:
tags:
- Help Center
operationId: retrieveCollection
- description: You can fetch the details of a single collection by making a GET
- request to `https://api.intercom.io/help_center/collections/`.
+ description: |
+ You can fetch the details of a single collection by making a GET request to `https://api.intercom.io/help_center/collections/`.
+
+ Requires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: Collection found
@@ -4471,9 +4872,10 @@ paths:
Collection found:
value:
id: '170'
+ type: collection
workspace_id: this_is_an_id106_that_should_be_at_least_
name: English collection title
- url: http://help-center.test/myapp-106/collection-22
+ url: http://help-center.test/myapp-106/en/collections/170-english-collection-title
order: 22
created_at: 1734537315
updated_at: 1734537315
@@ -4528,8 +4930,10 @@ paths:
tags:
- Help Center
operationId: updateCollection
- description: You can update the details of a single collection by making a PUT
- request to `https://api.intercom.io/collections/`.
+ description: |
+ You can update the details of a single collection by making a PUT request to `https://api.intercom.io/help_center/collections/`.
+
+ Requires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: successful
@@ -4539,9 +4943,10 @@ paths:
successful:
value:
id: '176'
+ type: collection
workspace_id: this_is_an_id112_that_should_be_at_least_
name: Update collection name
- url: http://help-center.test/myapp-112/collection-25
+ url: http://help-center.test/myapp-112/en/collections/176-update-collection-name
order: 25
created_at: 1734537318
updated_at: 1734537319
@@ -4551,6 +4956,34 @@ paths:
help_center_id: 87
schema:
"$ref": "#/components/schemas/collection"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Help center mismatch:
+ value:
+ type: error.list
+ request_id: 9bd76817-9f0d-5cc1-9ea0-bba489c1469c
+ errors:
+ - code: invalid_help_center_id
+ message: Supplied help center id doesn't match the collection's help center id.
+ Parent collection not found:
+ value:
+ type: error.list
+ request_id: 9a35a830-4e68-528c-bf1b-7f1d3c689edf
+ errors:
+ - code: parameter_invalid
+ message: Parent collection doesn't exist
+ Unsupported locale:
+ value:
+ type: error.list
+ request_id: 0ff611e4-cde8-52c8-8665-1f307615e359
+ errors:
+ - code: data_invalid
+ message: Locale 'xx' isn't supported.
+ schema:
+ "$ref": "#/components/schemas/error"
'404':
description: Collection Not Found
content:
@@ -4610,8 +5043,10 @@ paths:
tags:
- Help Center
operationId: deleteCollection
- description: You can delete a single collection by making a DELETE request to
- `https://api.intercom.io/collections/`.
+ description: |
+ You can delete a single collection by making a DELETE request to `https://api.intercom.io/help_center/collections/`.
+
+ Requires the `read_write_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: successful
@@ -4664,22 +5099,24 @@ paths:
- name: id
in: path
required: true
- description: The unique identifier for the collection which is given by Intercom.
+ description: The unique identifier for the Help Center which is given by Intercom.
example: 123
schema:
type: integer
tags:
- Help Center
operationId: retrieveHelpCenter
- description: You can fetch the details of a single Help Center by making a GET
- request to `https://api.intercom.io/help_center/help_center/`.
+ description: |
+ You can fetch the details of a single Help Center by making a GET request to `https://api.intercom.io/help_center/help_centers/`.
+
+ Requires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
- description: Collection found
+ description: Help Center found
content:
application/json:
examples:
- Collection found:
+ Help Center found:
value:
id: '93'
workspace_id: this_is_an_id124_that_should_be_at_least_
@@ -4696,11 +5133,11 @@ paths:
schema:
"$ref": "#/components/schemas/help_center"
'404':
- description: Collection not found
+ description: Help Center not found
content:
application/json:
examples:
- Collection not found:
+ Help Center not found:
value:
type: error.list
request_id: bbd5de60-49c4-4850-afff-1226cdaa0beb
@@ -4734,7 +5171,10 @@ paths:
tags:
- Help Center
operationId: listHelpCenters
- description: You can list all Help Centers by making a GET request to `https://api.intercom.io/help_center/help_centers`.
+ description: |
+ You can list all Help Centers by making a GET request to `https://api.intercom.io/help_center/help_centers`.
+
+ Requires the `read_articles_scope` OAuth scope. Set `Intercom-Version: Preview`.
responses:
'200':
description: Help Centers found
@@ -31067,6 +31507,11 @@ components:
- article_content
example: article_content
nullable: true
+ content_id:
+ type: string
+ readOnly: true
+ description: The unique identifier for the article's content in this locale.
+ example: '6871120'
title:
type: string
description: The title of the article.
@@ -31289,6 +31734,11 @@ components:
type: string
description: The id of the workspace which the article belongs to.
example: hfi1bx4l
+ content_id:
+ type: string
+ description: The unique identifier for the article's content. For multilingual articles,
+ this will be the identifier of the default language's content.
+ example: '6871120'
title:
type: string
description: The title of the article. For multilingual articles, this will
@@ -31371,6 +31821,19 @@ components:
example:
- 18
- 19
+ audience_ids:
+ type: array
+ nullable: true
+ description: >-
+ The list of audience IDs this article is targeted to for Fin AI Agent.
+ This field is only returned for single-language help centers. For
+ multilingual help centers it appears per locale inside `translated_content`.
+ Empty array means no audience targeting is set.
+ items:
+ type: integer
+ example:
+ - 1
+ - 2
default_locale:
type: string
description: The default locale of the help center. This field is only returned
@@ -31602,7 +32065,8 @@ components:
example: 5
data:
type: object
- description: An object containing the results of the search.
+ description: An object containing the results of the search. When no articles
+ match, this is an empty array instead.
properties:
articles:
type: array
@@ -31892,8 +32356,9 @@ components:
example: '300'
state:
type: string
- description: Whether this version is the currently published version of
- the article (`published`) or an earlier non-live version (`draft`).
+ description: '`published` if this is the version that is currently live;
+ `draft` for every other version, including earlier versions that are
+ no longer live and staged changes that have not been published.'
enum:
- published
- draft
@@ -31985,8 +32450,9 @@ components:
example: '300'
state:
type: string
- description: Whether this version is the currently published version of
- the article (`published`) or an earlier non-live version (`draft`).
+ description: '`published` if this is the version that is currently live;
+ `draft` for every other version, including earlier versions that are
+ no longer live and staged changes that have not been published.'
enum:
- published
- draft
@@ -32456,6 +32922,12 @@ components:
description: Collections are top level containers for Articles within the Help
Center.
properties:
+ type:
+ type: string
+ description: The type of object - `collection`.
+ enum:
+ - collection
+ example: collection
id:
type: string
description: The unique identifier for the collection which is given by
@@ -32548,8 +33020,9 @@ components:
example: help_center_redirect
from_url:
type: string
- description: The source URL that is redirected. An absolute URL within the
- help center's URL space.
+ description: The source URL that is redirected. This is an absolute URL within
+ the help center's URL space, or a relative path such as `/old-page` for
+ some existing redirects.
example: http://help-center.test/lovelyhelpcenter/old-page
locale:
type: string
@@ -36960,8 +37433,9 @@ components:
properties:
title:
type: string
- description: The title of the article.For multilingual articles, this will
- be the title of the default language's content.
+ description: The title of the article. For multilingual articles, this will
+ be the title of the default language's content. Required unless a title
+ is provided in `translated_content` under the workspace's default Help Center locale.
example: Thanks for everything
description:
type: string
@@ -36983,7 +37457,8 @@ components:
type: integer
description: The id of the author of the article. For multilingual articles,
this will be the id of the author of the default language's content. Must
- be a teammate on the help center's workspace.
+ be a teammate on the help center's workspace. Required unless an `author_id`
+ is provided in `translated_content` under the workspace's default Help Center locale.
example: 1295
state:
type: string
@@ -36999,21 +37474,27 @@ components:
description: The id of the article's parent collection or section. An article
without this field stands alone.
example: 18
- parent_type:
- type: string
- description: The type of parent, which can either be a `collection` or `section`.
- example: collection
parent_ids:
type: array
description: The ids of the parent collections to place this article in.
Send an empty array to leave the article without a collection. When
- provided, this takes precedence over `parent_id` and `parent_type`.
+ provided, this takes precedence over `parent_id`.
items:
type: integer
example:
- 18
- 19
+ locale:
+ type: string
+ description: The locale of the article's default content, for example `en`.
+ Defaults to the locale of the help center that the parent collection belongs
+ to when `parent_id` is sent, and otherwise to the default Help Center locale.
+ Must be a locale supported by the workspace's Help Center.
+ example: en
translated_content:
+ description: Content for other locales, keyed by locale code. Content for the
+ article's default locale can also be given here instead of at the top level.
+ If it is given in both places, the values must match.
"$ref": "#/components/schemas/article_translated_content"
folder_id:
type: integer
@@ -37069,16 +37550,14 @@ components:
nullable: true
description: >-
ISO 8601 timestamp at which to schedule a future unpublish of the article.
- The value must be strictly in the future — timestamps in the past or equal to
- the current time are rejected with 400 `parameter_invalid`. Setting `null`
- cancels a pending unpublish schedule. Rejected with 400 `parameter_invalid`
- if the article has never been published. Sending in the same request as
- `scheduled_publish_at` returns 400 — only one pending schedule per article.
- Empty string returns 400 `parameter_invalid`.
+ The same request must also publish the article (`state: "published"`),
+ otherwise it returns 400 `parameter_invalid`. The value must be strictly in
+ the future; timestamps in the past or equal to the current time are rejected
+ with 400 `parameter_invalid`. Setting `null` cancels a pending unpublish
+ schedule. Sending in the same request as `scheduled_publish_at` returns 400
+ — only one pending schedule per article. Empty string returns 400
+ `parameter_invalid`.
example: '2026-12-31T17:00:00Z'
- required:
- - title
- - author_id
create_internal_article_request:
description: You can create an Internal Article
type: object
@@ -37153,13 +37632,19 @@ components:
name:
type: string
description: The name of the collection. For multilingual collections, this
- will be the name of the default language's content.
+ will be the name of the default language's content. Required unless a
+ name is provided in `translated_content` under the workspace's default Help Center locale.
example: collection 51
description:
type: string
description: The description of the collection. For multilingual collections,
this will be the description of the default language's content.
example: English description
+ icon:
+ type: string
+ description: The icon of the collection, for example `book-bookmark`. Defaults
+ to `book-bookmark`.
+ example: book-bookmark
translated_content:
nullable: true
"$ref": "#/components/schemas/group_translated_content"
@@ -37175,8 +37660,6 @@ components:
description: The id of the help center where the collection will be created.
If `null` then it will be created in the default help center.
example: '123'
- required:
- - name
create_contact_request:
description: Payload to create a contact
type: object
@@ -46149,137 +46632,51 @@ components:
example:
- en
- fr
+ author_id:
+ type: integer
+ description: The id of the teammate to publish as. This is only used when the
+ access token is not associated with a teammate, and is then required; omitting
+ it returns 400 `parameter_not_found`. Otherwise the authenticating teammate
+ is used. Must be a teammate on the workspace.
+ example: 1295
stage_article_draft_request_body:
- description: You can Stage a Draft for an Article
+ description: You can stage a draft for a published article. Only the fields below
+ are staged; any other field in the request body is validated but not applied.
type: object
title: Stage Article Draft Request Payload
nullable: true
properties:
title:
type: string
- description: The title of the article.For multilingual articles, this will
+ description: The title of the draft. For multilingual articles, this will
be the title of the default language's content.
example: Thanks for everything
description:
type: string
- description: The description of the article. For multilingual articles,
+ description: The description of the draft. For multilingual articles,
this will be the description of the default language's content.
example: Description of the Article
body:
type: string
- description: The content of the article in HTML. For multilingual articles, this
+ description: The content of the draft in HTML. For multilingual articles, this
will be the body of the default language's content. Mutually exclusive with `body_markdown`.
example: "This is the body in html
"
body_markdown:
type: string
- description: The content of the article in markdown. For multilingual articles, this
- will be the body of the default language's content. An alternative to `body` — you
- can provide content as markdown instead of HTML. Mutually exclusive with `body`.
+ description: The content of the draft in markdown. For multilingual articles, this
+ will be the body of the default language's content. Mutually exclusive with `body`.
example: "## Updated heading\n\nNew content.\n"
author_id:
type: integer
- description: The id of the author of the article. For multilingual articles,
+ description: The id of the author of the draft. For multilingual articles,
this will be the id of the author of the default language's content. Must
be a teammate on the help center's workspace.
example: 1295
- state:
- type: string
- description: Whether the article will be `published` or will be a `draft`.
- Omitting this field leaves the publish state unchanged, so a draft stays
- a draft and an edit to a published article goes live immediately unless
- that article already has a pending draft or a scheduled publish time is
- set in the same request. The `PUT /articles/{id}/draft` endpoint ignores
- this field and always stages a draft. For multilingual articles, this
- will be the state of the default language's content.
- enum:
- - published
- - draft
- example: draft
- parent_id:
- type: string
- description: The id of the article's parent collection or section. An article
- without this field stands alone.
- example: '18'
- parent_type:
- type: string
- description: The type of parent, which can either be a `collection` or `section`.
- example: collection
- parent_ids:
- type: array
- description: The ids of the parent collections to place this article in.
- Send an empty array to remove the article from all collections. When
- provided, this takes precedence over `parent_id` and `parent_type`.
- items:
- type: integer
- example:
- - 18
- - 19
translated_content:
+ description: Draft content for other locales, keyed by locale code. Each locale
+ must already be published on the article.
"$ref": "#/components/schemas/article_translated_content"
- folder_id:
- type: integer
- nullable: true
- description: The ID of the folder to place this article in, or null to remove it from its folder.
- example: 6
- audience_ids:
- type: array
- nullable: true
- description: >-
- The list of audience IDs to assign to this article for Fin AI Agent targeting.
- Sending a top-level `audience_ids` broadcasts the same set to every locale.
- Sending `audience_ids: []` clears all audience memberships from every locale.
- For per-locale targeting, use `translated_content..audience_ids` instead.
- Sending both top-level and per-locale in the same request causes top-level to win.
- Unknown audience IDs return a 404 error. No partial commit occurs.
- items:
- type: integer
- example:
- - 1
- - 2
- ai_chatbot_availability:
- type: boolean
- description: Whether the article should be available for AI Chatbot (Fin).
- For multilingual articles, this sets the default language's availability.
- example: true
- ai_copilot_availability:
- type: boolean
- description: Whether the article should be available for AI Copilot. For
- multilingual articles, this sets the default language's availability.
- example: true
- ai_sales_agent_availability:
- type: boolean
- description: Whether the article should be available for AI Sales Agent.
- For multilingual articles, this sets the default language's availability.
- example: true
- scheduled_publish_at:
- type: string
- format: date-time
- nullable: true
- description: >-
- ISO 8601 timestamp at which to schedule a future publish of the article.
- When set together with `state: "published"`, the article is scheduled
- instead of published immediately. Setting `null` cancels a pending
- publish schedule. Timestamps in the past or equal to the current time
- are rejected with 400 `parameter_invalid` — the value must be strictly
- in the future. Combining with `state: "draft"` returns 400
- `parameter_invalid`. Sending in the same request as
- `scheduled_unpublish_at` returns 400 — only one pending schedule per
- article. Empty string returns 400 `parameter_invalid`.
- example: '2026-12-31T09:00:00Z'
- scheduled_unpublish_at:
- type: string
- format: date-time
- nullable: true
- description: >-
- ISO 8601 timestamp at which to schedule a future unpublish of the article.
- Setting `null` cancels a pending unpublish schedule. Timestamps in the
- past or equal to the current time are rejected with 400
- `parameter_invalid` — the value must be strictly in the future. Rejected
- with 400 `parameter_invalid` if the article has never been published.
- Sending in the same request as `scheduled_publish_at` returns 400 — only
- one pending schedule per article. Empty string returns 400
- `parameter_invalid`.
- example: '2026-12-31T17:00:00Z'
+
update_article_request:
description: You can Update an Article
type: object
@@ -46288,7 +46685,7 @@ components:
properties:
title:
type: string
- description: The title of the article.For multilingual articles, this will
+ description: The title of the article. For multilingual articles, this will
be the title of the default language's content.
example: Thanks for everything
description:
@@ -46319,27 +46716,25 @@ components:
Omitting this field leaves the publish state unchanged, so a draft stays
a draft and an edit to a published article goes live immediately unless
that article already has a pending draft or a scheduled publish time is
- set in the same request. The `PUT /articles/{id}/draft` endpoint ignores
- this field and always stages a draft. For multilingual articles, this
- will be the state of the default language's content.
+ set in the same request. For multilingual articles, this will be the state
+ of the default language's content.
enum:
- published
- draft
example: draft
parent_id:
type: string
- description: The id of the article's parent collection or section. An article
- without this field stands alone.
+ nullable: true
+ description: >-
+ The id of the collection or section to move the article into. Omitting this
+ field or sending `null` leaves the article's parent unchanged. Send `home` to
+ remove the article from its collection so that it stands alone.
example: '18'
- parent_type:
- type: string
- description: The type of parent, which can either be a `collection` or `section`.
- example: collection
parent_ids:
type: array
description: The ids of the parent collections to place this article in.
Send an empty array to remove the article from all collections. When
- provided, this takes precedence over `parent_id` and `parent_type`.
+ provided, this takes precedence over `parent_id`.
items:
type: integer
example:
@@ -46402,12 +46797,13 @@ components:
nullable: true
description: >-
ISO 8601 timestamp at which to schedule a future unpublish of the article.
- The value must be strictly in the future — timestamps in the past or equal to
- the current time are rejected with 400 `parameter_invalid`. Setting `null`
- cancels a pending unpublish schedule. Rejected with 400 `parameter_invalid`
- if the article has never been published. Sending in the same request as
- `scheduled_publish_at` returns 400 — only one pending schedule per article.
- Empty string returns 400 `parameter_invalid`.
+ The article must already be published; setting `state: "published"` in the
+ same request does not count, and the request returns 400 `parameter_invalid`.
+ Combining with `state: "draft"` also returns 400 `parameter_invalid`. The value must be strictly in the future;
+ timestamps in the past or equal to the current time are rejected with 400
+ `parameter_invalid`. Setting `null` cancels a pending unpublish schedule.
+ Sending in the same request as `scheduled_publish_at` returns 400 — only one
+ pending schedule per article. Empty string returns 400 `parameter_invalid`.
example: '2026-12-31T17:00:00Z'
update_internal_article_request:
description: You can Update an Internal Article
@@ -46482,15 +46878,28 @@ components:
description: The description of the collection. For multilingual collections,
this will be the description of the default language's content.
example: English description
+ icon:
+ type: string
+ description: The icon of the collection, for example `book-bookmark`.
+ example: book-bookmark
translated_content:
nullable: true
"$ref": "#/components/schemas/group_translated_content"
parent_id:
type: string
nullable: true
- description: The id of the parent collection. If `null` then it will be
- updated as the first level collection.
+ description: >-
+ The id of the parent collection to move the collection into. Omitting this
+ field or sending `null` leaves the collection where it is. Send `home` to move
+ it to the first level.
example: '6871118'
+ help_center_id:
+ type: integer
+ nullable: true
+ description: Checked against the collection's Help Center but not applied, so it
+ can't move the collection to another Help Center.
+ example: 123
+
update_contact_request:
description: You can update a contact
type: object
diff --git a/descriptions/2.17/api.intercom.io.yaml b/descriptions/2.17/api.intercom.io.yaml
index 46f3a062..4943e950 100644
--- a/descriptions/2.17/api.intercom.io.yaml
+++ b/descriptions/2.17/api.intercom.io.yaml
@@ -2131,6 +2131,21 @@ paths:
in: header
schema:
"$ref": "#/components/schemas/intercom_version"
+ - name: page
+ in: query
+ required: false
+ description: The page of results to fetch. Defaults to the first page.
+ example: 1
+ schema:
+ type: integer
+ - name: per_page
+ in: query
+ required: false
+ description: The number of results to return per page. Defaults to 25. Maximum is 250.
+ example: 25
+ schema:
+ type: integer
+ maximum: 250
tags:
- Articles
operationId: listArticles
@@ -2138,7 +2153,7 @@ paths:
`https://api.intercom.io/articles`.\n\n> \U0001F4D8 How are the articles sorted
and ordered?\n>\n> Articles will be returned in descending order on the `updated_at`
attribute. This means if you need to iterate through results then we'll show
- the most recently updated articles first.\n"
+ the most recently updated articles first.\n\nRequires the `read_articles_scope` OAuth scope.\n"
responses:
'200':
description: successful
@@ -2159,19 +2174,48 @@ paths:
type: article
workspace_id: this_is_an_id64_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '61'
title: This is the article title
description: ''
body: ''
+ body_markdown: ''
author_id: 991267492
state: published
created_at: 1734537283
updated_at: 1734537283
url: http://help-center.test/myapp-64/en/articles/39-this-is-the-article-title
+ audience_ids: []
+ ai_chatbot_availability: true
+ ai_copilot_availability: true
+ ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article_list"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Per page too large:
+ value:
+ type: error.list
+ request_id: ea1a3101-3e36-5689-ada2-68bd7a32748a
+ errors:
+ - code: parameter_invalid
+ message: Per Page is too big
+ schema:
+ "$ref": "#/components/schemas/error"
'401':
description: Unauthorized
content:
@@ -2197,9 +2241,10 @@ paths:
- Articles
operationId: createArticle
description: "You can create a new article by making a POST request to `https://api.intercom.io/articles`.\n\n>
- \U0001F4D8 Tags cannot be managed via the Articles API\n>\n> Article tags are
- read-only in responses. To create, update, or delete tags, use the Intercom
- UI or the Tags API endpoints.\n"
+ \U0001F4D8 Tags are managed separately\n>\n> Tags are returned in article responses
+ but cannot be set in the request body. To add or remove an article's tags,
+ use the `POST /articles/{article_id}/tags` and `DELETE /articles/{article_id}/tags/{id}`
+ endpoints.\n\nRequires the `read_write_articles_scope` OAuth scope.\n"
responses:
'200':
description: article created
@@ -2211,7 +2256,9 @@ paths:
id: '42'
type: article
workspace_id: this_is_an_id68_that_should_be_at_least_4
- parent_ids: []
+ parent_ids:
+ - 145
+ folder_id: null
statistics:
type: article_statistics
views: 0
@@ -2220,21 +2267,38 @@ paths:
happy_reaction_percentage: 0
neutral_reaction_percentage: 0
sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '69'
title: Thanks for everything
description: Description of the Article
body: Body of the Article
+ body_markdown: "Body of the Article\n"
author_id: 991267497
state: published
created_at: 1734537288
updated_at: 1734537288
url: http://help-center.test/myapp-68/en/articles/42-thanks-for-everything
+ audience_ids: []
+ ai_chatbot_availability: true
+ ai_copilot_availability: true
+ ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'400':
- description: Bad Request
+ description: Bad Request. A JSON request whose body is an empty object returns `400` with no response body.
content:
application/json:
examples:
@@ -2246,6 +2310,48 @@ paths:
- code: parameter_not_found
message: author_id must be in the main body or default locale
translated_content object
+ Missing title:
+ value:
+ type: error.list
+ request_id: b052ee5c-f602-5d9a-8356-94544cd9b12a
+ errors:
+ - code: parameter_not_found
+ message: Title is a required parameter
+ Unsupported locale:
+ value:
+ type: error.list
+ request_id: 00e07e24-9182-5d6a-8830-4a977fd902c9
+ errors:
+ - code: data_invalid
+ message: Locale 'xx' isn't supported.
+ Collection not found:
+ value:
+ type: error.list
+ request_id: 4c9f130d-bfb7-5cab-9a98-7c9fa6650ea9
+ errors:
+ - code: parameter_invalid
+ message: Collection not found
+ Publish time in the past:
+ value:
+ type: error.list
+ request_id: b0015de0-8628-523f-bca1-780ed3bdcc75
+ errors:
+ - code: parameter_invalid
+ message: scheduled_publish_at must be in the future
+ schema:
+ "$ref": "#/components/schemas/error"
+ '404':
+ description: 'Not found: the author, an audience, the folder or a collection in `parent_ids` does not exist.'
+ content:
+ application/json:
+ examples:
+ Author not found:
+ value:
+ type: error.list
+ request_id: e1650d39-7d30-554f-aeb1-b4aa32837f1a
+ errors:
+ - code: not_found
+ message: Admin not found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -2260,6 +2366,34 @@ paths:
errors:
- code: unauthorized
message: Access Token Invalid
+ Author not authorised:
+ value:
+ type: error.list
+ request_id: 4be1f5b3-3590-5eb7-83df-6d852559f097
+ errors:
+ - code: action_forbidden
+ message: author_id 991267497 is not authorised on this workspace
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable Entity
+ content:
+ application/json:
+ examples:
+ Body and body_markdown both provided:
+ value:
+ type: error.list
+ request_id: a560a2a1-1b69-5178-8953-b3d8c982eb29
+ errors:
+ - code: parameter_invalid
+ message: body and body_markdown are mutually exclusive - please provide only one
+ Invalid availability value:
+ value:
+ type: error.list
+ request_id: 3a0b96f7-6f76-5b2e-899a-776192cb6235
+ errors:
+ - code: parameter_invalid
+ message: ai_chatbot_availability must be true or false
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -2277,7 +2411,6 @@ paths:
author_id: 991267497
state: published
parent_id: 145
- parent_type: collection
translated_content:
fr:
title: Merci pour tout
@@ -2310,8 +2443,10 @@ paths:
tags:
- Articles
operationId: retrieveArticle
- description: You can fetch the details of a single article by making a GET request
- to `https://api.intercom.io/articles/`.
+ description: |
+ You can fetch the details of a single article by making a GET request to `https://api.intercom.io/articles/`.
+
+ Requires the `read_articles_scope` OAuth scope.
responses:
'200':
description: Article found
@@ -2324,6 +2459,7 @@ paths:
type: article
workspace_id: this_is_an_id74_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
statistics:
type: article_statistics
views: 0
@@ -2332,17 +2468,34 @@ paths:
happy_reaction_percentage: 0
neutral_reaction_percentage: 0
sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '73'
title: This is the article title
description: ''
body: ''
+ body_markdown: ''
author_id: 991267502
state: published
created_at: 1734537292
updated_at: 1734537292
url: http://help-center.test/myapp-74/en/articles/45-this-is-the-article-title
+ audience_ids: []
+ ai_chatbot_availability: true
+ ai_copilot_availability: true
+ ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'404':
@@ -2391,10 +2544,10 @@ paths:
- Articles
operationId: updateArticle
description: "You can update the details of a single article by making a PUT
- request to `https://api.intercom.io/articles/`.\n\n> \U0001F4D8 Tags cannot be
- managed via the Articles API\n>\n> Article tags are read-only in responses.
- To create, update, or delete tags, use the Intercom UI or the Tags API
- endpoints.\n"
+ request to `https://api.intercom.io/articles/`.\n\n> \U0001F4D8 Tags are managed separately\n>\n> Tags are returned in article responses
+ but cannot be set in the request body. To add or remove an article's tags,
+ use the `POST /articles/{article_id}/tags` and `DELETE /articles/{article_id}/tags/{id}`
+ endpoints.\n\nRequires the `read_write_articles_scope` OAuth scope.\n"
responses:
'200':
description: successful
@@ -2407,6 +2560,7 @@ paths:
type: article
workspace_id: this_is_an_id80_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
statistics:
type: article_statistics
views: 0
@@ -2415,19 +2569,78 @@ paths:
happy_reaction_percentage: 0
neutral_reaction_percentage: 0
sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '79'
title: Christmas is here!
description: ''
body: New gifts in store for the jolly season
+ body_markdown: "New gifts in store for the jolly season\n"
author_id: 991267508
state: published
created_at: 1734537297
updated_at: 1734537298
url: http://help-center.test/myapp-80/en/articles/48-christmas-is-here
+ audience_ids: []
+ ai_chatbot_availability: true
+ ai_copilot_availability: true
+ ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
+ '400':
+ description: Bad Request. A JSON request whose body is an empty object returns `400` with no response body.
+ content:
+ application/json:
+ examples:
+ Publish and unpublish in the same request:
+ value:
+ type: error.list
+ request_id: 884b59c8-2bae-51de-b300-e9b78dfa793c
+ errors:
+ - code: parameter_invalid
+ message: Cannot schedule a publish and unpublish in the same request
+ Publish time in the past:
+ value:
+ type: error.list
+ request_id: 9936f252-ad05-5bf2-b681-c94d83904f71
+ errors:
+ - code: parameter_invalid
+ message: scheduled_publish_at must be in the future
+ Unpublish on an article that is not published:
+ value:
+ type: error.list
+ request_id: 4d09d60a-6f62-5b5e-b71a-92c949fad184
+ errors:
+ - code: parameter_invalid
+ message: Cannot schedule an unpublish on an article that is not currently published
+ Unsupported locale:
+ value:
+ type: error.list
+ request_id: bf534ebb-919e-5f80-91d0-35de1deffc4a
+ errors:
+ - code: data_invalid
+ message: Locale 'xx' isn't supported.
+ Collection not found:
+ value:
+ type: error.list
+ request_id: f1c380ad-c52e-50ba-a678-70a258799efe
+ errors:
+ - code: parameter_invalid
+ message: Collection not found
+ schema:
+ "$ref": "#/components/schemas/error"
'404':
description: Article Not Found
content:
@@ -2440,6 +2653,13 @@ paths:
errors:
- code: not_found
message: Resource Not Found
+ Author not found:
+ value:
+ type: error.list
+ request_id: da7836a0-95a1-5926-969c-6bc26f5a6633
+ errors:
+ - code: not_found
+ message: Admin not found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -2454,6 +2674,34 @@ paths:
errors:
- code: unauthorized
message: Access Token Invalid
+ Author not authorised:
+ value:
+ type: error.list
+ request_id: f62b30e2-5b2e-561d-b1e8-01a84a380ee2
+ errors:
+ - code: action_forbidden
+ message: author_id 991267508 is not authorised on this workspace
+ schema:
+ "$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable Entity
+ content:
+ application/json:
+ examples:
+ Body and body_markdown both provided:
+ value:
+ type: error.list
+ request_id: 2ee5920d-5fd3-5adc-8a58-d3e0cf3723c1
+ errors:
+ - code: parameter_invalid
+ message: body and body_markdown are mutually exclusive - please provide only one
+ Invalid availability value:
+ value:
+ type: error.list
+ request_id: f504af40-1675-56e1-8d06-28eae3412526
+ errors:
+ - code: parameter_invalid
+ message: ai_chatbot_availability must be true or false
schema:
"$ref": "#/components/schemas/error"
requestBody:
@@ -2489,7 +2737,10 @@ paths:
tags:
- Articles
operationId: deleteArticle
- description: You can delete a single article by making a DELETE request to `https://api.intercom.io/articles/`.
+ description: |
+ You can delete a single article by making a DELETE request to `https://api.intercom.io/articles/`.
+
+ Requires the `read_write_articles_scope` OAuth scope.
responses:
'200':
description: successful
@@ -2531,6 +2782,27 @@ paths:
message: Access Token Invalid
schema:
"$ref": "#/components/schemas/error"
+ '422':
+ description: Unprocessable Entity
+ content:
+ application/json:
+ examples:
+ Article has dependent procedures:
+ value:
+ type: error.list
+ request_id: d3212011-eabc-5be0-8011-9eb5ff048813
+ errors:
+ - code: content_has_procedure_dependencies
+ message: Article has dependent procedures and cannot be deleted
+ Article is referenced elsewhere:
+ value:
+ type: error.list
+ request_id: ade54c49-399e-52cd-8cc7-951307c40e06
+ errors:
+ - code: dependent_references_blocked
+ message: Can't delete this public article because it is used by "Refund policy" in Main Fin. Remove those references first.
+ schema:
+ "$ref": "#/components/schemas/error"
"/articles/{id}/draft":
get:
summary: Retrieve an article draft
@@ -2570,6 +2842,26 @@ paths:
type: article
workspace_id: this_is_an_id74_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
+ statistics:
+ type: article_statistics
+ views: 0
+ conversations: 0
+ reactions: 0
+ happy_reaction_percentage: 0
+ neutral_reaction_percentage: 0
+ sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
+ tags:
+ type: tag.list
+ tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '73'
title: This is the draft title
description: ''
body: Unpublished changes staged as a draft
@@ -2578,12 +2870,15 @@ paths:
state: published
created_at: 1734537292
updated_at: 1734537292
- has_unpublished_changes: true
- draft_updated_at: 1734537292
url: http://help-center.test/myapp-74/en/articles/45-this-is-the-article-title
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: true
+ draft_updated_at: 1734537292
schema:
"$ref": "#/components/schemas/article"
'404':
@@ -2615,9 +2910,13 @@ paths:
The article must already be published; staging a draft on an article that
has never been published returns `422`.
- Only versioned text content (such as `title` and `body`) is staged.
- Non-versioned fields like AI availability are ignored, leaving the live
- values untouched.
+ Only text content is staged: `title`, `description`, `body` or
+ `body_markdown`, and `author_id`, including per-locale values in
+ `translated_content`. Any other field in the request body, such as `state`,
+ `parent_id`, `folder_id`, `audience_ids`, the AI availability fields or the
+ scheduling fields, is still validated but not applied, so the live article is left untouched. The
+ scheduling, state and placement notes on the request schema's other fields
+ do not apply to this endpoint, because those fields are not applied.
Requires the `read_write_articles_scope` OAuth scope.
responses:
@@ -2632,6 +2931,26 @@ paths:
type: article
workspace_id: this_is_an_id80_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
+ statistics:
+ type: article_statistics
+ views: 0
+ conversations: 0
+ reactions: 0
+ happy_reaction_percentage: 0
+ neutral_reaction_percentage: 0
+ sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
+ tags:
+ type: tag.list
+ tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '79'
title: Christmas is here!
description: ''
body: New gifts in store for the jolly season
@@ -2640,18 +2959,21 @@ paths:
state: published
created_at: 1734537297
updated_at: 1734537298
- has_unpublished_changes: true
- draft_updated_at: 1734537298
url: http://help-center.test/myapp-80/en/articles/48-christmas-is-here
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: true
+ draft_updated_at: 1734537298
schema:
"$ref": "#/components/schemas/article"
'404':
"$ref": "#/components/responses/ObjectNotFound"
'422':
- description: Article must be published before a draft can be staged
+ description: Article is not published, or a requested locale is not published
content:
application/json:
examples:
@@ -2718,6 +3040,26 @@ paths:
type: article
workspace_id: this_is_an_id80_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
+ statistics:
+ type: article_statistics
+ views: 0
+ conversations: 0
+ reactions: 0
+ happy_reaction_percentage: 0
+ neutral_reaction_percentage: 0
+ sad_reaction_percentage: 0
+ fin_involvements: 0
+ fin_resolutions: 0
+ fin_resolution_rate: 0
+ tags:
+ type: tag.list
+ tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '79'
title: Christmas is here!
description: ''
body: New gifts in store for the jolly season
@@ -2726,12 +3068,15 @@ paths:
state: published
created_at: 1734537297
updated_at: 1734537299
- has_unpublished_changes: false
- draft_updated_at: null
url: http://help-center.test/myapp-80/en/articles/48-christmas-is-here
+ audience_ids: []
ai_chatbot_availability: true
ai_copilot_availability: true
ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
schema:
"$ref": "#/components/schemas/article"
'404':
@@ -2862,7 +3207,7 @@ paths:
schema:
"$ref": "#/components/schemas/error"
'404':
- description: Article or tag not found
+ description: Article, tag or teammate not found
content:
application/json:
examples:
@@ -2880,6 +3225,13 @@ paths:
errors:
- code: tag_not_found
message: Tag not found
+ Admin not found:
+ value:
+ type: error.list
+ request_id: 7a34a204-9fae-5335-b818-1da0df3b5234
+ errors:
+ - code: admin_not_found
+ message: Admin not found
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -2996,15 +3348,15 @@ paths:
- name: per_page
in: query
required: false
- description: The number of results to return per page.
- example: 25
+ description: The number of results to return per page. Defaults to 10.
+ example: 10
schema:
type: integer
- name: locale
in: query
required: false
description: Filter versions to a specific locale. Use the locale identifier
- (for example `en`, `fr`). If the locale is not configured for the workspace,
+ (for example `en`, `fr`). If the article has no content in that locale,
a `400` is returned.
example: en
schema:
@@ -3032,7 +3384,7 @@ paths:
pages:
type: pages
page: 1
- per_page: 25
+ per_page: 10
total_pages: 1
total_count: 2
data:
@@ -3061,17 +3413,17 @@ paths:
schema:
"$ref": "#/components/schemas/article_version_list"
'400':
- description: Unknown locale
+ description: No content for the requested locale
content:
application/json:
examples:
- Unknown locale:
+ No content for locale:
value:
type: error.list
request_id: 6f3c2b1a-2d4e-4f6a-9b8c-1a2b3c4d5e6f
errors:
- code: parameter_invalid
- message: Unknown locale
+ message: No content found for locale 'fr' on article 123
schema:
"$ref": "#/components/schemas/error"
'404':
@@ -3103,8 +3455,8 @@ paths:
- name: locale
in: query
required: false
- description: Return the version's content for a specific locale. If the locale
- is not configured for the workspace, a `400` is returned.
+ description: Return the version's content for a specific locale. If the article
+ has no content in that locale, a `400` is returned.
example: en
schema:
type: string
@@ -3143,17 +3495,17 @@ paths:
schema:
"$ref": "#/components/schemas/article_version"
'400':
- description: Unknown locale
+ description: No content for the requested locale
content:
application/json:
examples:
- Unknown locale:
+ No content for locale:
value:
type: error.list
request_id: 6f3c2b1a-2d4e-4f6a-9b8c-1a2b3c4d5e6f
errors:
- code: parameter_invalid
- message: Unknown locale
+ message: No content found for locale 'fr' on article 123
schema:
"$ref": "#/components/schemas/error"
'404':
@@ -3171,18 +3523,24 @@ paths:
- name: phrase
in: query
required: false
- description: The phrase within your articles to search for.
+ description: The phrase within your articles to search for. Maximum length is 500 characters.
example: Getting started
schema:
type: string
+ maxLength: 500
- name: state
in: query
required: false
description: The state of the Articles returned. One of `published`, `draft`
- or `all`.
+ or `all`. Defaults to `published`.
example: published
schema:
type: string
+ enum:
+ - published
+ - draft
+ - all
+ default: published
- name: help_center_id
in: query
required: false
@@ -3198,10 +3556,29 @@ paths:
example: false
schema:
type: boolean
+ - name: page
+ in: query
+ required: false
+ description: The page of results to fetch. Defaults to the first page.
+ example: 1
+ schema:
+ type: integer
+ - name: per_page
+ in: query
+ required: false
+ description: The number of results to return per page. Defaults to 10.
+ example: 10
+ schema:
+ type: integer
tags:
- Articles
operationId: searchArticles
- description: You can search for articles by making a GET request to `https://api.intercom.io/articles/search`.
+ description: |
+ You can search for articles by making a GET request to `https://api.intercom.io/articles/search`.
+
+ If no articles match the search, `data` is an empty array rather than an object.
+
+ Requires the `read_articles_scope` OAuth scope.
responses:
'200':
description: Search successful
@@ -3218,25 +3595,85 @@ paths:
type: article
workspace_id: this_is_an_id92_that_should_be_at_least_4
parent_ids: []
+ folder_id: null
tags:
type: tag.list
tags: []
+ exclude_from_article_suggestions: false
+ help_center_audience: everyone
+ scheduled_publish_at: null
+ scheduled_unpublish_at: null
+ content_id: '91'
title: Title 1
description: ''
body: ''
+ body_markdown: ''
author_id: 991267521
state: draft
created_at: 1734537306
updated_at: 1734537306
url:
+ audience_ids: []
+ ai_chatbot_availability: true
+ ai_copilot_availability: true
+ ai_sales_agent_availability: true
+ created_by_id: 5017691
+ updated_by_id: 5017691
+ has_unpublished_changes: false
+ draft_updated_at: null
highlights: []
pages:
type: pages
page: 1
total_pages: 1
per_page: 10
+ No results:
+ value:
+ type: list
+ total_count: 0
+ data: []
+ pages:
+ type: pages
+ page: 1
+ total_pages: 1
+ per_page: 10
schema:
"$ref": "#/components/schemas/article_search_response"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Phrase too long:
+ value:
+ type: error.list
+ request_id: 1bc9b60b-0786-5071-8f02-7a1774b9e60c
+ errors:
+ - code: parameter_invalid
+ message: Phrase is too long
+ Invalid state:
+ value:
+ type: error.list
+ request_id: 45ab1896-953a-51ff-ab2a-208ae54fd42c
+ errors:
+ - code: parameter_mismatch
+ message: Article state must be one of published, draft, all
+ Invalid help center:
+ value:
+ type: error.list
+ request_id: 4a19af49-61cb-5405-a03e-240ff7d4e685
+ errors:
+ - code: invalid_help_center_id
+ message: Invalid Help Center ID
+ Invalid pagination:
+ value:
+ type: error.list
+ request_id: a88426cc-4cdd-5084-baf4-4db7b55bd4f9
+ errors:
+ - code: data_invalid
+ message: Pagination data must be a number greater than 0
+ schema:
+ "$ref": "#/components/schemas/error"
'401':
description: Unauthorized
content:
@@ -5220,7 +5657,7 @@ paths:
description: |
You can fetch a list of all URL redirects for a help center by making a GET request to `https://api.intercom.io/help_center/help_centers/{help_center_id}/redirects`.
- Redirects are returned in descending order on the `updated_at` attribute.
+ Redirects are returned in ascending alphabetical order of `from_url`.
Requires the `read_help_center_redirects_scope` OAuth scope.
responses:
@@ -5561,13 +5998,35 @@ paths:
in: header
schema:
"$ref": "#/components/schemas/intercom_version"
+ - name: page
+ in: query
+ required: false
+ description: The page of results to fetch. Defaults to the first page.
+ example: 1
+ schema:
+ type: integer
+ - name: per_page
+ in: query
+ required: false
+ description: The number of results to return per page. Defaults to 20. Maximum is 250.
+ example: 20
+ schema:
+ type: integer
+ maximum: 250
+ - name: help_center_id
+ in: query
+ required: false
+ description: Only return collections that belong to this Help Center.
+ example: 123
+ schema:
+ type: integer
tags:
- Help Center
operationId: listAllCollections
description: |
You can fetch a list of all collections by making a GET request to `https://api.intercom.io/help_center/collections`.
- Collections will be returned in descending order on the `updated_at` attribute. This means if you need to iterate through results then we'll show the most recently updated collections first.
+ Requires the `read_articles_scope` OAuth scope.
responses:
'200':
description: Successful
@@ -5579,9 +6038,10 @@ paths:
type: list
data:
- id: '159'
+ type: collection
workspace_id: this_is_an_id96_that_should_be_at_least_4
name: English collection title
- url: http://help-center.test/myapp-96/collection-17
+ url: http://help-center.test/myapp-96/en/collections/159-english-collection-title
order: 17
created_at: 1734537309
updated_at: 1734537309
@@ -5590,9 +6050,10 @@ paths:
parent_id:
help_center_id: 79
- id: '160'
+ type: collection
workspace_id: this_is_an_id96_that_should_be_at_least_4
name: English section title
- url: http://help-center.test/myapp-96/section-1
+ url: http://help-center.test/myapp-96/en/collections/160-english-section-title
order: 1
created_at: 1734537309
updated_at: 1734537309
@@ -5608,6 +6069,27 @@ paths:
total_pages: 1
schema:
"$ref": "#/components/schemas/collection_list"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Per page too large:
+ value:
+ type: error.list
+ request_id: a53bbddf-0c1f-5347-ad35-6e77920c9856
+ errors:
+ - code: parameter_invalid
+ message: Per Page is too big
+ Invalid help center:
+ value:
+ type: error.list
+ request_id: 806bb340-2357-544e-8fc2-8500543d72bd
+ errors:
+ - code: invalid_help_center_id
+ message: Invalid help center id
+ schema:
+ "$ref": "#/components/schemas/error"
'401':
description: Unauthorized
content:
@@ -5632,7 +6114,10 @@ paths:
tags:
- Help Center
operationId: createCollection
- description: You can create a new collection by making a POST request to `https://api.intercom.io/help_center/collections.`
+ description: |
+ You can create a new collection by making a POST request to `https://api.intercom.io/help_center/collections`.
+
+ Requires the `read_write_articles_scope` OAuth scope.
responses:
'200':
description: collection created
@@ -5642,9 +6127,10 @@ paths:
collection created:
value:
id: '165'
+ type: collection
workspace_id: this_is_an_id100_that_should_be_at_least_
name: Thanks for everything
- url: http://help-center.test/myapp-100/
+ url: http://help-center.test/myapp-100/en/collections/165-thanks-for-everything
order: 1
created_at: 1734537312
updated_at: 1734537312
@@ -5666,6 +6152,20 @@ paths:
errors:
- code: parameter_not_found
message: Name is a required parameter.
+ Invalid help center:
+ value:
+ type: error.list
+ request_id: 68bc842d-927f-5ac0-a16c-27cfa23c2f2f
+ errors:
+ - code: invalid_help_center_id
+ message: Invalid help center id
+ Parent collection not found:
+ value:
+ type: error.list
+ request_id: aefba0b8-1416-5186-9b13-2d2ea4c4eedd
+ errors:
+ - code: parameter_invalid
+ message: Parent collection doesn't exist
schema:
"$ref": "#/components/schemas/error"
'401':
@@ -5714,8 +6214,10 @@ paths:
tags:
- Help Center
operationId: retrieveCollection
- description: You can fetch the details of a single collection by making a GET
- request to `https://api.intercom.io/help_center/collections/`.
+ description: |
+ You can fetch the details of a single collection by making a GET request to `https://api.intercom.io/help_center/collections/`.
+
+ Requires the `read_articles_scope` OAuth scope.
responses:
'200':
description: Collection found
@@ -5725,9 +6227,10 @@ paths:
Collection found:
value:
id: '170'
+ type: collection
workspace_id: this_is_an_id106_that_should_be_at_least_
name: English collection title
- url: http://help-center.test/myapp-106/collection-22
+ url: http://help-center.test/myapp-106/en/collections/170-english-collection-title
order: 22
created_at: 1734537315
updated_at: 1734537315
@@ -5782,8 +6285,10 @@ paths:
tags:
- Help Center
operationId: updateCollection
- description: You can update the details of a single collection by making a PUT
- request to `https://api.intercom.io/collections/`.
+ description: |
+ You can update the details of a single collection by making a PUT request to `https://api.intercom.io/help_center/collections/`.
+
+ Requires the `read_write_articles_scope` OAuth scope.
responses:
'200':
description: successful
@@ -5793,9 +6298,10 @@ paths:
successful:
value:
id: '176'
+ type: collection
workspace_id: this_is_an_id112_that_should_be_at_least_
name: Update collection name
- url: http://help-center.test/myapp-112/collection-25
+ url: http://help-center.test/myapp-112/en/collections/176-update-collection-name
order: 25
created_at: 1734537318
updated_at: 1734537319
@@ -5805,6 +6311,34 @@ paths:
help_center_id: 87
schema:
"$ref": "#/components/schemas/collection"
+ '400':
+ description: Bad Request
+ content:
+ application/json:
+ examples:
+ Help center mismatch:
+ value:
+ type: error.list
+ request_id: 9bd76817-9f0d-5cc1-9ea0-bba489c1469c
+ errors:
+ - code: invalid_help_center_id
+ message: Supplied help center id doesn't match the collection's help center id.
+ Parent collection not found:
+ value:
+ type: error.list
+ request_id: 9a35a830-4e68-528c-bf1b-7f1d3c689edf
+ errors:
+ - code: parameter_invalid
+ message: Parent collection doesn't exist
+ Unsupported locale:
+ value:
+ type: error.list
+ request_id: 0ff611e4-cde8-52c8-8665-1f307615e359
+ errors:
+ - code: data_invalid
+ message: Locale 'xx' isn't supported.
+ schema:
+ "$ref": "#/components/schemas/error"
'404':
description: Collection Not Found
content:
@@ -5864,8 +6398,10 @@ paths:
tags:
- Help Center
operationId: deleteCollection
- description: You can delete a single collection by making a DELETE request to
- `https://api.intercom.io/collections/`.
+ description: |
+ You can delete a single collection by making a DELETE request to `https://api.intercom.io/help_center/collections/`.
+
+ Requires the `read_write_articles_scope` OAuth scope.
responses:
'200':
description: successful
@@ -5918,22 +6454,24 @@ paths:
- name: help_center_id
in: path
required: true
- description: The unique identifier for the collection which is given by Intercom.
+ description: The unique identifier for the Help Center which is given by Intercom.
example: 123
schema:
type: integer
tags:
- Help Center
operationId: retrieveHelpCenter
- description: You can fetch the details of a single Help Center by making a GET
- request to `https://api.intercom.io/help_center/help_center/`.
+ description: |
+ You can fetch the details of a single Help Center by making a GET request to `https://api.intercom.io/help_center/help_centers/`.
+
+ Requires the `read_articles_scope` OAuth scope.
responses:
'200':
- description: Collection found
+ description: Help Center found
content:
application/json:
examples:
- Collection found:
+ Help Center found:
value:
id: '93'
workspace_id: this_is_an_id124_that_should_be_at_least_
@@ -5944,14 +6482,17 @@ paths:
display_name: Intercom Help Center
url: https://help.mycompany.com
custom_domain: help.mycompany.com
+ default: true
+ locales:
+ - en
schema:
"$ref": "#/components/schemas/help_center"
'404':
- description: Collection not found
+ description: Help Center not found
content:
application/json:
examples:
- Collection not found:
+ Help Center not found:
value:
type: error.list
request_id: bbd5de60-49c4-4850-afff-1226cdaa0beb
@@ -5985,7 +6526,10 @@ paths:
tags:
- Help Center
operationId: listHelpCenters
- description: You can list all Help Centers by making a GET request to `https://api.intercom.io/help_center/help_centers`.
+ description: |
+ You can list all Help Centers by making a GET request to `https://api.intercom.io/help_center/help_centers`.
+
+ Requires the `read_articles_scope` OAuth scope.
responses:
'200':
description: Help Centers found
@@ -26929,6 +27473,11 @@ components:
- article_content
example: article_content
nullable: true
+ content_id:
+ type: string
+ readOnly: true
+ description: The unique identifier for the article's content in this locale.
+ example: '6871120'
title:
type: string
description: The title of the article.
@@ -27148,6 +27697,11 @@ components:
type: string
description: The id of the workspace which the article belongs to.
example: hfi1bx4l
+ content_id:
+ type: string
+ description: The unique identifier for the article's content. For multilingual articles,
+ this will be the identifier of the default language's content.
+ example: '6871120'
title:
type: string
description: The title of the article. For multilingual articles, this will
@@ -27229,6 +27783,19 @@ components:
example:
- 18
- 19
+ audience_ids:
+ type: array
+ nullable: true
+ description: >-
+ The list of audience IDs this article is targeted to for Fin AI Agent.
+ This field is only returned for single-language help centers. For
+ multilingual help centers it appears per locale inside `translated_content`.
+ Empty array means no audience targeting is set.
+ items:
+ type: integer
+ example:
+ - 1
+ - 2
ai_chatbot_availability:
type: boolean
description: Whether the article is available for AI Chatbot. For multilingual
@@ -27457,7 +28024,8 @@ components:
example: 5
data:
type: object
- description: An object containing the results of the search.
+ description: An object containing the results of the search. When no articles
+ match, this is an empty array instead.
properties:
articles:
type: array
@@ -27745,8 +28313,9 @@ components:
example: '300'
state:
type: string
- description: Whether this version is the currently published version of
- the article (`published`) or an earlier non-live version (`draft`).
+ description: '`published` if this is the version that is currently live;
+ `draft` for every other version, including earlier versions that are
+ no longer live and staged changes that have not been published.'
enum:
- published
- draft
@@ -27838,8 +28407,9 @@ components:
example: '300'
state:
type: string
- description: Whether this version is the currently published version of
- the article (`published`) or an earlier non-live version (`draft`).
+ description: '`published` if this is the version that is currently live;
+ `draft` for every other version, including earlier versions that are
+ no longer live and staged changes that have not been published.'
enum:
- published
- draft
@@ -28308,6 +28878,12 @@ components:
description: Collections are top level containers for Articles within the Help
Center.
properties:
+ type:
+ type: string
+ description: The type of object - `collection`.
+ enum:
+ - collection
+ example: collection
id:
type: string
description: The unique identifier for the collection which is given by
@@ -28399,8 +28975,9 @@ components:
example: help_center_redirect
from_url:
type: string
- description: The source URL that is redirected. An absolute URL within the
- help center's URL space.
+ description: The source URL that is redirected. This is an absolute URL within
+ the help center's URL space, or a relative path such as `/old-page` for
+ some existing redirects.
example: http://help-center.test/lovelyhelpcenter/old-page
locale:
type: string
@@ -32461,8 +33038,9 @@ components:
properties:
title:
type: string
- description: The title of the article.For multilingual articles, this will
- be the title of the default language's content.
+ description: The title of the article. For multilingual articles, this will
+ be the title of the default language's content. Required unless a title
+ is provided in `translated_content` under the workspace's default Help Center locale.
example: Thanks for everything
description:
type: string
@@ -32484,7 +33062,8 @@ components:
type: integer
description: The id of the author of the article. For multilingual articles,
this will be the id of the author of the default language's content. Must
- be a teammate on the help center's workspace.
+ be a teammate on the help center's workspace. Required unless an `author_id`
+ is provided in `translated_content` under the workspace's default Help Center locale.
example: 1295
state:
type: string
@@ -32500,21 +33079,27 @@ components:
description: The id of the article's parent collection or section. An article
without this field stands alone.
example: 18
- parent_type:
- type: string
- description: The type of parent, which can either be a `collection` or `section`.
- example: collection
parent_ids:
type: array
description: The ids of the parent collections to place this article in.
Send an empty array to leave the article without a collection. When
- provided, this takes precedence over `parent_id` and `parent_type`.
+ provided, this takes precedence over `parent_id`.
items:
type: integer
example:
- 18
- 19
+ locale:
+ type: string
+ description: The locale of the article's default content, for example `en`.
+ Defaults to the locale of the help center that the parent collection belongs
+ to when `parent_id` is sent, and otherwise to the default Help Center locale.
+ Must be a locale supported by the workspace's Help Center.
+ example: en
translated_content:
+ description: Content for other locales, keyed by locale code. Content for the
+ article's default locale can also be given here instead of at the top level.
+ If it is given in both places, the values must match.
"$ref": "#/components/schemas/article_translated_content"
folder_id:
type: integer
@@ -32571,17 +33156,14 @@ components:
nullable: true
description: >-
ISO 8601 timestamp at which to schedule a future unpublish of the article.
- Setting `null` cancels a pending unpublish schedule. Timestamps in the
- past or equal to the current time are rejected with 400
- `parameter_invalid` — the value must be strictly in the future. Rejected
- with 400 `parameter_invalid` if the article has never been published.
- Sending in the same request as `scheduled_publish_at` returns 400 — only
- one pending schedule per article. Empty string returns 400
+ The same request must also publish the article (`state: "published"`),
+ otherwise it returns 400 `parameter_invalid`. The value must be strictly in
+ the future; timestamps in the past or equal to the current time are rejected
+ with 400 `parameter_invalid`. Setting `null` cancels a pending unpublish
+ schedule. Sending in the same request as `scheduled_publish_at` returns 400
+ — only one pending schedule per article. Empty string returns 400
`parameter_invalid`.
example: '2026-12-31T17:00:00Z'
- required:
- - title
- - author_id
create_internal_article_request:
description: You can create an Internal Article
type: object
@@ -32656,13 +33238,19 @@ components:
name:
type: string
description: The name of the collection. For multilingual collections, this
- will be the name of the default language's content.
+ will be the name of the default language's content. Required unless a
+ name is provided in `translated_content` under the workspace's default Help Center locale.
example: collection 51
description:
type: string
description: The description of the collection. For multilingual collections,
this will be the description of the default language's content.
example: English description
+ icon:
+ type: string
+ description: The icon of the collection, for example `book-bookmark`. Defaults
+ to `book-bookmark`.
+ example: book-bookmark
translated_content:
nullable: true
"$ref": "#/components/schemas/group_translated_content"
@@ -32678,8 +33266,6 @@ components:
description: The id of the help center where the collection will be created.
If `null` then it will be created in the default help center.
example: '123'
- required:
- - name
create_contact_request:
description: Payload to create a contact
type: object
@@ -39246,12 +39832,12 @@ components:
type: integer
format: date-time
nullable: true
- description: The time when the tag was applied to the object. Only present when the tag is returned as part of a tagging operation on a contact, conversation, or ticket.
+ description: The time when the tag was applied to the object. Only present when the tag is returned as part of a tagging operation on a contact, conversation, ticket, article, internal article, or content snippet.
example: 1663597223
applied_by:
type: object
nullable: true
- description: The admin who applied the tag. Only present when the tag is returned as part of a tagging operation on a contact, conversation, or ticket.
+ description: The admin who applied the tag. Only present when the tag is returned as part of a tagging operation on a contact, conversation, ticket, article, internal article, or content snippet.
allOf:
- "$ref": "#/components/schemas/reference"
tag_basic:
@@ -40384,6 +40970,13 @@ components:
example:
- en
- fr
+ author_id:
+ type: integer
+ description: The id of the teammate to publish as. This is only used when the
+ access token is not associated with a teammate, and is then required; omitting
+ it returns 400 `parameter_not_found`. Otherwise the authenticating teammate
+ is used. Must be a teammate on the workspace.
+ example: 1295
update_article_request:
description: You can Update an Article
type: object
@@ -40392,7 +40985,7 @@ components:
properties:
title:
type: string
- description: The title of the article.For multilingual articles, this will
+ description: The title of the article. For multilingual articles, this will
be the title of the default language's content.
example: Thanks for everything
description:
@@ -40423,27 +41016,25 @@ components:
Omitting this field leaves the publish state unchanged, so a draft stays
a draft and an edit to a published article goes live immediately unless
that article already has a pending draft or a scheduled publish time is
- set in the same request. The `PUT /articles/{id}/draft` endpoint ignores
- this field and always stages a draft. For multilingual articles, this
- will be the state of the default language's content.
+ set in the same request. For multilingual articles, this will be the state
+ of the default language's content.
enum:
- published
- draft
example: draft
parent_id:
type: string
- description: The id of the article's parent collection or section. An article
- without this field stands alone.
+ nullable: true
+ description: >-
+ The id of the collection or section to move the article into. Omitting this
+ field or sending `null` leaves the article's parent unchanged. Send `home` to
+ remove the article from its collection so that it stands alone.
example: '18'
- parent_type:
- type: string
- description: The type of parent, which can either be a `collection` or `section`.
- example: collection
parent_ids:
type: array
description: The ids of the parent collections to place this article in.
Send an empty array to remove the article from all collections. When
- provided, this takes precedence over `parent_id` and `parent_type`.
+ provided, this takes precedence over `parent_id`.
items:
type: integer
example:
@@ -40507,13 +41098,13 @@ components:
nullable: true
description: >-
ISO 8601 timestamp at which to schedule a future unpublish of the article.
- Setting `null` cancels a pending unpublish schedule. Timestamps in the
- past or equal to the current time are rejected with 400
- `parameter_invalid` — the value must be strictly in the future. Rejected
- with 400 `parameter_invalid` if the article has never been published.
- Sending in the same request as `scheduled_publish_at` returns 400 — only
- one pending schedule per article. Empty string returns 400
- `parameter_invalid`.
+ The article must already be published; setting `state: "published"` in the
+ same request does not count, and the request returns 400 `parameter_invalid`.
+ Combining with `state: "draft"` also returns 400 `parameter_invalid`. The value must be strictly in the future;
+ timestamps in the past or equal to the current time are rejected with 400
+ `parameter_invalid`. Setting `null` cancels a pending unpublish schedule.
+ Sending in the same request as `scheduled_publish_at` returns 400 — only one
+ pending schedule per article. Empty string returns 400 `parameter_invalid`.
example: '2026-12-31T17:00:00Z'
update_internal_article_request:
description: You can Update an Internal Article
@@ -40588,15 +41179,28 @@ components:
description: The description of the collection. For multilingual collections,
this will be the description of the default language's content.
example: English description
+ icon:
+ type: string
+ description: The icon of the collection, for example `book-bookmark`.
+ example: book-bookmark
translated_content:
nullable: true
"$ref": "#/components/schemas/group_translated_content"
parent_id:
type: string
nullable: true
- description: The id of the parent collection. If `null` then it will be
- updated as the first level collection.
+ description: >-
+ The id of the parent collection to move the collection into. Omitting this
+ field or sending `null` leaves the collection where it is. Send `home` to move
+ it to the first level.
example: '6871118'
+ help_center_id:
+ type: integer
+ nullable: true
+ description: Checked against the collection's Help Center but not applied, so it
+ can't move the collection to another Help Center.
+ example: 123
+
update_contact_request:
description: You can update a contact
type: object