> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fuseai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Knowledge hubs

> Ground AI campaign generation in your company's own content.

A knowledge hub is your company's ingested content — site pages, docs, product material — that grounds AI campaign generation. When an [AI campaign](/guides/campaigns) is generated against a hub, the emails reflect your actual product and voice instead of generic copy inferred from a prompt.

Hubs are created and populated in the Fuse app; the API's role is smaller. You list the hubs that exist and pick one at campaign creation. There are no endpoints for creating or ingesting content into a hub.

<Info>
  Listing knowledge hubs requires a key with the `campaigns` scope. See [scopes](/concepts/scopes).
</Info>

## List your knowledge hubs

```bash theme={null}
curl https://api.tryfuse.ai/api/v1/business/knowledge-hubs \
  -u "af_YOUR_KEY:"
```

```json theme={null}
{
  "knowledgeHubs": [
    {
      "id": "68a1f8509c41d20014b3ee41",
      "name": "Brightpay KB",
      "companyName": "Brightpay",
      "status": "complete",
      "isDefault": true,
      "createdAt": "2026-06-01T12:00:00.000Z"
    }
  ]
}
```

| Field         | Meaning                                                             |
| ------------- | ------------------------------------------------------------------- |
| `id`          | The value to pass as `knowledgeHubId` when creating an AI campaign. |
| `name`        | The hub's name as set in the app.                                   |
| `companyName` | The company whose content the hub holds.                            |
| `status`      | `processing` or `complete` — see below.                             |
| `isDefault`   | The hub used when an AI campaign doesn't specify one.               |
| `createdAt`   | When the hub was created.                                           |

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.

## Use a hub in a campaign

Pass the hub's `id` as `knowledgeHubId` when creating an AI campaign. It only applies to AI-generated campaigns — manual campaigns bring their own copy, so there is nothing for a hub to ground.

```bash theme={null}
curl -X POST https://api.tryfuse.ai/api/v1/business/campaigns \
  -u "af_YOUR_KEY:" \
  -H "Content-Type: application/json" \
  -d '{
    "campaignName": "Q3 outbound - finance leaders",
    "campaignType": "ai-generated",
    "listId": "68a1f20b9c41d20014b3e901",
    "knowledgeHubId": "68a1f8509c41d20014b3ee41"
  }'
```

If you omit `knowledgeHubId`, generation uses the hub marked `isDefault: true`. If you name a hub that doesn't exist or doesn't belong to you, the request fails with `404 KNOWLEDGE_HUB_NOT_FOUND` in the standard [error envelope](/concepts/errors):

```json theme={null}
{
  "error": {
    "code": "KNOWLEDGE_HUB_NOT_FOUND",
    "message": "The requested knowledge hub was not found.",
    "param": null,
    "doc_url": "https://docs.fuseai.com/concepts/errors#knowledge_hub_not_found",
    "request_id": "req_8fK2mQ4x"
  }
}
```

The API never falls back silently to your default when you name a hub explicitly. A campaign grounded on the wrong company's content is worse than an error, so a bad `knowledgeHubId` fails loudly instead of quietly producing emails about someone else's product.

## Where to next

<CardGroup cols={2}>
  <Card title="Campaigns" icon="paper-plane" href="/guides/campaigns">
    The full campaign creation flow, including the rest of the AI generation options.
  </Card>

  <Card title="API reference" icon="book" href="/api-reference">
    Complete request and response schemas for every endpoint.
  </Card>
</CardGroup>
