Knowledge
Ask your company's knowledge directly and keep documents, FAQs and the service table in sync.
Knowledge is everything the agent knows about your company. There is one knowledge base for all channels: what you teach here applies on WhatsApp, on your website, in the widget and in the API.
| Source | Example |
|---|---|
text | Policies, procedures, internal instructions |
faq | Question and answer |
url (coming soon) | A page on your website (Nevox reads it and refreshes it every week) |
file (coming soon) | PDF, DOCX or TXT up to 20 MB |
correction | Corrections made in the dashboard or through teaching |
service | Items from the service table |
Ask the knowledge base directly
POST /v1/agents/{agent_id}/ask · scope knowledge:read
Use it in internal screens, without opening a conversation. Example: the front desk looks up a policy in your admin panel.
curl https://api.nevox.ai/v1/agents/agt_8f2k1x/ask \
-H "Authorization: Bearer $NEVOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "What is the deadline to request a refund?",
"audience": "staff",
"contact_external_id": "patient_1042"
}'{
"answered": true,
"answer": "A refund can be requested within 7 days after the appointment, by emailing billing@example.com.",
"confidence": "high",
"sources": [
{ "type": "text", "id": "kn_pol07", "title": "Refund policy" }
],
"usage": { "ask_count_month": 112, "ask_limit_month": 1000 }
}| Parameter | Description |
|---|---|
question | Required. Up to 2,000 characters. |
audience | customer (default) answers the way the agent would answer a customer. staff also includes knowledge marked as internal in the dashboard. |
contact_external_id | Optional (coming soon). Will give the agent the contact's context (name, language, history). |
language | Optional. Language of the answer. |
If the knowledge doesn't cover the question, the response comes back with "answered": false and answer: null. The agent never makes things up: every answer comes with its sources (sources), the knowledge items and service table entries that back it up. Unanswered questions show up in analytics → knowledge gaps.
Manage knowledge
Scopes knowledge:read (read) and knowledge:write (write).
| Endpoint | Description |
|---|---|
GET /v1/agents/{agent_id}/knowledge | Lists everything the agent knows, with the source of each item |
POST /v1/agents/{agent_id}/knowledge | Adds an item |
GET /v1/agents/{agent_id}/knowledge/{id} | One item |
PATCH /v1/agents/{agent_id}/knowledge/{id} | Updates |
DELETE /v1/agents/{agent_id}/knowledge/{id} | Removes |
Add text or FAQ
curl https://api.nevox.ai/v1/agents/agt_8f2k1x/knowledge \
-H "Authorization: Bearer $NEVOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "faq",
"title": "Do you take insurance?",
"question": "Do you accept insurance?",
"answer": "We are out of network. We provide a receipt so you can request reimbursement from your plan.",
"visibility": "public",
"external_id": "faq-insurance"
}'| Field | Description |
|---|---|
type | text or faq (url coming soon) |
title | For text: item name, up to 200 characters. For faq, the title is the question itself. |
content | For text: up to 50,000 characters |
question / answer | For faq (up to 2,000 and 10,000 characters) |
visibility | public (the agent uses it with customers) or internal (no customer-facing channel uses it; only /ask with audience: "staff") |
external_id | Optional. Your ID for the item. If it already exists, the item is updated. Useful for syncing without duplicates. |
draft | Optional (beta). true creates a draft, which no channel uses until you test and publish. |
Upload a file
text.Response
{
"id": "kn_9xk20",
"type": "faq",
"title": "Do you take insurance?",
"visibility": "public",
"status": "ready",
"source": "api",
"external_id": "faq-insurance",
"created_at": "2026-11-03T14:40:00Z",
"updated_at": "2026-11-03T14:40:00Z"
}The source field shows where the item came from: dashboard, api, vox, website, correction or learning.
Service table
The service table is the agent's only source of prices. It belongs to the company: it applies to all agents, so any agent_id in the account reads and changes the same table. The agent repeats what is in the table, never rounds and never calculates a discount on its own. Anything not in the table becomes an evaluation appointment.
GET /v1/agents/{agent_id}/services · PUT /v1/agents/{agent_id}/services
PUT replaces the whole table: anything not in the list is removed. Services with the same external_id keep their ID. To change a single item, use PATCH /v1/agents/{agent_id}/services/{id}.
curl -X PUT https://api.nevox.ai/v1/agents/agt_8f2k1x/services \
-H "Authorization: Bearer $NEVOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"currency": "USD",
"services": [
{
"external_id": "primary-care-visit",
"name": "Primary care visit",
"price_type": "fixed",
"price": 8900,
"duration_minutes": 30
},
{
"external_id": "follow-up",
"name": "Follow-up visit",
"price_type": "fixed",
"price": 4900,
"duration_minutes": 20,
"notes": "Valid up to 30 days after the first visit"
},
{
"external_id": "medical-report",
"name": "Medical report",
"price_type": "on_evaluation"
}
]
}'| Field | Description |
|---|---|
price_type | fixed (fixed price), from ("starting at"), per_unit (per unit) or on_evaluation (upon evaluation) |
price | In cents. Required, except for on_evaluation. |
unit | Required for per_unit: hour, m2 (m²), room, visit, pet, session or month. Also accepts the Portuguese name, such as "hora". |
duration_minutes | Optional. Without a duration, the service is not bookable (e.g., a monthly fee). |
notes | Conditions the agent must state along with the price, up to 500 characters |
active | false hides the service without deleting it |
currency | In the PUT body, BRL or USD (default: the account's currency) |
The values above are examples only.