Update a Q&A entry
Updates title, questions, answer, or source. Questions replaces the whole list; preserve the union yourself when merging. Supply expectedRevision from GET or oracle.existing / oracle.target to apply only to the version you reviewed. A stale revision returns 409 revision_conflict; a question owned by another entry returns 409 question_already_used. Content changes attempt indexing before returning; check indexStatus.
Optional onMatch checks changed questions or answer against the addressed entry and retrieved candidates. reject refuses overlap; update permits deliberate replacement but refuses unclear results; create overrides the result. PATCH never merges entries. Checks are bounded advice and do not lock the rest of the knowledge base. A missing onMatch applies the requested update without semantic judging.
Body ParametersJSON
Apply only if the entry still has this revision. A stale revision returns 409 revision_conflict without writing. Get the revision from retrieve, oracle.existing, or oracle.target.
Update a Q&A entry
curl https://do.featurebase.app/v2/training_data/qna/$ID \
-X PATCH \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $FEATUREBASE_API_KEY" \
-d '{
"answer": "You can request a refund within 60 days from **Settings → Billing**.",
"answerFormat": "markdown",
"expectedRevision": 1,
"onMatch": "reject",
"questions": [
"How do I request a refund?",
"Can I get my money back?"
],
"source": "resolved-conversations",
"title": "Refund requests"
}'{
"id": "67ec1234abcd5678ef901235",
"answer": "You can request a refund within 30 days from **Settings → Billing**.",
"createdAt": "2026-09-03T10:15:00.000Z",
"externalId": "resolution-1842",
"indexStatus": "indexed",
"object": "qna",
"questions": [
"How do I request a refund?",
"Can I get my money back?"
],
"revision": 1,
"source": "resolved-conversations",
"title": "Refund requests",
"updatedAt": "2026-09-03T10:15:30.000Z",
"match": {
"entry": {
"id": "67ec1234abcd5678ef901236",
"kind": "qna",
"section": null,
"similarity": 0.61,
"title": "Refund requests",
"url": null
},
"reason": "Both answer how to request a refund; the new entry adds the 30-day window.",
"verdict": "same_topic"
},
"outcome": "created"
}Returns Examples
{
"id": "67ec1234abcd5678ef901235",
"answer": "You can request a refund within 30 days from **Settings → Billing**.",
"createdAt": "2026-09-03T10:15:00.000Z",
"externalId": "resolution-1842",
"indexStatus": "indexed",
"object": "qna",
"questions": [
"How do I request a refund?",
"Can I get my money back?"
],
"revision": 1,
"source": "resolved-conversations",
"title": "Refund requests",
"updatedAt": "2026-09-03T10:15:30.000Z",
"match": {
"entry": {
"id": "67ec1234abcd5678ef901236",
"kind": "qna",
"section": null,
"similarity": 0.61,
"title": "Refund requests",
"url": null
},
"reason": "Both answer how to request a refund; the new entry adds the 30-day window.",
"verdict": "same_topic"
},
"outcome": "created"
}