List knowledge base sources
List a knowledge base's sources, newest first, with optional type and status filters and pagination.
GET
https://api.centerfy.ai/webhooks/inbound/knowledge-bases/:id/sources Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | The knowledge base id. A non-uuid returns 400; a knowledge base that does not exist in this sub-account returns 404. |
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
type | string | No | Only sources of this type: file, url, text, faq or snippet. | |
status | string | No | Only sources with this processing status, e.g. completed, queued or failed. | |
limit | integer | No | 50 | Page size, 1–100. |
offset | integer | No | 0 | Number of sources to skip. |
Example
curl -X GET "https://api.centerfy.ai/webhooks/inbound/knowledge-bases/{id}/sources?type=&status=&limit=50" \
-H "x-api-key: $CENTERFY_API_KEY" import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.knowledgeBases.listSources("<knowledgeBaseId>", {
"type": 0,
"status": 0,
"limit": 50,
"offset": 0
});
console.log(result); centerfy knowledgeBases list-sources <knowledgeBaseId> '{"type":0,"status":0,"limit":50,"offset":0}' MCP tool: centerfy_knowledge_bases_list_sources (see MCP server)
Response
{
"status": "success",
"knowledge_base_id": "66666666-7777-8888-9999-000000000000",
"total": 2,
"limit": 50,
"offset": 0,
"has_more": false,
"source_count": 2,
"sources": [
{
"id": "4c1e7a90-2222-4333-8444-000000000012",
"kind": "document",
"type": "file",
"title": "Price list 2026.pdf",
"filename": "1759300000000-price-list-2026.pdf",
"source_url": null,
"file_type": "pdf",
"file_size_bytes": 184233,
"status": "completed",
"error_message": null,
"total_chunks": 12,
"vector_count": 12,
"content_preview": null,
"content_length": null,
"processed_at": "2026-10-01T09:03:40.000Z",
"created_at": "2026-10-01T09:02:00.000Z",
"updated_at": "2026-10-01T09:03:40.000Z"
},
{
"id": "9d3f1b2a-1111-4222-8333-000000000011",
"kind": "text_entry",
"type": "faq",
"title": "Opening hours FAQ",
"filename": null,
"source_url": null,
"file_type": null,
"file_size_bytes": null,
"status": "completed",
"error_message": null,
"total_chunks": null,
"vector_count": 4,
"content_preview": "Q1: What are your opening hours?\nA1: Monday to Friday, 8am to 6pm.\n\nQ2: Are you open on weekends?\nA2: Saturdays 9am to 1pm; closed Sundays.",
"content_length": 118,
"processed_at": "2026-10-01T09:01:12.000Z",
"created_at": "2026-10-01T09:00:00.000Z",
"updated_at": "2026-10-01T09:01:12.000Z"
}
]
}Errors
400— for an invalid id or an unknown type; 404 if the knowledge base is not in this sub-account.
Notes
Read-only. The same source shape as Get knowledge base, filtered and paged. Each source has: id; kind (“document” for files and URLs, “text_entry” for text, snippet and FAQ); type (file | url | text | faq | snippet); title (original file name, URL or entry title); filename, source_url, file_type, file_size_bytes (documents); status (queued | processing | completed | failed) and error_message; total_chunks and vector_count; content_preview (first 300 characters, text entries only) and content_length; processed_at, created_at, updated_at.