Asynchronously run a bulk action over up to 1,000 Knowledge Hub content items.
Six actions are supported:
publishandunpublish— apply toarticle_contentonly.delete— permanently delete content (excludes synced sources andexternal_content).set_availability— toggle Fin AI Agent, Copilot, and Sales Agent availability flags.set_audience— manage segment membership on content.update_tags— apply and/or remove existing tags on content. Unlike the other actions,update_tagsaddresses articles by the parentarticleid, notarticle_content. Tags must already exist and not be archived; supply at least one ofadd_tag_ids/remove_tag_ids.
The endpoint validates the request and returns 202.
Important — 202 Accepted does not guarantee every item was processed. Two classes of items are silently excluded:
- Unsupported content type for the action. Items whose
typeis not in the action's allowlist (see theactiondescription) are not included in the bulk operation. No per-item error is returned. - Synced content on
delete. Articles imported from a synced source (Confluence, Notion, Zendesk, Salesforce Knowledge, etc.) are not deletable through this endpoint — they can only be removed by disconnecting the underlying import source.
For compliance-driven deletions (GDPR right-to-erasure, etc.), do not rely on the 202 Accepted response alone. Verify removal by fetching each item directly (for example, GET /articles/{id} for article content) or disconnect the import source for synced content. A future Preview release will expose a polling job resource with per-item updated, unchanged, skipped, and failed buckets to make these outcomes explicit.
Requires the write_content OAuth scope. Set Intercom-Version: preview.
Preview Intercom API version. Used for closed beta endpoints or other features under managed availability.
The bulk action to perform. Allowed content_ids[].type values vary per action:
publish,unpublish:article_contentdelete:article_content,content_snippet,file_source_content,internal_articleset_availability,set_audience:article_content,content_snippet,external_content,file_source_content,internal_articleupdate_tags:article(the parent Article id, notarticle_content),content_snippet,external_content,file_source_content,internal_article
Required when action is set_availability. Each field is optional — only the properties present in the request are toggled.
- The production API serverhttps://api.intercom.io/content/bulk_actions
- The european API serverhttps://api.eu.intercom.io/content/bulk_actions
- The australian API serverhttps://api.au.intercom.io/content/bulk_actions
- Publish articles
- Unpublish articles
- Delete content across types
- Toggle Fin AI Agent on, Copilot off
- Add and remove segments
- Apply and remove tags on an article
curl -i -X POST \
https://api.intercom.io/content/bulk_actions \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: preview' \
-d '{
"action": "publish",
"content_ids": [
{
"type": "article_content",
"id": "12345678"
},
{
"type": "article_content",
"id": "12345679"
}
]
}'{ "type": "content_bulk_action", "status": "queued" }