--- title: "Update a published article" slug: "update-a-published-article" description: "Streamline article updates with the auto_fork option in v3. Easily create drafts, apply edits, and publish with a simple PATCH request." updated: 2026-09-05T18:25:00Z published: 2026-09-05T18:25:00Z canonical: "apidocs.document360.com/update-a-published-article" --- > ## Documentation Index > Fetch the complete documentation index at: https://apidocs.document360.com/llms.txt > Use this file to discover all available pages before exploring further. # Update a published article 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. Note 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" } } ``` Tip Only the fields present in the request are changed. Omit any field you do not want to modify. Note The body must contain at least one recognized 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`. ## Related - [Create and publish an article](/create-and-publish-an-article.md) - [Update an article](/update-an-article.md) - [Fork an article version](/fork-an-article-version.md)