Knowledge
Manage the voice agent's knowledge base programmatically.
Knowledge entries are the facts your voice agent retrieves and answers from, scoped per project. This surface lets an external system (CMS, help desk, internal wiki) keep the knowledge base in sync item-by-item instead of re-uploading documents through the trainer UI.
Each entry is a category / topic / content triple. Retrieval embeddings are computed server-side on create and update — an entry is live for the agent as soon as the API call returns. Creates run the same de-duplication pipeline as the trainer UI and return 409 knowledge_duplicate (with the existing entry attached) instead of inserting a near-copy.
POST /v1/knowledge— Create a knowledge entryGET /v1/knowledge— List knowledge entriesGET /v1/knowledge/{id}— Retrieve a knowledge entryPATCH /v1/knowledge/{id}— Update a knowledge entryDELETE /v1/knowledge/{id}— Delete a knowledge entry
Download session recording
Returns a 302 redirect to a presigned S3 URL valid for 5 minutes. Follow the redirect to download the call audio. Returns 404 when the session has no recording (e.g. embed or training sessions).
Create a knowledge entry
Adds one entry to the project's knowledge base. The retrieval embedding is computed server-side; the entry is live for the voice agent as soon as the call returns. Creates run through the same de-duplication pipeline as entries added in the trainer UI (exact/fuzzy topic match, then semantic-similarity screening). When the new entry duplicates an existing one, nothing is created and the response is `409 knowledge_duplicate` with the existing entry attached under `error.duplicate.existing`. If `error.duplicate.forceable` is `true` (fuzzy/semantic near-match), you may retry with `force: true` to insert anyway; if `false`, the topic collides exactly — `PATCH` the existing entry or rename yours. Content is stored verbatim: creates never trigger AI edits to the new or existing entries. Validation errors: `category_required`, `topic_required`, `content_required`, `category_too_long` (100 chars), `topic_too_long` (255 chars), `confidence_invalid` (must be 0-1).