Entradas da base de conhecimento
Lista, cria, lê, altera e apaga as entradas de perguntas e respostas que o assistente do WhatsApp usa para atender o cliente.
Cada entrada tem um title (o assunto), um content_text (a resposta que o assistente pode usar) e tags opcionais. As rotas só enxergam as entradas do seller do token. Escreva em linguagem natural, como a loja falaria com o cliente: "Trocas: aceitamos em até 7 dias com a nota fiscal".
Listar as entradas
/api/v1/vendor/whatsapp/kbSellerLista as entradas da base de conhecimento do seller
Parâmetros de consulta
statusstringactivedraftarchivedsearchstringlimitintegerpadrão: 50offsetintegerpadrão: 0Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp/kb?status=active&limit=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"entries": [
{
"id": "7a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"title": "Política de troca",
"content_text": "Aceitamos trocas em até 7 dias corridos, com a nota fiscal e a etiqueta.",
"embedding_model": "default",
"has_embedding": true,
"tags": ["troca", "devolução"],
"status": "active",
"created_at": "2026-10-02T13:00:00Z",
"updated_at": "2026-10-02T13:00:00Z"
}
],
"total": 1,
"limit": 20,
"offset": 0
}Campos da resposta
entriesarrayentries[].iduuidentries[].vendor_iduuidentries[].titlestringentries[].content_textstringentries[].embedding_modelstringentries[].has_embeddingbooleantrue quando a entrada tem vetor e entra na busca por significado.entries[].tagsarrayentries[].statusstringactivedraftarchivedentries[].created_atstringentries[].updated_atstringtotalintegerlimitintegeroffsetintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token | {"error":"authentication required"} |
| 403 | Token que não é de seller | {"error":"insufficient permissions"} |
| 403 | Módulo desligado | {"error":"module_disabled","module":"whatsapp-commerce"} |
| 403 | Falta o privilégio | {"error":"insufficient vendor privileges","required":"vendor_manage_whatsapp"} |
| 404 | Usuário sem cadastro de seller | {"error":"vendor profile not found","code":"vendor_profile_not_found"} |
| 500 | Falha ao listar | {"error":"Failed to list knowledge base entries: ..."} |
Criar uma entrada
/api/v1/vendor/whatsapp/kbSellerCria uma entrada na base de conhecimento
Devolve 201 com a entrada. Com a IA configurada, o vetor é gerado na hora; sem ela, has_embedding fica false e a entrada só aparece na busca por texto simples.
Corpo da requisição
titlestringobrigatóriocontent_textstringobrigatóriotagsarraystatusstringpadrão: activeactivedraftarchivedvendor_iduuidExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp/kb" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Política de troca",
"content_text": "Aceitamos trocas em até 7 dias corridos, com a nota fiscal e a etiqueta.",
"tags": [
"troca",
"devolução"
]
}'Resposta
{
"id": "7a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"title": "Política de troca",
"content_text": "Aceitamos trocas em até 7 dias corridos, com a nota fiscal e a etiqueta.",
"embedding_model": "default",
"has_embedding": true,
"tags": ["troca", "devolução"],
"status": "active",
"created_at": "2026-10-02T13:00:00Z",
"updated_at": "2026-10-02T13:00:00Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"Invalid JSON body"} |
| 400 | Falta title | {"error":"whatsapp kb: title required"} |
| 400 | Falta content_text | {"error":"whatsapp kb: content_text required"} |
| 400 | status fora dos três valores | {"error":"whatsapp kb: invalid status \"x\""} |
| 401 / 403 | Autenticação, módulo ou privilégio | veja Listar as entradas |
Ler uma entrada
/api/v1/vendor/whatsapp/kb/{id}SellerLê uma entrada da base de conhecimento
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp/kb/$KB_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "7a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"title": "Política de troca",
"content_text": "Aceitamos trocas em até 7 dias corridos, com a nota fiscal e a etiqueta.",
"has_embedding": true,
"tags": ["troca", "devolução"],
"status": "active",
"created_at": "2026-10-02T13:00:00Z",
"updated_at": "2026-10-02T13:00:00Z"
}Os campos são os de um item da listagem.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 / 403 | Autenticação, módulo ou privilégio | veja Listar as entradas |
| 404 | Entrada inexistente, apagada ou de outro seller | {"error":"Knowledge base entry not found"} |
| 500 | Falha ao ler | {"error":"Failed to load knowledge base entry: ..."} |
Alterar uma entrada
/api/v1/vendor/whatsapp/kb/{id}SellerAltera uma entrada da base de conhecimento
Atualização parcial: só os campos enviados mudam. Mudar o content_text regera o vetor (quando a IA está configurada); mudar só o título não. Devolve a entrada atualizada.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
titlestringcontent_textstringtagsarray[] apaga todas. Omita para manter.statusstringactivedraftarchivedExemplo de requisição
curl -X PATCH "$BASE_URL/api/v1/vendor/whatsapp/kb/$KB_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content_text": "Aceitamos trocas em até 10 dias corridos, com a nota fiscal e a etiqueta."
}'Resposta
{
"id": "7a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"title": "Política de troca",
"content_text": "Aceitamos trocas em até 10 dias corridos, com a nota fiscal e a etiqueta.",
"has_embedding": true,
"tags": ["troca", "devolução"],
"status": "active",
"created_at": "2026-10-02T13:00:00Z",
"updated_at": "2026-10-11T15:00:00Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"Invalid JSON body"} |
| 400 | status inválido | {"error":"whatsapp kb: invalid status \"x\""} |
| 401 / 403 | Autenticação, módulo ou privilégio | veja Listar as entradas |
| 404 | Entrada inexistente, apagada ou de outro seller | {"error":"Knowledge base entry not found"} |
Alterar uma entrada (PUT)
/api/v1/vendor/whatsapp/kb/{id}SellerAltera uma entrada (mesmo comportamento do PATCH)
Atende pelo mesmo tratamento do PATCH: também é parcial, apesar do verbo. Campos ausentes não são apagados. Use o que o seu cliente HTTP preferir.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
titlestringcontent_textstringtagsarrayPATCH.statusstringactivedraftarchivedExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/whatsapp/kb/$KB_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "archived"
}'Resposta
{
"id": "7a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"title": "Política de troca",
"content_text": "Aceitamos trocas em até 10 dias corridos, com a nota fiscal e a etiqueta.",
"has_embedding": true,
"tags": ["troca", "devolução"],
"status": "archived",
"created_at": "2026-10-02T13:00:00Z",
"updated_at": "2026-10-11T15:05:00Z"
}Resposta e erros são os do PATCH.
Apagar uma entrada
/api/v1/vendor/whatsapp/kb/{id}SellerApaga uma entrada da base de conhecimento
Exclusão lógica: a entrada sai das listas e da busca.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/whatsapp/kb/$KB_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
{ "status": "deleted", "id": "7a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d" }Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 / 403 | Autenticação, módulo ou privilégio | veja Listar as entradas |
| 404 | Entrada inexistente, já apagada ou de outro seller | {"error":"Knowledge base entry not found"} |
| 500 | Falha ao apagar | {"error":"Failed to delete entry: ..."} |