Update an FAQ
/v1/knowledge/faqs/{faqId}No “Try it” here: this call changes data. Run the code samples from your own backend.
Changes the fields you send and returns the FAQ. Any update with at least one field marks the FAQ reviewed and moves updatedAt, even when the values are the ones it already had, and an answer makes your API key its author (answeredBy api). An empty body changes nothing.
Turn an FAQ off with enabled: false rather than deleting it: the starter FAQs Knock added (source default) cannot be deleted. Send Content-Type: application/json. Unknown fields are ignored.
ApiKeyAuthx-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.
faqId*stringThe faqId of one of your FAQs.
uuidapplication/json- body
The fields to change. A field you leave out keeps its value; none can be null.
question?stringThe question. The question of a default FAQ, or of one the AI agent drafted (automatic), can't be changed: sending it unchanged is fine.
1 <= length <= 1000answer?stringThe answer. Changing it makes your API key its author (answeredBy api).
1 <= length <= 10000humanOnly?booleanSet 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. Setting it to false needs an answer in the same request.
categoryId?stringOne of your categories, from GET /v1/knowledge/faqs/categories. A default FAQ's category can't be changed.
uuidintent?enum<string>Which contacts the FAQ answers:
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 4 valuesHide values
buyingsupportpartnershipjob_seekerenabled?booleanSet to false so the AI agent stops using the FAQ. It is then left out of GET /v1/knowledge/faqs.
published?booleanSet to false to hide the FAQ from your public FAQ page.
The FAQ after the change.
application/json- response
An FAQ of your AI agent: your team's question and answer.
faqId*stringID of the FAQ.
uuidquestion*stringThe 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*stringID of the FAQ category, from GET /v1/knowledge/faqs/categories. Knock picks it from the question when the FAQ is created.
uuidintent*|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_seekernullsource*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
manualautomaticdefaultansweredBy*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_agentapiansweredByMemberId*|ID of the team member who wrote the current answer. Null unless answeredBy is member.
uuidhumanOnly*booleanWhether the AI agent hands the question to your team instead of answering it. The answer is then kept for your team only.
enabled*booleanWhether 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*booleanWhether the FAQ is shown on your public FAQ page.
reviewed*booleanWhether your team has reviewed the FAQ. False while an FAQ the AI agent drafted waits in your review queue.
createdAt*stringWhen the FAQ was created.
date-timeupdatedAt*stringWhen the FAQ was last changed (its createdAt until then).
date-timecurl -X PATCH 'https://app.knock-ai.com/v1/knowledge/faqs/8f1e2d3c-4b5a-4c6d-9e7f-0a1b2c3d4e5f' \ -H 'x-api-key: <YOUR_API_KEY>' \ -H 'Content-Type: application/json' \ -d '{}'{ "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"}