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

# Manage knowledge

> Section hub for reading, creating, updating, drafting, publishing, and deleting articles.

These routes manage articles directly in Fini's live knowledge graph.

<Info>
  Use this section when you already know the article content you want to store or update directly. For source-backed generation, start from [Knowledge](/en/api-reference/knowledge) and the generation routes there.
</Info>

## Reference pages

<CardGroup cols={3}>
  <Card title="List articles" icon="list" href="/en/api-reference/list-articles">
    `GET /v2/hc-articles/public` — list live articles, draft articles, or both.
  </Card>

  <Card title="Get articles by IDs" icon="eye" href="/en/api-reference/get-articles-by-ids">
    `POST /v2/hc-articles/ids/public` — fetch one or more articles by ID.
  </Card>

  <Card title="Create article" icon="plus" href="/en/api-reference/create-article">
    `POST /v2/hc-articles/public` — create a live article or draft article.
  </Card>

  <Card title="Update article" icon="pen" href="/en/api-reference/update-article">
    `PUT /v2/hc-articles/:id/public` — update an existing article.
  </Card>

  <Card title="Create article draft" icon="file" href="/en/api-reference/create-article-draft">
    `POST /v2/hc-articles/:id/draft/public` — create a draft from an existing article.
  </Card>

  <Card title="Publish article draft" icon="paper-plane" href="/en/api-reference/publish-article-draft">
    `POST /v2/hc-articles/:id/publish/public` — publish a draft article.
  </Card>

  <Card title="Delete article" icon="trash" href="/en/api-reference/delete-article">
    `DELETE /v2/hc-articles/:id/public` — delete an article.
  </Card>
</CardGroup>

## Endpoint map

| Method   | Path                                 | Scope   | Purpose                                                   |
| -------- | ------------------------------------ | ------- | --------------------------------------------------------- |
| `GET`    | `/v2/hc-articles/public`             | `read`  | List articles. Use `type=live` or `type=draft` to filter. |
| `POST`   | `/v2/hc-articles/ids/public`         | `read`  | Fetch one or more articles by ID.                         |
| `POST`   | `/v2/hc-articles/public`             | `write` | Create a live article or draft article.                   |
| `PUT`    | `/v2/hc-articles/:id/public`         | `write` | Update an existing article.                               |
| `POST`   | `/v2/hc-articles/:id/draft/public`   | `write` | Create a draft from an existing article.                  |
| `POST`   | `/v2/hc-articles/:id/publish/public` | `write` | Publish a draft article.                                  |
| `DELETE` | `/v2/hc-articles/:id/public`         | `write` | Delete an article.                                        |

<Note>
  There is no workspace-API-key `GET /v2/hc-articles/:id/public` route in the current controller. If you want to fetch by ID, use `POST /v2/hc-articles/ids/public` with one or more `articleIds`.
</Note>

## Article object

<ResponseField name="id" type="string">
  Article ID.
</ResponseField>

<ResponseField name="title" type="string">
  Article title.
</ResponseField>

<ResponseField name="mainKnowledge" type="string">
  Main knowledge body.
</ResponseField>

<ResponseField name="agentInstruction" type="string">
  Additional instructions the agent should apply when using this article.
</ResponseField>

<ResponseField name="questions" type="array">
  Question prompts associated with the article.
</ResponseField>

<ResponseField name="keywords" type="array">
  Keyword list associated with the article.
</ResponseField>

<ResponseField name="escalation" type="boolean">
  Whether the article is marked as escalation-related.
</ResponseField>

<ResponseField name="misc" type="object">
  Internal metadata stored with the article. Source-backed generation and draft flows may use this to retain linkage data.
</ResponseField>

<ResponseField name="active" type="boolean">
  Whether the article is active.
</ResponseField>

<ResponseField name="public" type="boolean">
  Whether the article is public in the help center.
</ResponseField>

<ResponseField name="parentFolderId" type="string">
  Folder that contains the article.
</ResponseField>

<ResponseField name="companyId" type="string">
  Workspace ID that owns the article.
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 creation timestamp.
</ResponseField>

<ResponseField name="updatedAt" type="string">
  ISO 8601 last-update timestamp.
</ResponseField>

<ResponseField name="version" type="integer">
  Article version, when versioning metadata is available.
</ResponseField>

<ResponseField name="isDraftPublished" type="boolean">
  Whether the draft has already been published, when applicable.
</ResponseField>

<ResponseField name="originalArticleId" type="string">
  Original live article ID when this object is a draft of an existing article.
</ResponseField>

<ResponseField name="originalArticleVersion" type="integer">
  Version of the original live article when this draft was created.
</ResponseField>

<ResponseField name="createdBy" type="string">
  User ID that created the article, when stored.
</ResponseField>

<ResponseField name="origin" type="string">
  Origin marker for the article, when one was stored.
</ResponseField>

<Note>
  Use the child pages in this section for the detailed request and response reference for each route.
</Note>
