Every knowledge hub endpoint requires a key with the
campaigns scope and shares the campaigns rate limit of 30 requests a minute. See scopes.Create a knowledge hub
POST /business/knowledge-hubs creates your team’s hub from 1 to 20 websites and up to 50 free-text notes. It answers 202 straight away and builds the hub in the background: every site is crawled, its subpages too when includeSubPages is true, and the text is synthesized into knowledge pages.
GET /business/knowledge-hubs/{hubId} until status is complete. Building a hub costs no credits. A site that cannot be fetched is not reported as an error: its entry stays on the hub with lastCrawledAt: null and contributes nothing, so read the hub back to check.
Mark a competitor’s site with isCompetitor: true and its content feeds the hub’s competitor pages instead of your own profile.
A team holds one hub, so creating another answers 409 KNOWLEDGE_HUB_ALREADY_EXISTS while your team’s hub is built or building. Add sites and notes to the existing hub with PATCH /business/knowledge-hubs/{hubId} instead, as described below. A hub that never finished building (draft) does not count, and a new hub replaces it.
List your knowledge hubs
A hub with status
processing is still ingesting content. You can ground a campaign on it, but generation only draws on what has been ingested so far, so the result is thinner than waiting for complete. If you control the timing, poll until the hub reports complete before creating the campaign. A draft hub was never built, or its build did not finish, and cannot ground a campaign.
Use a hub in a campaign
An AI campaign created withoutknowledgeHubId grounds on your team’s hub: the team owner’s hub when it is built or building, otherwise the oldest built hub among the team’s members. Pass knowledgeHubId only to name a hub explicitly. It only applies to AI-generated campaigns — manual campaigns bring their own copy, so there is nothing for a hub to ground.
knowledgeHubId must be one of your own hubs. If you name a hub that doesn’t exist or isn’t yours, including a teammate’s, the request fails with 404 KNOWLEDGE_HUB_NOT_FOUND in the standard error envelope. Leave the field out to use the team’s hub.
knowledgeHubId fails loudly instead of quietly producing emails about someone else’s product.
Keep a hub current
A hub is not frozen once it is built. Six things can change after the crawl.Add websites and notes
PATCH /business/knowledge-hubs/{hubId} renames the hub and merges websites and notes into it, then rebuilds it in the background (202). Websites merge by URL: a URL the hub already has is re-crawled, and a new one is added. Notes merge by filename, so sending a known filename edits that note in place and keeps its attachment. Nothing is ever removed this way.
processing; poll GET /business/knowledge-hubs/{hubId} until it is complete. A hub that is already building answers 409 KNOWLEDGE_HUB_NOT_READY.
Re-crawl one website
POST /business/knowledge-hubs/{hubId}/refresh takes the url of a site already on the hub and crawls it again. It answers 202; the hub returns to processing while it works.
Edit a page
Pages are the readable summaries the crawl produced. Edit one withPATCH /business/knowledge-hubs/{hubId}/pages/{pageId} (title, content, or both), remove one with DELETE, or rebuild one from its sources:
A page carries an
origin: generated if the crawl wrote it, edited once you have changed it, user if you added it yourself. An edited page is still rebuilt when you regenerate it, or when its source is re-crawled. Pages you added have no sources, so regenerating one answers 409 KNOWLEDGE_PAGE_NOT_REGENERABLE.Add your own page
POST /business/knowledge-hubs/{hubId}/pages adds a page you write yourself, in Markdown, with a title and an optional category (overview, products, pricing, icp-use-cases, differentiators, competitors, faq, source-digest or custom, the default).
processing, or a draft, answers 409 KNOWLEDGE_HUB_NOT_READY.
Attach a document to a note
Notes hold context the crawl could not reach. A note can carry one file — a deck, a one-pager, a price list — sent as base64. The file is stored for download only and is not read into the hub, so put what the hub should learn in the note’stext.
GET /business/knowledge-hubs/{hubId}/attachments/{noteId} returns a short-lived downloadUrl for it.
A note already holding a file answers 409 ATTACHMENT_ALREADY_EXISTS; there is no replace, so delete and re-add.
Correct what Fuse learned
Fuse also learns facts from your team’s own conversations — questions prospects keep asking, objections that keep landing.GET /business/knowledge-hubs/learned-facts lists them across the team:
PATCH /business/knowledge-hubs/learned-facts/{factId} or dropped with DELETE. Corrections must stay anonymised: a claim with an email address, a phone number, a deal amount or contract terms is refused with 422 LEARNED_FACT_NOT_ANONYMIZED. Names are not checked, so keep them out yourself. A correction reaches the hub’s pages on the next daily learning run.
Where to next
Campaigns
The full campaign creation flow, including the rest of the AI generation options.
API reference
Complete request and response schemas for every endpoint.