---
title: "Add a custom knowledge page"
method: POST
path: "/business/knowledge-hubs/{hubId}/pages"
tags: ["Knowledge hubs"]
---

# Add a custom knowledge page

`POST /business/knowledge-hubs/{hubId}/pages`

## Request

- Base URL: `https://api.tryfuse.ai/api/v1`
- URL: `https://api.tryfuse.ai/api/v1/business/knowledge-hubs/{hubId}/pages`
- Auth: HTTP basic

Adds a page you author yourself to the hub and indexes it into the hub's knowledge store before answering — no polling. The page is stored with `origin` `user`, which means the hub's rebuilds never overwrite or remove it. `category` groups the page alongside the generated ones and defaults to `custom`. The hub's owner can add pages, and so can anyone on the team when it is the team's shared hub; the hub needs a finished first build: a hub whose knowledge store does not exist yet — one still `processing`, or a `draft` — answers 409 `KNOWLEDGE_HUB_NOT_READY`, and a hub with no knowledge pages at all (one built before the pages pipeline, and a draft that was never built) answers 409 `KNOWLEDGE_HUB_PAGES_UNAVAILABLE` first.

Errors:
- `404` `KNOWLEDGE_HUB_NOT_FOUND` — No hub with that id, it was deleted, or it belongs to another team.
- `409` `KNOWLEDGE_HUB_NOT_READY` — The hub is still building, or its build never finished.
- `409` `KNOWLEDGE_HUB_PAGES_UNAVAILABLE` — The hub predates knowledge pages.
- `403` `KNOWLEDGE_HUB_OWNER_ONLY` — You can read this teammate's hub, but it is not your team's shared hub, so only its owner can add pages.
- `422` `VALIDATION_FAILED` — title or content missing or too long, or an unknown category.
- `500` `UNEXPECTED_ERROR` — The page was saved but could not be indexed; edit it (PATCH) to retry the indexing.
- `429` `RATE_LIMITED` — More than 30 knowledge-hub/campaign requests in a minute (or 1000 in a day). Knowledge hubs share the campaigns bucket.

Requires one of the following token scopes: campaigns.

## Path parameters

- `hubId` string, required: 24-character hex id of the knowledge hub (from GET /business/knowledge-hubs).

## Request body

- object
  - `title` string, required: Page title (1-200 characters).
  - `content` string, required: Page body in Markdown (1-60,000 characters); indexed into the hub's knowledge store as soon as the page is created.
  - `category` 'overview' | 'products' | 'pricing' | 'icp-use-cases' | 'differentiators' | 'competitors' | 'faq' | 'source-digest' | 'custom': Page category, one of overview (company summary), products, pricing, icp-use-cases (ideal customers and use cases), differentiators, competitors, faq, source-digest (digest of one source), custom (user-authored); defaults to custom.

## Response `201`

Success

- object
  - `page` object, required
    - `id` string, nullable, required
    - `title` string, nullable, required
    - `content` string, nullable, required: The page body in Markdown.
    - `category` 'overview' | 'products' | 'pricing' | 'icp-use-cases' | 'differentiators' | 'competitors' | 'faq' | 'source-digest' | 'custom' | 'null', nullable, required
    - `origin` 'generated' | 'edited' | 'user' | 'null', nullable, required: generated = synthesized from the hub's sources, edited = a generated page you have since edited, user = a page you authored.
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `403`: Error
- `404`: Error
- `409`: Error
- `422`: Error
- `429`: Error
- `500`: Error

---

[API](https://skmtc.dev/fuseai/apis/fuse-business-api.md) · [All operations](https://skmtc.dev/fuseai/apis/fuse-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fuseai/apis/fuse-business-api/revisions/50d95e0536f4?raw)
