---
title: "A hub's full detail"
method: GET
path: "/business/knowledge-hubs/{hubId}"
tags: ["Knowledge hubs"]
---

# A hub's full detail

`GET /business/knowledge-hubs/{hubId}`

## Request

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

The hub's full detail: its websites, its notes (with the ids the attachment endpoints address), its build status and whether it is the default hub. Readable by you and your teammates. `websites` lists the URLs you added together with the subpages the crawler discovered from them — a subpage carries the website it came from in `parentUrl`, and `lastCrawledAt` is null for a URL that has never been crawled successfully. `notes[].hasAttachment` tells you which notes have a document to download. Poll this endpoint while `status` is `processing`.

Errors:
- `404` `KNOWLEDGE_HUB_NOT_FOUND` — No hub with that id, it was deleted, or it belongs to another team (existence is never confirmed).
- `422` `VALIDATION_FAILED` — hubId is not a 24-character hex id.
- `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).

## Response `200`

Success

- object
  - `knowledgeHub` object, required
    - `id` string, nullable, required
    - `name` string, nullable, required: Hub name; the placeholder "Processing..." while a hub created without a name is still building.
    - `companyName` string, nullable, required: Company name derived from the crawled content; null until the build finishes.
    - `status` 'processing' | 'complete' | 'draft' | 'null', nullable, required: processing = the crawl and page synthesis are running, complete = the hub is usable, draft = the hub is not built — either it was saved as a draft in the web app and never built, or its last build exhausted its retries, null = a hub the platform created automatically for a campaign.
    - `isDefault` boolean, required
    - `websites` object[], required: The websites you added plus the subpages the crawler discovered from them (subpages carry parentUrl).
      - `url` string, nullable, required
      - `includeSubPages` boolean, required: Whether the site's subpages were expanded when it was added.
      - `isCompetitor` boolean, required
      - `parentUrl` string, nullable, required: Set on subpages the crawler discovered: the website they were collected from. null on a website you added yourself.
      - `lastCrawledAt` string, date-time, nullable, required: When this URL was last successfully crawled; null if it has never been crawled.
    - `notes` object[], required
      - `id` string, nullable, required: Note id; the attachment endpoints address notes by it.
      - `text` string, nullable, required
      - `filename` string, nullable, required: Label the note is cited by, and the key notes are merged on when the hub is updated.
      - `isCompetitor` boolean, required
      - `hasAttachment` boolean, required: Whether the note carries a downloadable document.
    - `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)
