Creates a new article under the specified category in the workspace's default language. The returned data.id is the new article's articleId to use in subsequent calls.
The slug is auto-generated from the title unless an explicit slug is supplied; explicit slugs must be unique within the workspace.
Not idempotent — retrying after a 5xx can create duplicates. Before retrying, list articles in the target category (GET /v2/projectversions/{projectVersionId}/articles) and check whether your new article already exists.
The API token used for authenticating the request. This must be passed as a header parameter. To generate an API token, go to Settings > Knowledge base portal > API tokens. This token must correspond to a valid workspace and permission level.
The article creation payload. The categoryId field is required (fetch via GET /v2/projectversions/{projectVersionId}/categories). When contentType is omitted, the project's default content type is used.
The smallest viable payload: title, content, and the destination category. The slug is auto-generated from the title; contentType defaults to the project's default editor.
{
"title": "Getting started with our SDK",
"content": "## Install\n\n`npm install @example/sdk`\n\n## Initialize\n\n```js\nconst client = new Client({ apiKey: 'YOUR_KEY' });\n```",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": null,
"editor_version": null,
"slug": null
}Create a Block-editor article with a custom slug and ordering. contentType is set explicitly to override the project default; slug must be unique within the workspace.
{
"title": "Configure single sign-on with Okta",
"content": "{\"blocks\":[{\"type\":\"heading\",\"data\":{\"level\":2,\"text\":\"Prerequisites\"}},{\"type\":\"paragraph\",\"data\":{\"text\":\"You need an Okta admin account…\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 5,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": null,
"slug": "configure-single-sign-on-with-okta"
}Opt the new article into Editor 3.0 (Beta) via editorVersion. Honoured only when the project is enabled for the Editor 3.0 beta; otherwise the request is rejected. Created as a Block-editor article.
{
"title": "Try the new editor",
"content": "{\"blocks\":[{\"type\":\"paragraph\",\"data\":{\"text\":\"Authored in Editor 3.0.\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": 3,
"slug": null
}Create a WYSIWYG article. The content field carries HTML directly.
{
"title": "Release notes — Q4",
"content": "This release introduces…
",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 1,
"editor_version": null,
"slug": null
}The title of the article
The content of the article, for any Editor type, use this property
The ID of the category where the article will be created, CategoryId will be null for custom pages
The project version ID in which the article will be created
The position of the article in the category tree (By default, it will be placed at the bottom of the category)
The ID of the team account that will be marked as a contributor of the article
0 - Markdown; 1 - WYSIWYG(HTML); 2 - Advanced WYSIWYG
The editor to author the article in. 2 - classic editor; 3 - Editor 3.0. In projects where the Editor 3.0 flow is enabled, the article defaults to Editor 3.0 (3) when this is omitted; pass 2 for the classic editor. In projects without the V3 flow, a value of 3 is rejected.
The smallest viable payload: title, content, and the destination category. The slug is auto-generated from the title; contentType defaults to the project's default editor.
{
"title": "Getting started with our SDK",
"content": "## Install\n\n`npm install @example/sdk`\n\n## Initialize\n\n```js\nconst client = new Client({ apiKey: 'YOUR_KEY' });\n```",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": null,
"editor_version": null,
"slug": null
}Create a Block-editor article with a custom slug and ordering. contentType is set explicitly to override the project default; slug must be unique within the workspace.
{
"title": "Configure single sign-on with Okta",
"content": "{\"blocks\":[{\"type\":\"heading\",\"data\":{\"level\":2,\"text\":\"Prerequisites\"}},{\"type\":\"paragraph\",\"data\":{\"text\":\"You need an Okta admin account…\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 5,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": null,
"slug": "configure-single-sign-on-with-okta"
}Opt the new article into Editor 3.0 (Beta) via editorVersion. Honoured only when the project is enabled for the Editor 3.0 beta; otherwise the request is rejected. Created as a Block-editor article.
{
"title": "Try the new editor",
"content": "{\"blocks\":[{\"type\":\"paragraph\",\"data\":{\"text\":\"Authored in Editor 3.0.\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": 3,
"slug": null
}Create a WYSIWYG article. The content field carries HTML directly.
{
"title": "Release notes — Q4",
"content": "This release introduces…
",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 1,
"editor_version": null,
"slug": null
}The title of the article
The content of the article, for any Editor type, use this property
The ID of the category where the article will be created, CategoryId will be null for custom pages
The project version ID in which the article will be created
The position of the article in the category tree (By default, it will be placed at the bottom of the category)
The ID of the team account that will be marked as a contributor of the article
0 - Markdown; 1 - WYSIWYG(HTML); 2 - Advanced WYSIWYG
The editor to author the article in. 2 - classic editor; 3 - Editor 3.0. In projects where the Editor 3.0 flow is enabled, the article defaults to Editor 3.0 (3) when this is omitted; pass 2 for the classic editor. In projects without the V3 flow, a value of 3 is rejected.
The smallest viable payload: title, content, and the destination category. The slug is auto-generated from the title; contentType defaults to the project's default editor.
{
"title": "Getting started with our SDK",
"content": "## Install\n\n`npm install @example/sdk`\n\n## Initialize\n\n```js\nconst client = new Client({ apiKey: 'YOUR_KEY' });\n```",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": null,
"editor_version": null,
"slug": null
}Create a Block-editor article with a custom slug and ordering. contentType is set explicitly to override the project default; slug must be unique within the workspace.
{
"title": "Configure single sign-on with Okta",
"content": "{\"blocks\":[{\"type\":\"heading\",\"data\":{\"level\":2,\"text\":\"Prerequisites\"}},{\"type\":\"paragraph\",\"data\":{\"text\":\"You need an Okta admin account…\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 5,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": null,
"slug": "configure-single-sign-on-with-okta"
}Opt the new article into Editor 3.0 (Beta) via editorVersion. Honoured only when the project is enabled for the Editor 3.0 beta; otherwise the request is rejected. Created as a Block-editor article.
{
"title": "Try the new editor",
"content": "{\"blocks\":[{\"type\":\"paragraph\",\"data\":{\"text\":\"Authored in Editor 3.0.\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": 3,
"slug": null
}Create a WYSIWYG article. The content field carries HTML directly.
{
"title": "Release notes — Q4",
"content": "This release introduces…
",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 1,
"editor_version": null,
"slug": null
}The title of the article
The content of the article, for any Editor type, use this property
The ID of the category where the article will be created, CategoryId will be null for custom pages
The project version ID in which the article will be created
The position of the article in the category tree (By default, it will be placed at the bottom of the category)
The ID of the team account that will be marked as a contributor of the article
0 - Markdown; 1 - WYSIWYG(HTML); 2 - Advanced WYSIWYG
The editor to author the article in. 2 - classic editor; 3 - Editor 3.0. In projects where the Editor 3.0 flow is enabled, the article defaults to Editor 3.0 (3) when this is omitted; pass 2 for the classic editor. In projects without the V3 flow, a value of 3 is rejected.
The smallest viable payload: title, content, and the destination category. The slug is auto-generated from the title; contentType defaults to the project's default editor.
{
"title": "Getting started with our SDK",
"content": "## Install\n\n`npm install @example/sdk`\n\n## Initialize\n\n```js\nconst client = new Client({ apiKey: 'YOUR_KEY' });\n```",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": null,
"editor_version": null,
"slug": null
}Create a Block-editor article with a custom slug and ordering. contentType is set explicitly to override the project default; slug must be unique within the workspace.
{
"title": "Configure single sign-on with Okta",
"content": "{\"blocks\":[{\"type\":\"heading\",\"data\":{\"level\":2,\"text\":\"Prerequisites\"}},{\"type\":\"paragraph\",\"data\":{\"text\":\"You need an Okta admin account…\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 5,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": null,
"slug": "configure-single-sign-on-with-okta"
}Opt the new article into Editor 3.0 (Beta) via editorVersion. Honoured only when the project is enabled for the Editor 3.0 beta; otherwise the request is rejected. Created as a Block-editor article.
{
"title": "Try the new editor",
"content": "{\"blocks\":[{\"type\":\"paragraph\",\"data\":{\"text\":\"Authored in Editor 3.0.\"}}]}",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 2,
"editor_version": 3,
"slug": null
}Create a WYSIWYG article. The content field carries HTML directly.
{
"title": "Release notes — Q4",
"content": "This release introduces…
",
"category_id": "5b291e6b-fa40-4ab9-941e-f8fffc23b376",
"project_version_id": "46f48bc7-760f-4b07-b2d2-fce4aa8ba234",
"order": 0,
"user_id": "f11efc6f-e968-4e95-82eb-85ad61559de8",
"content_type": 1,
"editor_version": null,
"slug": null
}The title of the article
The content of the article, for any Editor type, use this property
The ID of the category where the article will be created, CategoryId will be null for custom pages
The project version ID in which the article will be created
The position of the article in the category tree (By default, it will be placed at the bottom of the category)
The ID of the team account that will be marked as a contributor of the article
0 - Markdown; 1 - WYSIWYG(HTML); 2 - Advanced WYSIWYG
The editor to author the article in. 2 - classic editor; 3 - Editor 3.0. In projects where the Editor 3.0 flow is enabled, the article defaults to Editor 3.0 (3) when this is omitted; pass 2 for the classic editor. In projects without the V3 flow, a value of 3 is rejected.
Operation succeeded. Inspect the response envelope's success flag and the result/data payload.
The article has been created under the following category. you can use the article Id to view the article in the portal.
{
"data": {
"id": "925b69b9-f241-4d89-9e3e-208a98dfc8eb",
"title": "Sample Article",
"public_version": 0,
"latest_version": 1,
"language_code": null,
"hidden": false,
"status": 0,
"order": 3,
"slug": "sample-article",
"content_type": null,
"translation_option": 0,
"is_shared_article": false,
"created_at": null,
"modified_at": null,
"current_workflow_status_id": null
},
"extension_data": null,
"success": true,
"errors": [],
"warnings": [],
"information": []
}Create article response data
The ID of the article
The article title
The article version number(revision) that is currently published
The latest version number of this article
The default language code
Indicates if the article is visible on the site
The status of the article: 0 - Draft, 3 - Published
The position of the article inside the parent category
The slug of the article
The content type of the article: Markdown = 0, Wysiwyg = 1, Block = 2
The translation status of the document. Valid values: 0 - None, 1 - Need Translation, 2 - Translated, 3 - In Progress
True indicates that the article is shared
Article created date time
Article modified date time
Current Workflow status of the article
Extension data for customer API response
Indicates the status of the API response. A value of true signifies that the request was successfully processed, while false indicates a failure or error occurred.
A list of errors encountered during the API request. Each error object provides details about the problem, including an error code and a message explaining the issue. This field is populated when the request fails or encounters issues.
One structured error in a response's Document360.Core.Messages.Core.BaseResponse.errors array.
This is the Extension data object
A technical trace showing where the error occurred within the system. Intended for backend debugging.
A clear message explaining what caused the error. This helps quickly understand what went wrong.
A short, predefined code that identifies the type of error. Useful for logging the error or raising a support request.
Any structured metadata for the error object.
A list of warnings generated during the API request. These are non-critical issues or recommendations that might affect the request but won't stop it from processing. Each warning object provides a message to inform the user of potential problems.
One non-fatal warning attached to an otherwise-successful response.
Extension Data for customer Api warning
A plain message that describes the warning and helps understand what should be reviewed.
A short, predefined code that uniquely identifies the warning type.
Contains additional non-critical information relevant to the request or response. This field provides extra details that might assist in understanding the context of the API response but is not essential for processing.
One informational message in a response's Document360.Core.Messages.Core.BaseResponse.information array. Non-error context the SPA may surface to the user.
Extension data for customer Api response information
A plain message offering helpful context about the response, such as confirmation of fallback logic or skipped operations.
The request body or query parameters failed validation. Inspect errors[].description for the offending fields.
Kindly check your user Id and perform the task again. Find your user Id at /v2/Teams.
{
"extension_data": null,
"success": false,
"errors": [
{
"extension_data": null,
"stack_trace": null,
"description": "The user with id 'f11efc6f-e968-4e95-82eb-85ad61559de81' does not exist in your project.",
"error_code": "400",
"custom_data": null
}
],
"warnings": [],
"information": []
}Kindly check the category_id from /v2/ProjectVersions//categories and perform the task again.
{
"extension_data": null,
"success": false,
"errors": [
{
"extension_data": null,
"stack_trace": null,
"description": "Unable to find specified parent category with an id 5b291e6b-fa40-4ab9-941e-f8fffc23b3761.",
"error_code": "400",
"custom_data": null
}
],
"warnings": [],
"information": []
}Kindly check the project_version_id from /v2/ProjectVersions and perform the task again.
{
"extension_data": null,
"success": false,
"errors": [
{
"extension_data": null,
"stack_trace": null,
"description": "The supplied project version id 46f48bc7-760f-4b07-b2d2-fce4aa8ba2349 does not exist in your project.",
"error_code": "400",
"custom_data": null
}
],
"warnings": [],
"information": []
}Kindly check the title is empty or null, and perform the task again.
{
"extension_data": null,
"success": false,
"errors": [
{
"extension_data": null,
"stack_trace": null,
"description": "The Title field is required.",
"error_code": "400",
"custom_data": null
}
],
"warnings": [],
"information": []
}Extension data for customer API response
Indicates the status of the API response. A value of true signifies that the request was successfully processed, while false indicates a failure or error occurred.
A list of errors encountered during the API request. Each error object provides details about the problem, including an error code and a message explaining the issue. This field is populated when the request fails or encounters issues.
One structured error in a response's Document360.Core.Messages.Core.BaseResponse.errors array.
This is the Extension data object
A technical trace showing where the error occurred within the system. Intended for backend debugging.
A clear message explaining what caused the error. This helps quickly understand what went wrong.
A short, predefined code that identifies the type of error. Useful for logging the error or raising a support request.
Any structured metadata for the error object.
A list of warnings generated during the API request. These are non-critical issues or recommendations that might affect the request but won't stop it from processing. Each warning object provides a message to inform the user of potential problems.
One non-fatal warning attached to an otherwise-successful response.
Extension Data for customer Api warning
A plain message that describes the warning and helps understand what should be reviewed.
A short, predefined code that uniquely identifies the warning type.
Contains additional non-critical information relevant to the request or response. This field provides extra details that might assist in understanding the context of the API response but is not essential for processing.
One informational message in a response's Document360.Core.Messages.Core.BaseResponse.information array. Non-error context the SPA may surface to the user.
Extension data for customer Api response information
A plain message offering helpful context about the response, such as confirmation of fallback logic or skipped operations.
Authentication failed — the api_token header is missing, malformed, or has been revoked.
Extension data for customer API response
Indicates the status of the API response. A value of true signifies that the request was successfully processed, while false indicates a failure or error occurred.
A list of errors encountered during the API request. Each error object provides details about the problem, including an error code and a message explaining the issue. This field is populated when the request fails or encounters issues.
One structured error in a response's Document360.Core.Messages.Core.BaseResponse.errors array.
This is the Extension data object
A technical trace showing where the error occurred within the system. Intended for backend debugging.
A clear message explaining what caused the error. This helps quickly understand what went wrong.
A short, predefined code that identifies the type of error. Useful for logging the error or raising a support request.
Any structured metadata for the error object.
A list of warnings generated during the API request. These are non-critical issues or recommendations that might affect the request but won't stop it from processing. Each warning object provides a message to inform the user of potential problems.
One non-fatal warning attached to an otherwise-successful response.
Extension Data for customer Api warning
A plain message that describes the warning and helps understand what should be reviewed.
A short, predefined code that uniquely identifies the warning type.
Contains additional non-critical information relevant to the request or response. This field provides extra details that might assist in understanding the context of the API response but is not essential for processing.
One informational message in a response's Document360.Core.Messages.Core.BaseResponse.information array. Non-error context the SPA may surface to the user.
Extension data for customer Api response information
A plain message offering helpful context about the response, such as confirmation of fallback logic or skipped operations.
Rate limit exceeded for this api_token. Wait for the duration in the Retry-After header before retrying.
Extension data for customer API response
Indicates the status of the API response. A value of true signifies that the request was successfully processed, while false indicates a failure or error occurred.
A list of errors encountered during the API request. Each error object provides details about the problem, including an error code and a message explaining the issue. This field is populated when the request fails or encounters issues.
One structured error in a response's Document360.Core.Messages.Core.BaseResponse.errors array.
This is the Extension data object
A technical trace showing where the error occurred within the system. Intended for backend debugging.
A clear message explaining what caused the error. This helps quickly understand what went wrong.
A short, predefined code that identifies the type of error. Useful for logging the error or raising a support request.
Any structured metadata for the error object.
A list of warnings generated during the API request. These are non-critical issues or recommendations that might affect the request but won't stop it from processing. Each warning object provides a message to inform the user of potential problems.
One non-fatal warning attached to an otherwise-successful response.
Extension Data for customer Api warning
A plain message that describes the warning and helps understand what should be reviewed.
A short, predefined code that uniquely identifies the warning type.
Contains additional non-critical information relevant to the request or response. This field provides extra details that might assist in understanding the context of the API response but is not essential for processing.
One informational message in a response's Document360.Core.Messages.Core.BaseResponse.information array. Non-error context the SPA may surface to the user.
Extension data for customer Api response information
A plain message offering helpful context about the response, such as confirmation of fallback logic or skipped operations.