> ## 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.

# Persist knowledge folders

> Upload a tree file and persist it into the workspace knowledge graph.

Use this route to import a tree file that you generated with [Initialize knowledge folders](/en/api-reference/initialize-knowledge-folders) or edited before upload.

<Info>
  Send the file as `multipart/form-data` with the form field name `file`.
</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>
  `multipart/form-data`
</ParamField>

## Body parameters

<ParamField body="file" type="file" required>
  Tree file generated from the initialize route or edited by your team before import.
</ParamField>

## Response

<ResponseField name="status" type="string">
  Import status string.
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable import message.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://api-prod.usefini.com/v2/knowledge/public/tree/persist' \
    --header 'Authorization: Bearer fini_your_api_key' \
    --form 'file=@fini-tree-template.csv'
  ```
</RequestExample>

## Errors

<AccordionGroup>
  <Accordion title="400 Bad Request" icon="circle-exclamation">
    The request is malformed or the `file` field is missing from the multipart payload.
  </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 persisting the uploaded tree file. Retry once, then validate the file format before trying again.
  </Accordion>
</AccordionGroup>
