Skip to content
KnockDevelopers
Knowledge

Create an FAQ

Chat with a Developer
post/v1/knowledge/faqs

No “Try it” here: every call is real and consumes enrichment credits. Run the code samples from your own backend.

Adds an FAQ to your AI agent and returns it, reviewed and authored by your API key (answeredBy api). Knock picks its categoryId and intent from the question; change them with PATCH /v1/knowledge/faqs/{faqId}. The question and the answer are trimmed of leading and trailing whitespace.

The AI agent starts using it at once, unless you send enabled: false. Send Content-Type: application/json. Unknown fields are ignored.

Authorization

ApiKeyAuth
headerx-api-key<token>

Your Knock API key. Ask your Knock account team for one: a key with the Enrichment API role to enrich and route leads, the Viewer role to read chats, meetings, routing rules and FAQs, or the Admin, Editor or AI Manager role to change FAQs.

Request Body

application/json
  1. body

An FAQ to add to your AI agent.

question*string

The question, as contacts would ask it. It must differ from the question of every FAQ you have turned on.

Length1 <= length <= 1000
answer?string

The answer. Required unless humanOnly is true.

Length1 <= length <= 10000
humanOnly?boolean

Set to true so the AI agent hands this question to your team instead of answering it. The answer, if any, is kept for your team only.

Defaultfalse
enabled?boolean

Set to false so the AI agent stops using the FAQ. It is then left out of GET /v1/knowledge/faqs.

Defaulttrue
published?boolean

Set to false to hide the FAQ from your public FAQ page.

Defaulttrue

Response Body

The FAQ you created.

application/json
  1. response

An FAQ of your AI agent: your team's question and answer.

faqId*string

ID of the FAQ.

Formatuuid
question*string

The question.

answer*|

The answer. Null when the FAQ has none yet. Returned even when humanOnly is true, although the AI agent never uses it then.

categoryId*string

ID of the FAQ category, from GET /v1/knowledge/faqs/categories. Knock picks it from the question when the FAQ is created.

Formatuuid
intent*|

Which contacts the FAQ answers, null when Knock does not know. Knock picks it from the question when the FAQ is created:

  • buying: Contacts interested in buying.
  • support: Existing customers asking for support.
  • partnership: Contacts interested in a partnership.
  • job_seeker: Contacts looking for a job.
Show 5 valuesHide values
buyingsupportpartnershipjob_seekernull
source*enum<string>

Where the FAQ comes from:

  • manual: A member of your team (or your API key) added the FAQ.
  • automatic: Knock's AI agent drafted the FAQ from a question contacts asked in conversations, or Knock added it for you.
  • default: One of the starter FAQs Knock added when you set up your AI agent. It cannot be deleted.
Show 3 valuesHide values
manualautomaticdefault
answeredBy*enum<string>

Who wrote the current answer:

  • member: A member of your team (answeredByMemberId).
  • ai_agent: Knock's AI agent, or the Knock team on your behalf.
  • api: A call with your API key.
Show 3 valuesHide values
memberai_agentapi
answeredByMemberId*|

ID of the team member who wrote the current answer. Null unless answeredBy is member.

Formatuuid
humanOnly*boolean

Whether the AI agent hands the question to your team instead of answering it. The answer is then kept for your team only.

enabled*boolean

Whether the FAQ is on. The AI agent answers with an FAQ that is on and whose answer your team or your API key wrote: an answer the AI agent drafted (answeredBy ai_agent) is used once you replace it.

published*boolean

Whether the FAQ is shown on your public FAQ page.

reviewed*boolean

Whether your team has reviewed the FAQ. False while an FAQ the AI agent drafted waits in your review queue.

createdAt*string

When the FAQ was created.

Formatdate-time
updatedAt*string

When the FAQ was last changed (its createdAt until then).

Formatdate-time
Example Request
curl -X POST 'https://app.knock-ai.com/v1/knowledge/faqs' \  -H 'x-api-key: <YOUR_API_KEY>' \  -H 'Content-Type: application/json' \  -d '{  "question": "Do you offer a free trial?"}'
Example Response
{  "faqId": "8f1e2d3c-4b5a-4c6d-9e7f-0a1b2c3d4e5f",  "question": "Do you offer a free trial?",  "answer": "Yes. Every plan starts with a 14-day free trial, no credit card needed.",  "categoryId": "2b4d6f8a-1c3e-4a5b-9d7f-0e2c4a6b8d1f",  "intent": "buying",  "source": "manual",  "answeredBy": "api",  "answeredByMemberId": null,  "humanOnly": false,  "enabled": true,  "published": true,  "reviewed": true,  "createdAt": "2026-11-02T12:00:00.000Z",  "updatedAt": "2026-11-02T12:00:00.000Z"}