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

HeaderRequiredValueDescription
x-api-keyYesyour sub-account API key (cfy_…)Authenticates the request; or use Authorization: Bearer <key>.

Path parameters

NameTypeRequiredDescription
idstring (uuid)YesThe knowledge base id. A non-uuid returns 400; a knowledge base that does not exist in this sub-account returns 404.

Query parameters

NameTypeRequiredDefaultDescription
typestringNoOnly sources of this type: file, url, text, faq or snippet.
statusstringNoOnly sources with this processing status, e.g. completed, queued or failed.
limitintegerNo50Page size, 1–100.
offsetintegerNo0Number 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.

© 2026 Centerfy AI. All rights reserved.