API
Última atualização:
O Quickchat AI oferece uma API REST para acesso programático à Base de Conhecimento, Conversas, AI Actions e mais do seu Assistente de IA.
Autenticação
Seção intitulada “Autenticação”Todos os endpoints da API utilizam autenticação por Bearer token. Inclua seu token de API no header Authorization de cada requisição:
Authorization: Bearer <API_TOKEN>Os tokens são criados no Painel do Quickchat em Integrations > API. Cada token é um JWT que contém seu scenario_id, então nenhum identificador adicional no header é necessário.
- Validade do token: 52 semanas a partir da criação
- Tokens podem ser revogados a qualquer momento pelo Painel
- Cada token é vinculado a um único Assistente de IA (scenario)
URL Base
Seção intitulada “URL Base”| Endpoint Group | Base URL |
|---|---|
| Knowledge Base, AI Actions, File Upload, Import | https://app.quickchat.ai/v1/api/ |
| Conversations | https://app.quickchat.ai/v1/api_core/ |
| Chat (Legacy) | https://chat.quickchat.ai/ |
Limites de Requisições
Seção intitulada “Limites de Requisições”Os limites de requisições são aplicados por token, por endpoint.
| Tier | Limit | Applies To |
|---|---|---|
| READ | 120 requisições/min | Operações GET e listagem |
| WRITE | 60 requisições/min | POST, PATCH, PUT, DELETE |
| HEAVY | 20 requisições/min | Upload de arquivos, importações, scraping |
Quando o limite é excedido, a API retorna HTTP 429 Too Many Requests.
Paginação
Seção intitulada “Paginação”Endpoints de listagem suportam paginação via parâmetros de query:
| Parameter | Type | Description |
|---|---|---|
limit | integer | Número de itens por página |
offset | integer | Número de itens a pular |
As respostas paginadas seguem esta estrutura:
{ "items": [], "offset": 0, "count": 100}Tratamento de Erros
Seção intitulada “Tratamento de Erros”Todos os erros são retornados em JSON no seguinte formato:
{ "errors": { "root": [ { "message": "Description of the error", "code": "ERROR_CODE" } ] }}| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Entrada inválida ou campos obrigatórios ausentes |
| 401 | PERMISSION_DENIED | Token inválido, expirado ou revogado |
| 402 | PAYMENT_REQUIRED | Assinatura ativa necessária |
| 404 | NOT_FOUND | Recurso não encontrado |
| 409 | CONFLICT | Operação conflitante (ex.: modificação simultânea) |
| 422 | VALIDATION_ERROR | O corpo da requisição falhou na validação do schema |
| 429 | TOO_MANY_REQUESTS | Limite de requisições excedido |
| 500 | UNKNOWN | Erro interno do servidor |
| 503 | SERVICE_UNAVAILABLE | Indisponibilidade temporária |
Chat (Autenticação Legada)
Seção intitulada “Chat (Autenticação Legada)”O endpoint de Chat utiliza autenticação legada com api_key e scenario_id no corpo da requisição. Ele não utiliza Bearer tokens.
Enviar Mensagem
Seção intitulada “Enviar Mensagem”POST https://chat.quickchat.ai/chat
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | Sua chave de API do Painel |
scenario_id | string | Yes | ID do seu Assistente de IA |
text | string | Yes | Mensagem de entrada do usuário |
conv_id | string | No | ID da conversa. Omita para iniciar uma nova conversa |
message_context | string | No | Contexto adicional por mensagem enviado à IA |
client_metadata | object | No | Pares chave-valor customizados (máx. 5 chaves) atribuídos às mensagens |
curl -X POST https://chat.quickchat.ai/chat \ -H 'Content-Type: application/json' \ -d '{ "api_key": "<API_KEY>", "scenario_id": "<SCENARIO_ID>", "text": "Hello!", "conv_id": "abcd1234"}'import requests
response = requests.post( url="https://chat.quickchat.ai/chat", json={ "api_key": "<API_KEY>", "scenario_id": "<SCENARIO_ID>", "text": "Hello!", "conv_id": "abcd1234", },)data = response.json()Response 200 OK
{ "ord_number": 236, "conv_id": "abcd1234", "reply": "Hey there!"}| Field | Type | Description |
|---|---|---|
ord_number | integer | Número sequencial da mensagem na conversa |
conv_id | string | Identificador da conversa (use para continuar a conversa) |
reply | string | Resposta do Assistente de IA |
Base de Conhecimento
Seção intitulada “Base de Conhecimento”Obter Configurações
Seção intitulada “Obter Configurações”Recupere a configuração da sua Base de Conhecimento.
GET https://app.quickchat.ai/v1/api/knowledge_base/
curl https://app.quickchat.ai/v1/api/knowledge_base/ \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK
{ "one_word_description": "Support Agent", "short_description": "A helpful customer support assistant.", "ai_commands": ["Be polite", "Stay on topic"], "retrain_state": null}| Field | Type | Description |
|---|---|---|
one_word_description | string | Rótulo curto para a Base de Conhecimento |
short_description | string | Descrição do propósito do Assistente de IA |
ai_commands | array of strings | Instruções customizadas para a IA |
retrain_state | string or null | Estado atual do treinamento |
Atualizar Configurações
Seção intitulada “Atualizar Configurações”PATCH https://app.quickchat.ai/v1/api/knowledge_base/
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
one_word_description | string | No | Rótulo curto para a Base de Conhecimento |
short_description | string | No | Descrição do propósito do Assistente de IA |
ai_commands | array of strings | No | Instruções customizadas para a IA |
curl -X PATCH https://app.quickchat.ai/v1/api/knowledge_base/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "one_word_description": "Sales Bot"}'import requests
response = requests.patch( url="https://app.quickchat.ai/v1/api/knowledge_base/", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"one_word_description": "Sales Bot"},)data = response.json()Response 200 OK — Retorna as configurações atualizadas da Base de Conhecimento (mesmo schema de Obter Configurações).
Artigos
Seção intitulada “Artigos”Criar Artigo
Seção intitulada “Criar Artigo”POST https://app.quickchat.ai/v1/api/knowledge_base/articles/
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Conteúdo do artigo |
type | string | No | "Article" (padrão) ou "Paragraph" |
title | string | No | Título do artigo |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy", },)data = response.json()Response 201 Created
{ "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "content": "Our return policy allows returns within 30 days.", "state": "draft", "url": null, "parent_id": null, "parent_type": null, "shortened": false, "tags": [], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15"}Listar Artigos
Seção intitulada “Listar Artigos”GET https://app.quickchat.ai/v1/api/knowledge_base/articles/
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Itens por página |
offset | integer | No | Itens a pular |
types | string | No | Filtrar por tipo: Article, Paragraph |
tags | string | No | Filtrar por tag |
url | string | No | Filtrar por URL |
title | string | No | Filtrar por título |
query | string | No | Buscar por conteúdo |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/?limit=10&offset=0' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10, "offset": 0},)data = response.json()Response 200 OK
{ "items": [ { "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "state": "published", "url": null, "parent_id": null, "parent_type": null, "shortened": false, "tags": ["policies"], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15" } ], "offset": 0, "count": 1}Obter Artigo
Seção intitulada “Obter Artigo”GET https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
curl https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK — Retorna o objeto completo do artigo (mesmo schema da resposta de Criar Artigo).
Atualizar Artigo
Seção intitulada “Atualizar Artigo”PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | No | Conteúdo atualizado do artigo |
title | string | No | Título atualizado |
tags | array of strings | No | Tags atualizadas |
save_mode | string | No | "draft" (padrão) ou "publish" |
curl -X PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish"}'import requests
response = requests.patch( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish", },)data = response.json()Response 200 OK — Retorna o objeto do artigo atualizado.
Excluir Artigos
Seção intitulada “Excluir Artigos”Exclua um ou mais artigos por ID.
DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/
Request Body — Array JSON de IDs de artigos.
curl -X DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '[1234, 5678]'import requests
response = requests.delete( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json=[1234, 5678],)Response 200 OK
Pesquisar Artigos
Seção intitulada “Pesquisar Artigos”Pesquise no conteúdo dos artigos por correspondência de texto.
GET https://app.quickchat.ai/v1/api/knowledge_base/articles/search
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Consulta de pesquisa |
is_case_insensitive | boolean | No | Pesquisa sem distinção de maiúsculas/minúsculas (padrão: true) |
with_title_url_and_tags | boolean | No | Incluir título/URL/tags na pesquisa (padrão: true) |
strict_search | boolean | No | Exigir correspondência exata (padrão: false) |
num_of_display_articles | integer | No | Número de artigos a exibir (padrão: 5) |
num_of_data_articles | integer | No | Número de artigos a pesquisar (padrão: 15) |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/search?query=return%20policy' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/search", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"query": "return policy"},)data = response.json()Response 200 OK
{ "article_snippets": [ { "article_id": 1234, "expository_sentence": "Our return policy allows returns within 30 days.", "query_words_ids": [ {"start_char": 4, "end_char": 10, "text": "return"} ] } ], "article_snapshots": { "items": [], "offset": 0, "count": 1 }}Listar Parágrafos
Seção intitulada “Listar Parágrafos”Liste todos os parágrafos (conteúdo segmentado) na Base de Conhecimento.
GET https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Itens por página |
offset | integer | No | Itens a pular |
query | string | No | Filtrar por conteúdo |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs?limit=10' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10},)data = response.json()Response 200 OK
{ "items": [ { "id": 1, "content": "Our return policy allows returns within 30 days." } ], "offset": 0, "count": 1}URLs de Idioma dos Artigos
Seção intitulada “URLs de Idioma dos Artigos”Gerencie URLs específicas por idioma para artigos. Essas URLs permitem vincular artigos a versões localizadas do conteúdo.
Obter URL de Idioma
Seção intitulada “Obter URL de Idioma”GET https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
curl https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK
{ "url": "https://example.com/en/return-policy"}Criar URL de Idioma
Seção intitulada “Criar URL de Idioma”POST https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL da versão específica do idioma |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{"url": "https://example.com/en/return-policy"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"url": "https://example.com/en/return-policy"},)data = response.json()Response 200 OK
{ "url": "https://example.com/en/return-policy"}Atualizar URL de Idioma
Seção intitulada “Atualizar URL de Idioma”PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL atualizada |
Response 200 OK — Retorna o objeto de URL atualizado.
Excluir URL de Idioma
Seção intitulada “Excluir URL de Idioma”DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
curl -X DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.delete( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234/lang_urls/en", headers={"Authorization": "Bearer <API_TOKEN>"},)Response 200 OK
Listar Tags
Seção intitulada “Listar Tags”Recupere todas as tags usadas nos artigos da Base de Conhecimento.
GET https://app.quickchat.ai/v1/api/knowledge_base/tags/
curl https://app.quickchat.ai/v1/api/knowledge_base/tags/ \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/tags/", headers={"Authorization": "Bearer <API_TOKEN>"},)tags = response.json()Response 200 OK
["policies", "faq", "product-info"]Upload de Arquivos
Seção intitulada “Upload de Arquivos”Faça upload de arquivos para serem processados e adicionados à Base de Conhecimento como artigos.
Upload de PDF
Seção intitulada “Upload de PDF”POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf
Faça upload de um arquivo PDF. O conteúdo é extraído e adicionado como artigo.
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf \ -H 'Authorization: Bearer <API_TOKEN>' \ -F 'pdf_file=@document.pdf'import requests
with open("document.pdf", "rb") as f: response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf", headers={"Authorization": "Bearer <API_TOKEN>"}, files={"pdf_file": f}, )data = response.json()Response 200 OK
{ "status": "success", "message": "File processed successfully.", "article": { "id": 1234, "title": "document.pdf" }}| Field | Type | Description |
|---|---|---|
status | string | Status do processamento |
message | string | Mensagem de resultado legível |
article | object | O artigo criado |
Upload de Arquivo
Seção intitulada “Upload de Arquivo”POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/
Faça upload de um arquivo suportado (PDF, DOCX). O conteúdo é extraído e adicionado como artigo.
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -F 'file=@document.docx'import requests
with open("document.docx", "rb") as f: response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/", headers={"Authorization": "Bearer <API_TOKEN>"}, files={"file": f}, )data = response.json()Response 200 OK — Mesmo schema de Upload de PDF.
Importar Conteúdo Externo
Seção intitulada “Importar Conteúdo Externo”Importe conteúdo de fontes externas para a Base de Conhecimento. Esses endpoints processam o conteúdo de forma assíncrona.
Extrair Conteúdo de Website
Seção intitulada “Extrair Conteúdo de Website”Extraia o conteúdo de uma página web ou de um site inteiro e importe-o.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/website
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL para extrair |
mode | string | No | "individual" (padrão), "site_wide" ou "individual_with_summary" |
phrases | array of strings | No | Frases-chave para extrair |
html_selector | string | No | Seletor CSS para direcionar conteúdo específico |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/website \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://example.com/docs", "mode": "individual"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/website", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"url": "https://example.com/docs", "mode": "individual"},)data = response.json()Response 200 OK
{ "status": "success", "url": "https://example.com/docs", "article": {}}Importar Transcrição do YouTube
Seção intitulada “Importar Transcrição do YouTube”Importe a transcrição de um vídeo do YouTube.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL do vídeo do YouTube |
toast_process_uuid | string | Yes | UUID v4 para rastrear o processo de importação |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "toast_process_uuid": "550e8400-e29b-41d4-a716-446655440000"}'import uuidimport requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "toast_process_uuid": str(uuid.uuid4()), },)Response 202 Accepted — A transcrição é processada de forma assíncrona.
Importar Sitemap
Seção intitulada “Importar Sitemap”Importe conteúdo de todos os links em um sitemap XML.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
site_map | string | Yes | URL de um sitemap XML |
link_filter_regex | string | No | Regex para filtrar quais links importar (padrão: ".*") |
html_selector | string | No | Seletor CSS para direcionar conteúdo específico |
summarize | boolean | No | Se deve resumir o conteúdo importado (padrão: false) |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "site_map": "https://example.com/sitemap.xml"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map", headers={"Authorization": "Bearer <API_TOKEN>"}, json={"site_map": "https://example.com/sitemap.xml"},)data = response.json()Response 200 OK
{ "status": "success", "links": ["https://example.com/page1", "https://example.com/page2"]}Extrair Lista de Links
Seção intitulada “Extrair Lista de Links”Importe conteúdo de uma lista específica de URLs.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
links | array of strings | Yes | Lista de URLs para extrair (não vazia) |
tags | array of strings | No | Tags a aplicar aos artigos importados |
html_selector | string | No | Seletor CSS para direcionar conteúdo específico |
summarize | boolean | No | Se deve resumir o conteúdo importado (padrão: false) |
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "links": ["https://example.com/page1", "https://example.com/page2"], "tags": ["imported"]}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "links": ["https://example.com/page1", "https://example.com/page2"], "tags": ["imported"], },)data = response.json()Response 200 OK
{ "status": "success", "links": ["https://example.com/page1", "https://example.com/page2"]}Gerencie fontes de conteúdo externo (ex.: Intercom, Shopify) que sincronizam artigos com sua Base de Conhecimento.
O parâmetro de caminho {source} aceita valores como "intercom", "shopify", etc.
Importar Artigos da Fonte
Seção intitulada “Importar Artigos da Fonte”POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/import
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/sources/intercom/import \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/sources/intercom/import", headers={"Authorization": "Bearer <API_TOKEN>"}, json={},)data = response.json()Response 200 OK — Retorna uma lista de snapshots dos artigos importados.
Excluir Artigos da Fonte
Seção intitulada “Excluir Artigos da Fonte”POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/delete
Remove todos os artigos importados da fonte especificada.
Response 204 No Content
Comparar Artigos da Fonte
Seção intitulada “Comparar Artigos da Fonte”Compare artigos locais com a fonte externa para detectar alterações.
POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/articles_diff
Response 200 OK
[ { "internal_article_diff": "CHANGED", "external_article_diff": "UNCHANGED", "article_snapshot": {} }]| Field | Type | Description |
|---|---|---|
internal_article_diff | string | "CHANGED" ou "UNCHANGED" |
external_article_diff | string | "CHANGED", "UNCHANGED" ou "REMOVED" |
article_snapshot | object | Dados do snapshot do artigo |
Base de Conhecimento do Intercom
Seção intitulada “Base de Conhecimento do Intercom”Endpoints dedicados para gerenciar a integração com a Base de Conhecimento do Intercom.
Atualizar Artigos do Intercom
Seção intitulada “Atualizar Artigos do Intercom”Busque novamente o conteúdo do Intercom para artigos existentes.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/refresh_articles
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
article_ids | array of integers | No | IDs específicos dos artigos a atualizar (padrão: todos) |
fetch_new_articles | boolean | No | Se deve buscar novos artigos (padrão: true) |
Response 204 No Content
Importar Artigos do Intercom
Seção intitulada “Importar Artigos do Intercom”Importe todos os artigos do Intercom.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/import
Response 200 OK — Retorna uma lista de snapshots dos artigos importados.
Excluir Artigos do Intercom
Seção intitulada “Excluir Artigos do Intercom”Remova todos os artigos originados do Intercom da Base de Conhecimento.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/delete
Response 204 No Content
Comparar Artigos do Intercom
Seção intitulada “Comparar Artigos do Intercom”Compare artigos locais com o Intercom para detectar alterações.
GET https://app.quickchat.ai/v1/api/knowledge_base/intercom/articles_diff
curl https://app.quickchat.ai/v1/api/knowledge_base/intercom/articles_diff \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/intercom/articles_diff", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK — Retorna uma lista de objetos de comparação de artigos (mesmo schema de Comparar Artigos da Fonte).
Conversas
Seção intitulada “Conversas”Listar Conversas
Seção intitulada “Listar Conversas”GET https://app.quickchat.ai/v1/api_core/conversations
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Itens por página |
offset | integer | No | Itens a pular |
query | string | No | Buscar por número de ordem, UUID ou texto da mensagem |
assignee_type | string | No | "ai_assistant", "human_operator" ou "unassigned" |
source | string | No | "widget", "slack", "telegram", "whatsapp", etc. |
resolution_status | string | No | "open" ou "resolved" |
created_timestamp_start_date | datetime | No | Filtrar por data de criação (início) |
created_timestamp_end_date | datetime | No | Filtrar por data de criação (fim) |
last_message_at_start_date | datetime | No | Filtrar por data da última mensagem (início) |
last_message_at_end_date | datetime | No | Filtrar por data da última mensagem (fim) |
most_frequent_language | string | No | Filtrar por idioma detectado |
curl 'https://app.quickchat.ai/v1/api_core/conversations?limit=10&resolution_status=open' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10, "resolution_status": "open"},)data = response.json()Response 200 OK
{ "items": [ { "id": "conv-uuid-1234", "ord": 42, "created_at": "2026-01-15T10:30:00Z", "last_message_at": "2026-01-15T10:35:00Z", "title": "Return policy question", "source": "widget", "terminated": false, "resolution_status": "open", "has_unread_messages": true, "assignee": { "type": "ai_assistant" }, "visitor_name": "John", "visitor_email": "john@example.com", "visitor_phone_number": null, "visitor_label": null } ], "offset": 0, "count": 42}Obter Detalhes da Conversa
Seção intitulada “Obter Detalhes da Conversa”GET https://app.quickchat.ai/v1/api_core/conversations/{conversation_id}/
curl https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/ \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK
{ "id": "conv-uuid-1234", "ord": 42, "created_at": "2026-01-15T10:30:00Z", "last_message_at": "2026-01-15T10:35:00Z", "title": "Return policy question", "source": "widget", "terminated": false, "resolution_status": "open", "has_unread_messages": true, "assignee": { "type": "ai_assistant" }, "url": null, "client_metadata": {"userId": 12}, "data_gathering": null, "last_visitor_message_at": "2026-01-15T10:34:00Z", "visitor_name": "John", "visitor_email": "john@example.com", "visitor_phone_number": null, "visitor_label": null}Metadados da Conversa
Seção intitulada “Metadados da Conversa”Armazene e recupere metadados customizados para conversas. Os metadados são validados contra um JSON schema se houver um configurado no Painel.
Obter Metadados
Seção intitulada “Obter Metadados”GET https://app.quickchat.ai/v1/api_core/conversations/{conv_id}/metadata
curl https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK
{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}Definir Metadados
Seção intitulada “Definir Metadados”Crie ou atualize metadados para uma conversa.
POST https://app.quickchat.ai/v1/api_core/conversations/{conv_id}/metadata
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
metadata | object | Yes | Metadados chave-valor a armazenar |
curl -X POST https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api_core/conversations/conv-uuid-1234/metadata", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "metadata": {"ticket_id": "T-1234", "priority": "high"} },)data = response.json()Response 200 OK
{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}AI Actions
Seção intitulada “AI Actions”Criar AI Action de Base de Conhecimento
Seção intitulada “Criar AI Action de Base de Conhecimento”Crie uma nova AI Action de Base de Conhecimento. AI Actions de Base de Conhecimento permitem que a IA pesquise subconjuntos de artigos por tag na Base de Conhecimento quando acionadas.
POST https://app.quickchat.ai/v1/api/ai_actions/knowledge_base
curl -X POST https://app.quickchat.ai/v1/api/ai_actions/knowledge_base \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/ai_actions/knowledge_base", headers={"Authorization": "Bearer <API_TOKEN>"}, json={},)data = response.json()Response 201 Created
{ "id": 1, "name": "", "description": "", "icon": null, "icon_color": null, "is_active": false, "is_valid": false, "tag": null, "parameter_description": "", "type": "knowledge_base"}| Field | Type | Description |
|---|---|---|
id | integer | Identificador da AI Action |
name | string | Nome de exibição (máx. 100 caracteres) |
description | string | Descrição de quando a ação deve ser acionada (máx. 1000 caracteres) |
icon | string or null | Identificador do ícone |
icon_color | string or null | Cor do ícone |
is_active | boolean | Se a ação está ativada |
is_valid | boolean | Se a ação está corretamente configurada |
tag | string or null | Tag da Base de Conhecimento para filtrar artigos (máx. 255 caracteres) |
parameter_description | string | Descrição do parâmetro que a IA extrai (máx. 500 caracteres) |
type | string | Sempre "knowledge_base" |
Obter AI Action de Base de Conhecimento
Seção intitulada “Obter AI Action de Base de Conhecimento”GET https://app.quickchat.ai/v1/api/ai_actions/{action_id}/knowledge_base
curl https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Response 200 OK — Retorna o objeto da AI Action (mesmo schema da resposta de Criar AI Action de Base de Conhecimento).
Atualizar AI Action de Base de Conhecimento
Seção intitulada “Atualizar AI Action de Base de Conhecimento”PUT https://app.quickchat.ai/v1/api/ai_actions/{action_id}/knowledge_base
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Nome de exibição (máx. 100 caracteres) |
description | string | Yes | Quando a ação deve ser acionada (máx. 1000 caracteres) |
parameter_description | string | Yes | Descrição do parâmetro (máx. 500 caracteres) |
tag | string | Yes | Tag da Base de Conhecimento para filtrar (máx. 255 caracteres) |
curl -X PUT https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "name": "Search Returns", "description": "Search the return policy articles when customer asks about returns.", "parameter_description": "The return-related query from the customer", "tag": "returns"}'import requests
response = requests.put( url="https://app.quickchat.ai/v1/api/ai_actions/1/knowledge_base", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "name": "Search Returns", "description": "Search the return policy articles when customer asks about returns.", "parameter_description": "The return-related query from the customer", "tag": "returns", },)data = response.json()Response 200 OK — Retorna o objeto da AI Action atualizado.