curl --request POST \
--url 'https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public' \
--header 'Authorization: Bearer fini_your_api_key'
const response = await fetch('https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public', {
method: 'POST',
headers: {
Authorization: 'Bearer fini_your_api_key'
}
});
const data = await response.json();
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
data = response.json()
{
"id": "4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3",
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "Use this article for refund eligibility questions.",
"questions": [
"Can I get a refund?"
],
"keywords": [
"refund",
"billing"
],
"escalation": false,
"parentFolderId": "0f4da4fe-b2ae-4787-8c3b-854f36d9eb1b",
"isDraft": false,
"createdBy": "7d8b62e3-0c36-4f3b-9988-6e6f4f1fbf67",
"updatedBy": "7d8b62e3-0c36-4f3b-9988-6e6f4f1fbf67",
"origin": "API_CREATED",
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
Articles
Create article draft
Create a draft from an existing live article.
POST
/
v2
/
hc-articles
/
{id}
/
draft
/
public
curl --request POST \
--url 'https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public' \
--header 'Authorization: Bearer fini_your_api_key'
const response = await fetch('https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public', {
method: 'POST',
headers: {
Authorization: 'Bearer fini_your_api_key'
}
});
const data = await response.json();
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
data = response.json()
{
"id": "4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3",
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "Use this article for refund eligibility questions.",
"questions": [
"Can I get a refund?"
],
"keywords": [
"refund",
"billing"
],
"escalation": false,
"parentFolderId": "0f4da4fe-b2ae-4787-8c3b-854f36d9eb1b",
"isDraft": false,
"createdBy": "7d8b62e3-0c36-4f3b-9988-6e6f4f1fbf67",
"updatedBy": "7d8b62e3-0c36-4f3b-9988-6e6f4f1fbf67",
"origin": "API_CREATED",
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
Use this route to fork an existing live article into a draft for review.
Headers
string
required
Bearer token containing your Fini workspace API key. Format:
Bearer fini_... The key needs write scope.string
required
application/jsonPath parameters
string
required
Original live article ID to fork from.
Body parameters
This route uses the same required content fields as Create article.active, public, and origin are also accepted here. Public API requests may set origin to API_CREATED or FINI_SCOUT; if omitted, API-key and OAuth requests default to API_CREATED.
Response
Returns the created draft article object. See Manage knowledge for the shared article fields.curl --request POST \
--url 'https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public' \
--header 'Authorization: Bearer fini_your_api_key'
const response = await fetch('https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public', {
method: 'POST',
headers: {
Authorization: 'Bearer fini_your_api_key'
}
});
const data = await response.json();
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/draft/public",
headers={"Authorization": "Bearer fini_your_api_key"},
)
data = response.json()
{
"id": "4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3",
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "Use this article for refund eligibility questions.",
"questions": [
"Can I get a refund?"
],
"keywords": [
"refund",
"billing"
],
"escalation": false,
"parentFolderId": "0f4da4fe-b2ae-4787-8c3b-854f36d9eb1b",
"isDraft": false,
"createdBy": "7d8b62e3-0c36-4f3b-9988-6e6f4f1fbf67",
"updatedBy": "7d8b62e3-0c36-4f3b-9988-6e6f4f1fbf67",
"origin": "API_CREATED",
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
For drafts created from an existing live article, the response typically includes
originalArticleId, originalArticleVersion, and isDraftPublished: false.If the source live article does not exist, the current route returns
null instead of a 404.Errors
400 Bad Request
400 Bad Request
The request body is malformed or one of the required arrays is empty.
401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid.
403 Forbidden
403 Forbidden
The API key does not include the
write scope.Was this page helpful?

