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

# Add Searchable Knowledge to Your Board

> Create source nodes, vectorize text, and search board knowledge with the REST API or MCP.

## How searchable knowledge works

The REST API gives you two explicit building blocks:

* Create nodes for source records: websites, videos, PDFs, notes, and other board items.
* Vectorize text that you provide with `POST /documents/vectorize`.

MCP can create boards, add source nodes, upload files, and vectorize text resources from Claude Code. For URLs, videos, and PDFs, provide extracted text when you want the content to be searchable.

## Source nodes

Create nodes for the source material you want to organize on the board.

```bash theme={null}
curl -X POST https://api.chatgrid.ai/v1/boards/{boardId}/nodes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "youtube",
    "position": {"x": 0, "y": 0},
    "data": {"url": "https://youtube.com/watch?v=your-video-id", "label": "Webhook tutorial"}
  }'
```

## PDFs

Upload a PDF, then process it. The current REST vectorize endpoint accepts text, so pass extracted text to `/documents/vectorize` after processing.

```bash theme={null}
# Step 1: Upload the file
curl -X POST https://api.chatgrid.ai/v1/boards/{boardId}/assets \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@architecture.pdf"

# Step 2: Start document processing
curl -X POST https://api.chatgrid.ai/v1/boards/{boardId}/documents/process \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_url": "{assetUrl}", "node_id": "{nodeId}"}'
```

Use the [Jobs endpoint](/api-reference/jobs/get-job) to check the returned job status.

## Web pages

Create a website node, then vectorize the text you extracted from that page.

```bash theme={null}
curl -X POST https://api.chatgrid.ai/v1/boards/{boardId}/nodes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "url",
    "position": {"x": 400, "y": 0},
    "data": {"url": "https://blog.example.com/postgres-scaling-tips", "label": "Postgres scaling tips"}
  }'
```

## Plain text

Paste in notes, decisions, meeting summaries -- anything.

```bash theme={null}
curl -X POST https://api.chatgrid.ai/v1/boards/{boardId}/documents/vectorize \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Decision: We chose Inngest over Temporal for job orchestration. Reasons: managed service, no infra to operate, built-in rate limiting. Temporal is the upgrade path if we outgrow Inngest.",
    "metadata": {"source": "decision-log", "date": "2026-03-04"}
  }'
```

## Search your content

Once content is vectorized, search it semantically.

```bash theme={null}
curl -X POST https://api.chatgrid.ai/v1/boards/{boardId}/documents/search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "why did we choose Inngest?", "limit": 3}'
```

Returns the most relevant chunks with their source metadata:

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "content": "Decision: We chose Inngest over Temporal for job orchestration...",
      "metadata": {"source": "decision-log", "date": "2026-03-04"},
      "similarity": 0.92
    }
  ]
}
```

## In Claude Code

These same API actions are available through MCP:

```
> Add this YouTube video to the board: https://youtube.com/watch?v=...
> Upload architecture.pdf to the backend board
> Add these extracted architecture notes to the backend board: "..."
> Search the board for "why did we choose Inngest?"
```

## Next steps

<CardGroup cols={2}>
  <Card title="Team Knowledge" icon="users" href="/cookbooks/team-knowledge">
    Share a board across your whole team
  </Card>

  <Card title="Streaming" icon="bolt" href="/cookbooks/streaming-responses">
    Stream AI responses in real time
  </Card>
</CardGroup>
