Update article
curl --request PUT \
--url https://api-prod.usefini.com/v2/hc-articles/{id}/public \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"title": "<string>",
"mainKnowledge": "<string>",
"agentInstruction": "<string>",
"questions": [
{}
],
"keywords": [
{}
],
"escalation": true,
"active": true,
"public": true
}
'import requests
url = "https://api-prod.usefini.com/v2/hc-articles/{id}/public"
payload = {
"title": "<string>",
"mainKnowledge": "<string>",
"agentInstruction": "<string>",
"questions": [{}],
"keywords": [{}],
"escalation": True,
"active": True,
"public": True
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'},
body: JSON.stringify({
title: '<string>',
mainKnowledge: '<string>',
agentInstruction: '<string>',
questions: [{}],
keywords: [{}],
escalation: true,
active: true,
public: true
})
};
fetch('https://api-prod.usefini.com/v2/hc-articles/{id}/public', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-prod.usefini.com/v2/hc-articles/{id}/public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'mainKnowledge' => '<string>',
'agentInstruction' => '<string>',
'questions' => [
[
]
],
'keywords' => [
[
]
],
'escalation' => true,
'active' => true,
'public' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-prod.usefini.com/v2/hc-articles/{id}/public"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"mainKnowledge\": \"<string>\",\n \"agentInstruction\": \"<string>\",\n \"questions\": [\n {}\n ],\n \"keywords\": [\n {}\n ],\n \"escalation\": true,\n \"active\": true,\n \"public\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api-prod.usefini.com/v2/hc-articles/{id}/public")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.body("{\n \"title\": \"<string>\",\n \"mainKnowledge\": \"<string>\",\n \"agentInstruction\": \"<string>\",\n \"questions\": [\n {}\n ],\n \"keywords\": [\n {}\n ],\n \"escalation\": true,\n \"active\": true,\n \"public\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.usefini.com/v2/hc-articles/{id}/public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"title\": \"<string>\",\n \"mainKnowledge\": \"<string>\",\n \"agentInstruction\": \"<string>\",\n \"questions\": [\n {}\n ],\n \"keywords\": [\n {}\n ],\n \"escalation\": true,\n \"active\": true,\n \"public\": true\n}"
response = http.request(request)
puts response.read_bodyKnowledge
Update article
Update an existing article.
PUT
/
v2
/
hc-articles
/
{id}
/
public
Update article
curl --request PUT \
--url https://api-prod.usefini.com/v2/hc-articles/{id}/public \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"title": "<string>",
"mainKnowledge": "<string>",
"agentInstruction": "<string>",
"questions": [
{}
],
"keywords": [
{}
],
"escalation": true,
"active": true,
"public": true
}
'import requests
url = "https://api-prod.usefini.com/v2/hc-articles/{id}/public"
payload = {
"title": "<string>",
"mainKnowledge": "<string>",
"agentInstruction": "<string>",
"questions": [{}],
"keywords": [{}],
"escalation": True,
"active": True,
"public": True
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'},
body: JSON.stringify({
title: '<string>',
mainKnowledge: '<string>',
agentInstruction: '<string>',
questions: [{}],
keywords: [{}],
escalation: true,
active: true,
public: true
})
};
fetch('https://api-prod.usefini.com/v2/hc-articles/{id}/public', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-prod.usefini.com/v2/hc-articles/{id}/public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'mainKnowledge' => '<string>',
'agentInstruction' => '<string>',
'questions' => [
[
]
],
'keywords' => [
[
]
],
'escalation' => true,
'active' => true,
'public' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-prod.usefini.com/v2/hc-articles/{id}/public"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"mainKnowledge\": \"<string>\",\n \"agentInstruction\": \"<string>\",\n \"questions\": [\n {}\n ],\n \"keywords\": [\n {}\n ],\n \"escalation\": true,\n \"active\": true,\n \"public\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api-prod.usefini.com/v2/hc-articles/{id}/public")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.body("{\n \"title\": \"<string>\",\n \"mainKnowledge\": \"<string>\",\n \"agentInstruction\": \"<string>\",\n \"questions\": [\n {}\n ],\n \"keywords\": [\n {}\n ],\n \"escalation\": true,\n \"active\": true,\n \"public\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.usefini.com/v2/hc-articles/{id}/public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"title\": \"<string>\",\n \"mainKnowledge\": \"<string>\",\n \"agentInstruction\": \"<string>\",\n \"questions\": [\n {}\n ],\n \"keywords\": [\n {}\n ],\n \"escalation\": true,\n \"active\": true,\n \"public\": true\n}"
response = http.request(request)
puts response.read_bodyUse 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.
This update route does not accept
parentFolderId, isDraft, or origin. Use Move article to change folders.Response
Returns the full updated article object. See Manage knowledge for the shared article fields.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?
⌘I

