curl --request PUT \
--url 'https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"questions": [
"How do refunds work?"
],
"keywords": [
"refund"
],
"escalation": true,
"active": false,
"public": true,
"origin": "API_CREATED"
}'
const response = await fetch('https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public', {
method: 'PUT',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'title': 'Refund policy',
'mainKnowledge': 'Customers can request a refund within 30 days of purchase.',
'agentInstruction': '2a1cf0f0-f35d-46ad-8e61-a15c86b2b312',
'questions': [
'How do refunds work?'
],
'keywords': [
'refund'
],
'escalation': true,
'active': false,
'public': true,
'origin': 'API_CREATED'
}
)
});
const data = await response.json();
import requests
response = requests.put(
"https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"questions": [
"How do refunds work?"
],
"keywords": [
"refund"
],
"escalation": True,
"active": False,
"public": True,
"origin": "API_CREATED"
},
)
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
Update article
Update an existing article.
PUT
/
v2
/
hc-articles
/
{id}
/
public
curl --request PUT \
--url 'https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"questions": [
"How do refunds work?"
],
"keywords": [
"refund"
],
"escalation": true,
"active": false,
"public": true,
"origin": "API_CREATED"
}'
const response = await fetch('https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public', {
method: 'PUT',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'title': 'Refund policy',
'mainKnowledge': 'Customers can request a refund within 30 days of purchase.',
'agentInstruction': '2a1cf0f0-f35d-46ad-8e61-a15c86b2b312',
'questions': [
'How do refunds work?'
],
'keywords': [
'refund'
],
'escalation': true,
'active': false,
'public': true,
'origin': 'API_CREATED'
}
)
});
const data = await response.json();
import requests
response = requests.put(
"https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"questions": [
"How do refunds work?"
],
"keywords": [
"refund"
],
"escalation": True,
"active": False,
"public": True,
"origin": "API_CREATED"
},
)
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 change the content or metadata of an existing article.
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
Article ID to update.
Body parameters
string
required
Updated article title.
string
required
Updated main knowledge body.
string
required
Updated instructions the agent should apply when using this article.
array
required
Updated question prompts for the article.
array
required
Updated keywords for the article.
boolean
required
Updated escalation flag.
boolean
Updated active state.
boolean
Updated help-center visibility.
string
Optional public authoring origin to store with the update. Allowed values are
API_CREATED and FINI_SCOUT. If omitted, API-key and OAuth requests default to API_CREATED.This update route does not accept
parentFolderId or isDraft. Use Move article to change folders.Response
Returns the full updated article object. See Manage knowledge for the shared article fields.curl --request PUT \
--url 'https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"questions": [
"How do refunds work?"
],
"keywords": [
"refund"
],
"escalation": true,
"active": false,
"public": true,
"origin": "API_CREATED"
}'
const response = await fetch('https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public', {
method: 'PUT',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'title': 'Refund policy',
'mainKnowledge': 'Customers can request a refund within 30 days of purchase.',
'agentInstruction': '2a1cf0f0-f35d-46ad-8e61-a15c86b2b312',
'questions': [
'How do refunds work?'
],
'keywords': [
'refund'
],
'escalation': true,
'active': false,
'public': true,
'origin': 'API_CREATED'
}
)
});
const data = await response.json();
import requests
response = requests.put(
"https://api-prod.usefini.com/v2/hc-articles/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"title": "Refund policy",
"mainKnowledge": "Customers can request a refund within 30 days of purchase.",
"agentInstruction": "2a1cf0f0-f35d-46ad-8e61-a15c86b2b312",
"questions": [
"How do refunds work?"
],
"keywords": [
"refund"
],
"escalation": True,
"active": False,
"public": True,
"origin": "API_CREATED"
},
)
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"
}
The response includes the article’s latest
version after the update is applied.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.404 Not Found
404 Not Found
The article does not exist in the workspace.
Was this page helpful?

