Skip to content

Retrieve an article draft

Request

Fetch the staged draft of a published article by making a GET request to https://api.intercom.io/articles/<id>/draft. The response is the article rendered with its draft content, leaving the live article untouched.

A draft exists only when a published article has unpublished changes staged on top of it. Returns 404 with an empty response body when the article has no staged draft. An article ID that doesn't exist returns a 404 with the standard error body.

Requires the read_articles_scope OAuth scope.

Security
bearerAuth
Path
idintegerrequired

The unique identifier for the article which is given by Intercom.

Example:123
Headers
Intercom-Versionstring(intercom_version)

Intercom API version.
If you omit the header, the API uses the version set in your app package, and 1.0 if none is set.

Enum:"1.0""1.1""1.2""1.3""1.4""2.0""2.1""2.2""2.3""2.4"
Example:2.17
curl -i -X GET \
  https://api.intercom.io/articles/123/draft \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Intercom-Version: 2.17'

Responses

Article draft found

Bodyapplication/json
typestring

The type of object - article.

Default:"article"
Value:"article"
Example:"article"
idstring

The unique identifier for the article which is given by Intercom.

Example:"6871119"
workspace_idstring

The id of the workspace which the article belongs to.

Example:"hfi1bx4l"
content_idstring

The unique identifier for the article's content. For multilingual articles, this will be the identifier of the default language's content.

Example:"6871120"
titlestring

The title of the article. For multilingual articles, this will be the title of the default language's content.

Example:"Default language title"
descriptionstring or null

The description of the article. For multilingual articles, this will be the description of the default language's content.

Example:"Default language description"
bodystring or null

The body of the article in HTML. For multilingual articles, this will be the body of the default language's content.

Example:"Default language body in html"
body_markdownstring or null

The body of the article in markdown. For multilingual articles, this will be the body of the default language's content.

Example:"# Default language title\n\nDefault language body in markdown\n"
author_idinteger

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.

Example:"5017691"
statestring

Whether the article is published or is a draft. For multilingual articles, this will be the state of the default language's content.

Default:"draft"
Enum:"published""draft"
Example:"published"
created_atinteger, (date-time)

The time when the article was created. For multilingual articles, this will be the timestamp of creation of the default language's content in seconds.

Example:1672928359
updated_atinteger, (date-time)

The time when the article was last updated. For multilingual articles, this will be the timestamp of last update of the default language's content in seconds.

Example:1672928610
has_unpublished_changesboolean

Whether the published article has unpublished changes staged as a draft on top of its live content. For multilingual articles this reflects the default language's content; a pure draft (never published) reports false.

Example:false
draft_updated_atinteger or null, (date-time)

The time, in seconds, when the staged draft was last edited, or null when there is no staged draft.

Example:1672928610
urlstring or null

The URL of the article. For multilingual articles, this will be the URL of the default language's content.

Example:"http://intercom.test/help/en/articles/3-default-language"
parent_idsArray of integers

The ids of the article's parent collections or sections. An article without this field stands alone.

Example:
[ 18, 19 ]
audience_idsArray of integers or null

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.

Example:
[ 1, 2 ]
ai_chatbot_availabilityboolean

Whether the article is available for AI Chatbot. For multilingual articles, this will be the value of the default language's content.

Example:true
ai_copilot_availabilityboolean

Whether the article is available for AI Copilot. For multilingual articles, this will be the value of the default language's content.

Example:true
ai_sales_agent_availabilityboolean

Whether the article is available for AI Sales Agent. For multilingual articles, this will be the value of the default language's content.

Example:true
created_by_idinteger or nullread-only

The ID of the teammate who created the article. For multilingual articles, this will be the creator of the default language's content.

Example:5017691
updated_by_idinteger or nullread-only

The ID of the teammate who last updated the article. For multilingual articles, this will be the last editor of the default language's content.

Example:5017691
exclude_from_article_suggestionsbooleanread-only

Whether the article is excluded from Fin AI Agent article suggestions.

Example:false
help_center_audiencestring or nullread-only

The audience that can view this article in the Help Center. everyone means all users and visitors can view it; restricted indicates a custom audience ruleset. For multilingual articles, this is the article-level audience.

Enum:"everyone""all_users""all_visitors""all_leads""all_visitors_and_leads""restricted"
Example:"everyone"
scheduled_publish_atinteger or null, (date-time)read-only

The Unix timestamp (in seconds) at which the article is scheduled to be published. null when no publish is scheduled. Mutually exclusive with scheduled_unpublish_at — at most one pending schedule exists per article.

Example:1769443200
scheduled_unpublish_atinteger or null, (date-time)read-only

The Unix timestamp (in seconds) at which the article is scheduled to be unpublished. null when no unpublish is scheduled. Mutually exclusive with scheduled_publish_at — at most one pending schedule exists per article.

Example:1769443200
default_localestring

The default locale of the help center. This field is only returned for multilingual help centers.

Example:"en"
translated_contentobject or null(Article Translated Content)

The Translated Content of an Article. The keys are the locale codes and the values are the translated content of the article.

tagsobject(Tags)

A list of tags objects associated with a conversation, article or internal article

folder_idinteger or null

The ID of the folder this article belongs to, or null if not in a folder.

Example:6
statisticsobject or null(Article Statistics)

The statistics of an article.

Response
{ "id": "45", "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": "<p class=\"no-margin\">Unpublished changes staged as a draft</p>", "body_markdown": "Unpublished changes staged as a draft\n", "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": true, "draft_updated_at": 1734537292 }