Once an article is published, its content is locked to the published version. To change it you create a new draft version, apply your edits, and publish again. In v3 this is streamlined with the auto_fork option.
To edit a published article, send your update with auto_fork: true — the API creates a new draft version and applies the change to it in one call. Editing a published version without auto_fork returns 422.
Recommended: update with auto_fork
Send a PATCH request with the fields you want to change and auto_fork: true. Only the fields you include are modified.
PATCH /v3/projects/{project_id}/articles/{article_id}?lang_code=en
curl --request PATCH "https://apihub.document360.io/v3/projects/{project_id}/articles/{article_id}?lang_code=en" \
--header "X-API-Key: YOUR_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"title": "Getting Started with Single Sign-On (Updated)",
"content": "# Introduction\nThis updated guide walks you through configuring SSO.",
"auto_fork": true
}'
| Field | Description |
|---|---|
title |
New article title. |
content |
New body, in Markdown or HTML per the article's content type. |
category_id |
Move the article to a different category. |
order |
Reposition the article within its category. |
hidden |
true or false to hide or show the article. |
version_number |
Target a specific draft version to update. |
auto_fork |
When true and the target version is published, a new draft is created automatically. |
translation_option |
Translation state for the language. |
A successful update returns 200 OK. When auto_fork created a new draft, the response shows the new draft version_number, and the previously published version remains under public_version.
{
"success": true,
"request_id": "req_abc123def456",
"data": {
"id": "9a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d",
"title": "Getting Started with Single Sign-On (Updated)",
"version_number": 3,
"public_version": 2,
"latest_version": 3,
"status": "draft",
"lang_code": "en"
}
}
Only the fields present in the request are changed. Omit any field you do not want to modify.
The body must contain at least one recognised field, or the request returns 422. Field names are case-sensitive and use snake_case — a misspelled field is not silently ignored.
Alternative: fork explicitly, then update
If you prefer to control versioning yourself, fork the article first, then update the resulting draft, then publish it.
1. Fork the published version into a new draft. This returns 201 Created with the new draft version.
POST /v3/projects/{project_id}/articles/{article_id}/fork?lang_code=en
# Body is optional. Omit it to fork the currently published version,
# or specify a version:
{ "version_number": 2 }
2. Update the new draft (without auto_fork, since it is already a draft).
3. Publish it using POST /v3/projects/{project_id}/articles/{article_id}/publish with the new version_number.