> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Initialize knowledge folders
> Generate a downloadable tree-import template file from an initialization prompt.
Use this route when you are setting up knowledge folders for the first time and want Fini to scaffold a starting folder-and-article structure.
<Info>
This route returns a downloadable file, not JSON. Save the response body using the returned `Content-Type` and `Content-Disposition` headers, then import that file with [Persist knowledge folders](/en/api-reference/persist-knowledge-folders).
</Info>
## Headers
<ParamField header="Authorization" type="string" required>
Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `write` scope.
</ParamField>
<ParamField header="Content-Type" type="string" required>
`application/json`
</ParamField>
## Body parameters
<ParamField body="initPrompt" type="string" required>
Prompt describing the folder-and-article structure you want Fini to scaffold.
</ParamField>
## Response
The response body is a generated tree template file.
<ResponseField name="file" type="binary">
Downloadable tree-import template file.
</ResponseField>
<ResponseField name="Content-Type" type="string">
MIME type for the returned file.
</ResponseField>
<ResponseField name="Content-Disposition" type="string">
Attachment header containing the suggested filename.
</ResponseField>
<RequestExample>
~~~bash cURL theme={null}
curl --request POST \
--url 'https://api-prod.usefini.com/v2/knowledge/public/tree/initialize' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"initPrompt": "Create a support knowledge tree for billing, shipping, and returns."
}' \
--output fini-tree-template.csv
~~~
~~~javascript Node.js theme={null}
const response = await fetch('https://api-prod.usefini.com/v2/knowledge/public/tree/initialize', {
method: 'POST',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'initPrompt': 'Answer only from approved knowledge and escalate if unsure.'
}
)
});
const data = await response.json();
~~~
~~~python Python theme={null}
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/knowledge/public/tree/initialize",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"initPrompt": "Answer only from approved knowledge and escalate if unsure."
},
)
data = response.json()
~~~
</RequestExample>
<ResponseExample>
~~~json 200 OK theme={null}
{
"folders": [
{
"id": "0f4da4fe-b2ae-4787-8c3b-854f36d9eb1b",
"title": "Billing",
"description": "Refunds, invoices, and subscription changes.",
"parentFolderId": null,
"active": true,
"botIds": [
"2a1cf0f0-f35d-46ad-8e61-a15c86b2b312"
],
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
],
"articles": [
{
"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,
"origin": "API_CREATED",
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
]
}
~~~
</ResponseExample>
## Next step
Review the generated file, make any edits you want, then upload it with [Persist knowledge folders](/en/api-reference/persist-knowledge-folders).
## Errors
<AccordionGroup>
<Accordion title="400 Bad Request" icon="circle-exclamation">
The request body is malformed or `initPrompt` is missing or empty.
</Accordion>
<Accordion title="401 Unauthorized" icon="lock">
The API key is missing, malformed, revoked, or invalid.
</Accordion>
<Accordion title="403 Forbidden" icon="shield-halved">
The API key does not include the `write` scope.
</Accordion>
<Accordion title="500 Internal Server Error" icon="triangle-exclamation">
Fini failed while generating the tree template. Retry once, then narrow the prompt if the failure persists.
</Accordion>
</AccordionGroup>
## Related topics
- [Persist knowledge folders](/en/api-reference/persist-knowledge-folders.md)
- [Overview](/en/api-reference/knowledge.md)
- [Move knowledge folder](/en/api-reference/move-knowledge-folder.md)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.
Knowledge generation

