A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "kn_5a3d",
"agentId": "agt_4f9c2b7e10a24d51",
"organizationId": "org_2a1b9c",
"kind": "url",
"label": "Website FAQ",
"sourceUrl": "https://peakcomforthvac.com/faq",
"status": "pending",
"chunkCount": 0,
"createdAt": "2026-07-13T10:20:00.000Z",
"updatedAt": "2026-07-13T10:20:00.000Z"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Add a knowledge source
Attaches a new knowledge source to the agent from a web page URL, an uploaded file, raw text, or an FAQ. Ingestion runs in the background, so the source is returned with a ‘pending’ status; poll the source until its status becomes ‘indexed’ before relying on it in conversations.
A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "kn_5a3d",
"agentId": "agt_4f9c2b7e10a24d51",
"organizationId": "org_2a1b9c",
"kind": "url",
"label": "Website FAQ",
"sourceUrl": "https://peakcomforthvac.com/faq",
"status": "pending",
"chunkCount": 0,
"createdAt": "2026-07-13T10:20:00.000Z",
"updatedAt": "2026-07-13T10:20:00.000Z"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Authorizations
Flowyte secret API key (Authorization: Bearer flowyte_sk_live_…). Scope-gated; is scoped to your organization — a key can never reach another tenant. The listed scopes in each operation's apiKey requirement are the scopes that key must hold. The tokenUrl is nominal: keys are minted in the dashboard.
- Token URL
- /api/v1/api-keys
Headers
Client-supplied idempotency key on mutating POSTs. Retrying the same request with the same key returns the original result instead of creating a duplicate — send a fresh UUID per logical operation. The prefixes api_sms_send: and harness_initiate: are reserved for the platform's own records, so do not use them; an endpoint that records the key refuses one that starts with either with 400 validation_error.
Path Parameters
The agent this resource is scoped to (the UUID returned by createAgent / listAgents).
Body
A new knowledge source. kind decides which content field is required: url → url (a website to crawl); file → file_id (an uploaded document from Uploads); text → text (pasted plain text); faq → text (Q&A content).
Source type — decides which of url/file_id/text is required.
url, file, text, faq Human label shown in the knowledge list.
Website to crawl (required when kind=url).
Uploaded document id from Uploads (required when kind=file).
Raw text/FAQ content (required when kind=text or kind=faq).