API
Última actualización:
Quickchat AI proporciona una API REST para acceder de forma programatica a la Base de Conocimiento, Conversaciones, Acciones de IA y mas funcionalidades de tu Asistente de IA.
Autenticacion
Sección titulada «Autenticacion»Todos los endpoints de la API utilizan autenticacion mediante token Bearer. Incluye tu token de API en el encabezado Authorization de cada peticion:
Authorization: Bearer <API_TOKEN>Los tokens se crean en el Panel de Quickchat en Integrations > API. Cada token es un JWT que contiene tu scenario_id, por lo que no se necesita ningun encabezado identificador adicional.
- Validez del token: 52 semanas desde su creacion
- Los tokens pueden ser revocados en cualquier momento desde el Panel
- Cada token esta vinculado a un unico Asistente de IA (scenario)
URL base
Sección titulada «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 tasa
Sección titulada «Limites de tasa»Los limites de tasa se aplican por token y por endpoint.
| Tier | Limit | Applies To |
|---|---|---|
| READ | 120 peticiones/min | Operaciones GET y de listado |
| WRITE | 60 peticiones/min | POST, PATCH, PUT, DELETE |
| HEAVY | 20 peticiones/min | Carga de archivos, importaciones, scraping |
Cuando se excede un limite de tasa, la API devuelve HTTP 429 Too Many Requests.
Paginacion
Sección titulada «Paginacion»Los endpoints de listado admiten paginacion mediante parametros de consulta:
| Parameter | Type | Description |
|---|---|---|
limit | integer | Numero de elementos por pagina |
offset | integer | Numero de elementos a omitir |
Las respuestas paginadas siguen esta estructura:
{ "items": [], "offset": 0, "count": 100}Manejo de errores
Sección titulada «Manejo de errores»Todos los errores se devuelven como JSON en el siguiente formato:
{ "errors": { "root": [ { "message": "Description of the error", "code": "ERROR_CODE" } ] }}| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Entrada no valida o campos obligatorios faltantes |
| 401 | PERMISSION_DENIED | Token no valido, expirado o revocado |
| 402 | PAYMENT_REQUIRED | Se requiere una suscripcion activa |
| 404 | NOT_FOUND | Recurso no encontrado |
| 409 | CONFLICT | Operacion en conflicto (p. ej., modificacion concurrente) |
| 422 | VALIDATION_ERROR | El cuerpo de la peticion no paso la validacion del esquema |
| 429 | TOO_MANY_REQUESTS | Limite de tasa excedido |
| 500 | UNKNOWN | Error interno del servidor |
| 503 | SERVICE_UNAVAILABLE | Indisponibilidad temporal |
Chat (Autenticacion heredada)
Sección titulada «Chat (Autenticacion heredada)»El endpoint de Chat utiliza autenticacion heredada con api_key y scenario_id en el cuerpo de la peticion. No utiliza tokens Bearer.
Enviar mensaje
Sección titulada «Enviar mensaje»POST https://chat.quickchat.ai/chat
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | Tu clave de API del Panel |
scenario_id | string | Yes | ID de tu Asistente de IA |
text | string | Yes | Mensaje de entrada del usuario |
conv_id | string | No | ID de conversacion. Omitir para iniciar una nueva conversacion |
message_context | string | No | Contexto adicional por mensaje que se pasa a la IA |
client_metadata | object | No | Pares clave-valor personalizados (max. 5 claves) adjuntos a los mensajes |
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()Respuesta 200 OK
{ "ord_number": 236, "conv_id": "abcd1234", "reply": "Hey there!"}| Field | Type | Description |
|---|---|---|
ord_number | integer | Numero secuencial de mensaje en la conversacion |
conv_id | string | Identificador de conversacion (usar para continuar la conversacion) |
reply | string | Respuesta del Asistente de IA |
Base de Conocimiento
Sección titulada «Base de Conocimiento»Obtener configuracion
Sección titulada «Obtener configuracion»Recupera la configuracion de tu Base de Conocimiento.
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()Respuesta 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 | Etiqueta corta para la Base de Conocimiento |
short_description | string | Descripcion del proposito del Asistente de IA |
ai_commands | array of strings | Instrucciones personalizadas para la IA |
retrain_state | string or null | Estado actual del entrenamiento |
Actualizar configuracion
Sección titulada «Actualizar configuracion»PATCH https://app.quickchat.ai/v1/api/knowledge_base/
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
one_word_description | string | No | Etiqueta corta para la Base de Conocimiento |
short_description | string | No | Descripcion del proposito del Asistente de IA |
ai_commands | array of strings | No | Instrucciones personalizadas para la 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()Respuesta 200 OK — Devuelve la configuracion actualizada de la Base de Conocimiento (mismo esquema que Obtener configuracion).
Articulos
Sección titulada «Articulos»Crear articulo
Sección titulada «Crear articulo»POST https://app.quickchat.ai/v1/api/knowledge_base/articles/
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Contenido del articulo |
type | string | No | "Article" (por defecto) o "Paragraph" |
title | string | No | Titulo del articulo |
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()Respuesta 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 articulos
Sección titulada «Listar articulos»GET https://app.quickchat.ai/v1/api/knowledge_base/articles/
Parametros de consulta
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Elementos por pagina |
offset | integer | No | Elementos a omitir |
types | string | No | Filtrar por tipo: Article, Paragraph |
tags | string | No | Filtrar por etiqueta |
url | string | No | Filtrar por URL |
title | string | No | Filtrar por titulo |
query | string | No | Buscar por contenido |
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()Respuesta 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}Obtener articulo
Sección titulada «Obtener articulo»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()Respuesta 200 OK — Devuelve el objeto completo del articulo (mismo esquema que la respuesta de Crear articulo).
Actualizar articulo
Sección titulada «Actualizar articulo»PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | No | Contenido actualizado del articulo |
title | string | No | Titulo actualizado |
tags | array of strings | No | Etiquetas actualizadas |
save_mode | string | No | "draft" (por defecto) o "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()Respuesta 200 OK — Devuelve el objeto del articulo actualizado.
Eliminar articulos
Sección titulada «Eliminar articulos»Elimina uno o mas articulos por ID.
DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/
Cuerpo de la peticion — Array JSON de IDs de articulos.
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],)Respuesta 200 OK
Buscar articulos
Sección titulada «Buscar articulos»Busca en el contenido de los articulos con coincidencia de texto.
GET https://app.quickchat.ai/v1/api/knowledge_base/articles/search
Parametros de consulta
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Consulta de busqueda |
is_case_insensitive | boolean | No | Busqueda sin distincion de mayusculas/minusculas (por defecto: true) |
with_title_url_and_tags | boolean | No | Incluir titulo/URL/etiquetas en la busqueda (por defecto: true) |
strict_search | boolean | No | Requerir coincidencia exacta (por defecto: false) |
num_of_display_articles | integer | No | Numero de articulos a mostrar (por defecto: 5) |
num_of_data_articles | integer | No | Numero de articulos a buscar (por defecto: 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()Respuesta 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 parrafos
Sección titulada «Listar parrafos»Lista todos los parrafos (contenido fragmentado) en la Base de Conocimiento.
GET https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs
Parametros de consulta
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Elementos por pagina |
offset | integer | No | Elementos a omitir |
query | string | No | Filtrar por contenido |
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()Respuesta 200 OK
{ "items": [ { "id": 1, "content": "Our return policy allows returns within 30 days." } ], "offset": 0, "count": 1}URLs de idioma de articulos
Sección titulada «URLs de idioma de articulos»Gestiona URLs especificas por idioma para los articulos. Estas URLs permiten vincular articulos a versiones localizadas del contenido.
Obtener URL de idioma
Sección titulada «Obtener 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()Respuesta 200 OK
{ "url": "https://example.com/en/return-policy"}Crear URL de idioma
Sección titulada «Crear URL de idioma»POST https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL para la version en el idioma especifico |
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()Respuesta 200 OK
{ "url": "https://example.com/en/return-policy"}Actualizar URL de idioma
Sección titulada «Actualizar URL de idioma»PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}/lang_urls/{language}
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL actualizada |
Respuesta 200 OK — Devuelve el objeto de URL actualizado.
Eliminar URL de idioma
Sección titulada «Eliminar 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>"},)Respuesta 200 OK
Etiquetas
Sección titulada «Etiquetas»Listar etiquetas
Sección titulada «Listar etiquetas»Recupera todas las etiquetas utilizadas en los articulos de la Base de Conocimiento.
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()Respuesta 200 OK
["policies", "faq", "product-info"]Carga de archivos
Sección titulada «Carga de archivos»Sube archivos para que sean procesados y agregados a la Base de Conocimiento como articulos.
Subir PDF
Sección titulada «Subir PDF»POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/pdf
Sube un archivo PDF. El contenido se extrae y se agrega como articulo.
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()Respuesta 200 OK
{ "status": "success", "message": "File processed successfully.", "article": { "id": 1234, "title": "document.pdf" }}| Field | Type | Description |
|---|---|---|
status | string | Estado del procesamiento |
message | string | Mensaje de resultado legible |
article | object | El articulo creado |
Subir archivo
Sección titulada «Subir archivo»POST https://app.quickchat.ai/v1/api/knowledge_base/file_upload_api/
Sube un archivo compatible (PDF, DOCX). El contenido se extrae y se agrega como articulo.
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()Respuesta 200 OK — Mismo esquema que Subir PDF.
Importar contenido externo
Sección titulada «Importar contenido externo»Importa contenido de fuentes externas a la Base de Conocimiento. Estos endpoints procesan el contenido de forma asincrona.
Hacer scraping de sitio web
Sección titulada «Hacer scraping de sitio web»Hace scraping de una sola pagina web o de un sitio web completo e importa el contenido.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/website
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL a scrapear |
mode | string | No | "individual" (por defecto), "site_wide" o "individual_with_summary" |
phrases | array of strings | No | Frases clave a extraer |
html_selector | string | No | Selector CSS para apuntar a contenido especifico |
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()Respuesta 200 OK
{ "status": "success", "url": "https://example.com/docs", "article": {}}Importar transcripcion de YouTube
Sección titulada «Importar transcripcion de YouTube»Importa la transcripcion de un video de YouTube.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/youtube
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL del video de YouTube |
toast_process_uuid | string | Yes | UUID v4 para rastrear el proceso de importacion |
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()), },)Respuesta 202 Accepted — La transcripcion se procesa de forma asincrona.
Importar sitemap
Sección titulada «Importar sitemap»Importa contenido de todos los enlaces en un sitemap XML.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/site-map
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
site_map | string | Yes | URL a un sitemap XML |
link_filter_regex | string | No | Expresion regular para filtrar que enlaces importar (por defecto: ".*") |
html_selector | string | No | Selector CSS para apuntar a contenido especifico |
summarize | boolean | No | Si se debe resumir el contenido importado (por defecto: 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()Respuesta 200 OK
{ "status": "success", "links": ["https://example.com/page1", "https://example.com/page2"]}Hacer scraping de lista de enlaces
Sección titulada «Hacer scraping de lista de enlaces»Importa contenido de una lista especifica de URLs.
POST https://app.quickchat.ai/v1/api/knowledge_base/import_external/scrape-list
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
links | array of strings | Yes | Lista de URLs a scrapear (no vacia) |
tags | array of strings | No | Etiquetas a aplicar a los articulos importados |
html_selector | string | No | Selector CSS para apuntar a contenido especifico |
summarize | boolean | No | Si se debe resumir el contenido importado (por defecto: 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()Respuesta 200 OK
{ "status": "success", "links": ["https://example.com/page1", "https://example.com/page2"]}Fuentes
Sección titulada «Fuentes»Gestiona fuentes de contenido externo (p. ej., Intercom, Shopify) que sincronizan articulos con tu Base de Conocimiento.
El parametro de ruta {source} acepta valores como "intercom", "shopify", etc.
Importar articulos de fuente
Sección titulada «Importar articulos de fuente»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()Respuesta 200 OK — Devuelve una lista de snapshots de articulos importados.
Eliminar articulos de fuente
Sección titulada «Eliminar articulos de fuente»POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/delete
Elimina todos los articulos importados de la fuente especificada.
Respuesta 204 No Content
Comparar articulos de fuente
Sección titulada «Comparar articulos de fuente»Compara los articulos locales con la fuente externa para detectar cambios.
POST https://app.quickchat.ai/v1/api/knowledge_base/sources/{source}/articles_diff
Respuesta 200 OK
[ { "internal_article_diff": "CHANGED", "external_article_diff": "UNCHANGED", "article_snapshot": {} }]| Field | Type | Description |
|---|---|---|
internal_article_diff | string | "CHANGED" o "UNCHANGED" |
external_article_diff | string | "CHANGED", "UNCHANGED" o "REMOVED" |
article_snapshot | object | Datos del snapshot del articulo |
Base de Conocimiento de Intercom
Sección titulada «Base de Conocimiento de Intercom»Endpoints dedicados para gestionar la integracion con la Base de Conocimiento de Intercom.
Actualizar articulos de Intercom
Sección titulada «Actualizar articulos de Intercom»Vuelve a obtener el contenido de Intercom para los articulos existentes.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/refresh_articles
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
article_ids | array of integers | No | IDs de articulos especificos a actualizar (por defecto: todos) |
fetch_new_articles | boolean | No | Si se deben obtener articulos nuevos (por defecto: true) |
Respuesta 204 No Content
Importar articulos de Intercom
Sección titulada «Importar articulos de Intercom»Importa todos los articulos desde Intercom.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/import
Respuesta 200 OK — Devuelve una lista de snapshots de articulos importados.
Eliminar articulos de Intercom
Sección titulada «Eliminar articulos de Intercom»Elimina todos los articulos provenientes de Intercom de la Base de Conocimiento.
POST https://app.quickchat.ai/v1/api/knowledge_base/intercom/delete
Respuesta 204 No Content
Comparar articulos de Intercom
Sección titulada «Comparar articulos de Intercom»Compara los articulos locales con Intercom para detectar cambios.
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()Respuesta 200 OK — Devuelve una lista de objetos de diferencias de articulos (mismo esquema que Comparar articulos de fuente).
Conversaciones
Sección titulada «Conversaciones»Listar conversaciones
Sección titulada «Listar conversaciones»GET https://app.quickchat.ai/v1/api_core/conversations
Parametros de consulta
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Elementos por pagina |
offset | integer | No | Elementos a omitir |
query | string | No | Buscar por numero de orden, UUID o texto del mensaje |
assignee_type | string | No | "ai_assistant", "human_operator" o "unassigned" |
source | string | No | "widget", "slack", "telegram", "whatsapp", etc. |
resolution_status | string | No | "open" o "resolved" |
created_timestamp_start_date | datetime | No | Filtrar por fecha de creacion (inicio) |
created_timestamp_end_date | datetime | No | Filtrar por fecha de creacion (fin) |
last_message_at_start_date | datetime | No | Filtrar por fecha del ultimo mensaje (inicio) |
last_message_at_end_date | datetime | No | Filtrar por fecha del ultimo mensaje (fin) |
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()Respuesta 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}Obtener detalles de conversacion
Sección titulada «Obtener detalles de conversacion»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()Respuesta 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}Metadatos de conversacion
Sección titulada «Metadatos de conversacion»Almacena y recupera metadatos personalizados para conversaciones. Los metadatos se validan contra un esquema JSON si hay uno configurado en el Panel.
Obtener metadatos
Sección titulada «Obtener metadatos»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()Respuesta 200 OK
{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}Establecer metadatos
Sección titulada «Establecer metadatos»Crea o actualiza metadatos para una conversacion.
POST https://app.quickchat.ai/v1/api_core/conversations/{conv_id}/metadata
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
metadata | object | Yes | Metadatos clave-valor a almacenar |
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()Respuesta 200 OK
{ "metadata": { "ticket_id": "T-1234", "priority": "high" }}Acciones de IA
Sección titulada «Acciones de IA»Crear Accion de IA de Base de Conocimiento
Sección titulada «Crear Accion de IA de Base de Conocimiento»Crea una nueva Accion de IA de Base de Conocimiento. Las Acciones de IA de Base de Conocimiento permiten que la IA busque subconjuntos etiquetados de la Base de Conocimiento cuando se activan.
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()Respuesta 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 de la Accion de IA |
name | string | Nombre para mostrar (max. 100 caracteres) |
description | string | Descripcion de cuando debe activarse la accion (max. 1000 caracteres) |
icon | string or null | Identificador de icono |
icon_color | string or null | Color del icono |
is_active | boolean | Si la accion esta habilitada |
is_valid | boolean | Si la accion esta correctamente configurada |
tag | string or null | Etiqueta de la Base de Conocimiento para filtrar articulos (max. 255 caracteres) |
parameter_description | string | Descripcion del parametro que la IA extrae (max. 500 caracteres) |
type | string | Siempre "knowledge_base" |
Obtener Accion de IA de Base de Conocimiento
Sección titulada «Obtener Accion de IA de Base de Conocimiento»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()Respuesta 200 OK — Devuelve el objeto de Accion de IA (mismo esquema que la respuesta de Crear Accion de IA de Base de Conocimiento).
Actualizar Accion de IA de Base de Conocimiento
Sección titulada «Actualizar Accion de IA de Base de Conocimiento»PUT https://app.quickchat.ai/v1/api/ai_actions/{action_id}/knowledge_base
Cuerpo de la peticion
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Nombre para mostrar (max. 100 caracteres) |
description | string | Yes | Cuando debe activarse la accion (max. 1000 caracteres) |
parameter_description | string | Yes | Descripcion del parametro (max. 500 caracteres) |
tag | string | Yes | Etiqueta de la Base de Conocimiento para filtrar (max. 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()Respuesta 200 OK — Devuelve el objeto de Accion de IA actualizado.