Documentation menu

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.

SourceExample
textPolicies, procedures, internal instructions
faqQuestion 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
correctionCorrections made in the dashboard or through teaching
serviceItems 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.

bash
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"
  }'
json
{
  "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 }
}
ParameterDescription
questionRequired. Up to 2,000 characters.
audiencecustomer (default) answers the way the agent would answer a customer. staff also includes knowledge marked as internal in the dashboard.
contact_external_idOptional (coming soon). Will give the agent the contact's context (name, language, history).
languageOptional. 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).

EndpointDescription
GET /v1/agents/{agent_id}/knowledgeLists everything the agent knows, with the source of each item
POST /v1/agents/{agent_id}/knowledgeAdds 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

bash
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"
  }'
FieldDescription
typetext or faq (url coming soon)
titleFor text: item name, up to 200 characters. For faq, the title is the question itself.
contentFor text: up to 50,000 characters
question / answerFor faq (up to 2,000 and 10,000 characters)
visibilitypublic (the agent uses it with customers) or internal (no customer-facing channel uses it; only /ask with audience: "staff")
external_idOptional. Your ID for the item. If it already exists, the item is updated. Useful for syncing without duplicates.
draftOptional (beta). true creates a draft, which no channel uses until you test and publish.

Upload a file

Coming soon. Uploading PDF, DOCX and TXT files and reading website pages through the API are coming in a future version. For now, send the content as text.

Response

json
{
  "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}.

bash
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"
      }
    ]
  }'
FieldDescription
price_typefixed (fixed price), from ("starting at"), per_unit (per unit) or on_evaluation (upon evaluation)
priceIn cents. Required, except for on_evaluation.
unitRequired for per_unit: hour, m2 (m²), room, visit, pet, session or month. Also accepts the Portuguese name, such as "hora".
duration_minutesOptional. Without a duration, the service is not bookable (e.g., a monthly fee).
notesConditions the agent must state along with the price, up to 500 characters
activefalse hides the service without deleting it
currencyIn the PUT body, BRL or USD (default: the account's currency)

The values above are examples only.