Base de Conocimientos
Cada agente tiene una colección de entradas de conocimiento — fragmentos de información que el agente puede consultar en tiempo de ejecución para responder con datos específicos de tu negocio (manuales, políticas, FAQs, fichas de producto, etc.).
Cuando subes un archivo o ingieres una URL, Platica se encarga del procesamiento automático: extrae el contenido, genera un título y descripción si no los proveíste, lo divide en fragmentos si es muy largo, deduplica si el archivo ya existía, e indexa todo para que el agente pueda buscarlo.
Listar Entradas
GET https://api.platica.mx/v1/agents/{agentId}/knowledge Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
Parámetros de query
| Parámetro | Tipo | Descripción | Default |
|---|---|---|---|
status | string | Lista separada por comas: active, draft, inactive, training, failed | (todas) |
limit | integer | Máximo de entradas a devolver | (sin límite) |
Respuesta
{
"count": 1,
"knowledge": [
{
"id": "FXjQXMr3...",
"name": "get_politicas_devolucion_a1b2c3",
"topic": "Políticas de devolución",
"description": "Documento oficial v2.3 con plazos, condiciones y excepciones.",
"status": "active",
"fileType": "pdf",
"fileName": "manual.pdf",
"lastUpdate": "2026-05-28T06:14:21.000Z"
}
]
} Obtener Entrada
GET https://api.platica.mx/v1/agents/{agentId}/knowledge/{knowledgeId} Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
knowledgeId | string | Identificador de la entrada | ✓ |
Respuesta
Devuelve la entrada completa, incluyendo el contenido ya procesado.
Crear desde URLs
Cuando el archivo ya está alojado públicamente (Firebase Storage, S3, etc.), referencialo por URL y Platica lo descarga y procesa.
POST https://api.platica.mx/v1/agents/{agentId}/knowledge Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
Cuerpo de la solicitud
{
"files": [
{
"fileUrl": "https://storage.googleapis.com/.../manual.pdf",
"fileName": "manual.pdf",
"fileType": "pdf",
"topic": "Manual del producto",
"description": "Manual oficial v2.3"
}
],
"setActive": true
} | Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
files | array | Lista de archivos a procesar (al menos uno) | ✓ |
files[].fileUrl | string | URL pública del archivo. Requerido si no se envía content. | * |
files[].content | string | Texto crudo de la entrada. Requerido si no se envía fileUrl. Ver crear desde texto . | * |
files[].fileName | string | Nombre del archivo (con extensión) | ✓ |
files[].fileType | string | Tipo ("pdf", "docx", "txt", etc.) | ✓ |
files[].topic | string | Título corto (≤ 30 chars). Si se omite, se genera automáticamente. | — |
files[].description | string | Descripción (≤ 900 chars). Si se omite, se genera automáticamente. | — |
setActive | boolean | Marcar las entradas como active al terminar (en lugar de draft) | true |
Cada elemento de files debe incluir fileUrl o content. Si falta cualquiera de los dos, la API responde 400.
Respuesta
{
"status": "success",
"message": "Knowledge entries created",
"data": {
"totalFiles": 1,
"successful": 1,
"failed": { "count": 0, "files": [] }
}
} Crear desde texto
Si no tienes un archivo, crea la entrada directamente desde texto crudo enviando content en lugar de fileUrl. Es el mismo endpoint POST .../knowledge; solo cambia el contenido de files[]:
{
"files": [
{
"fileName": "politica-devoluciones.txt",
"fileType": "txt",
"content": "Aceptamos devoluciones dentro de los 30 días posteriores a la compra...",
"topic": "Devoluciones",
"description": "Política de devoluciones"
}
],
"setActive": true
} Con content, Platica omite la descarga y el parseo: usa el texto tal cual. Si envías topic y description, se salta la generación automática con IA; si los omites, se generan a partir del texto. La respuesta es idéntica a crear desde URLs .
Subir Archivos
Para subir el binario directamente sin pre-hostear, manda multipart al endpoint de upload. Platica lo guarda, lo hace accesible vía URL pública y te devuelve esa URL para que la pases a crear desde URLs .
POST https://api.platica.mx/v1/agents/{agentId}/knowledge/upload Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
Cuerpo de la solicitud
Content-Type: multipart/form-data con uno o más campos files:
curl -X POST https://api.platica.mx/v1/agents/{agentId}/knowledge/upload \
-H "Authorization: Bearer pl_key_..." \
-F "files=@manual.pdf" \
-F "files=@politicas.docx" Límite: 20 MB por request multipart.
Respuesta
{
"status": "success",
"message": "Files uploaded",
"data": {
"success": true,
"uploaded": [
{
"fileName": "manual.pdf",
"fileUrl": "https://storage.googleapis.com/.../manual.pdf",
"fileType": "pdf",
"fileSize": 481923
}
]
}
} Este endpoint sólo sube el archivo y devuelve su URL pública. Para que se procese y aparezca como entrada de conocimiento, debes hacer una segunda llamada a POST /knowledge pasando las fileUrl que devolvió el upload.
Ingerir URLs Web
Ingesta el contenido de páginas web, lo convierte a texto y crea entradas de conocimiento con título y descripción generados automáticamente.
POST https://api.platica.mx/v1/agents/{agentId}/knowledge/web Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
Cuerpo de la solicitud
{
"urls": [
"https://docs.miempresa.com/faq",
"https://miempresa.com/politicas/devoluciones"
]
} | Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
urls | array de strings | URLs HTTP(S) a ingerir (al menos una) | ✓ |
Respuesta
{
"status": "success",
"message": "Web pages ingested",
"data": {
"totalUrls": 2,
"successful": 2,
"failed": { "count": 0, "details": [] }
}
} Actualizar Entrada
Actualiza una entrada existente: agrega texto al contenido, lo reemplaza por completo, cambia metadata o estado, o re-procesa la fuente original.
PATCH https://api.platica.mx/v1/agents/{agentId}/knowledge/{knowledgeId} Este endpoint no crea entradas: si el knowledgeId no existe, la API responde 404. Para agregar conocimiento nuevo usa crear desde URLs o crear desde texto .
Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
knowledgeId | string | Identificador de la entrada | ✓ |
Cuerpo de la solicitud
Cambiar status:
{ "status": "active" } Agregar texto al final del contenido (sin reescribir lo existente):
{ "appendContent": "Nuevo párrafo que se agrega al final." } Reemplazar el contenido directamente (sobrescribe todo el texto). También puedes actualizar topic y description:
{ "content": "Nuevo contenido completo de la entrada...", "topic": "Devoluciones", "description": "Política actualizada" } Re-procesar la fuente original (re-extrae y re-genera metadata):
{ "reprocess": true } | Parámetro | Tipo | Descripción |
|---|---|---|
status | string | "active", "draft", "inactive", "training", "failed" |
appendContent | string | Agrega texto al final del contenido actual (no reescribe lo existente). No combinar con content. |
appendSeparator | string | Separador entre el contenido actual y el texto agregado. Por defecto: doble salto de línea ("\n\n"). |
content | string | Reemplaza directamente el contenido completo de la entrada |
topic | string | Título corto (≤ 30 chars) |
description | string | Descripción (≤ 900 chars) |
reprocess | boolean | Volver a procesar el archivo o URL original |
skipParsing | boolean | Saltar el procesamiento automático cuando se reprocesa |
updates | objeto | Campos crudos de la entrada (avanzado). Los shorthands de arriba (status, content, topic, etc.) tienen prioridad sobre el mismo campo dentro de updates. |
Respuesta
{
"status": "success",
"message": "Knowledge entry updated"
} Eliminar Entrada
Elimina una entrada de la base de conocimientos del agente. El agente deja de poder consultarla.
DELETE https://api.platica.mx/v1/agents/{agentId}/knowledge/{knowledgeId} Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
knowledgeId | string | Identificador de la entrada | ✓ |
Respuesta
{
"status": "success",
"message": "Knowledge entry deleted"
} Re-procesar Entrada
Vuelve a procesar la fuente original de una entrada (descarga el archivo o URL otra vez, re-extrae el contenido y regenera la metadata).
POST https://api.platica.mx/v1/agents/{agentId}/knowledge/{knowledgeId}/reparse Parámetros de URL
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
agentId | string | Identificador único del agente | ✓ |
knowledgeId | string | Identificador de la entrada | ✓ |
Cuerpo de la solicitud
{ "web": false } | Parámetro | Tipo | Descripción | Default |
|---|---|---|---|
web | boolean | true si la entrada vino de una URL web, false si vino de un archivo | false |
También se acepta { "source": "web" } como alias.
Respuesta
{
"status": "success",
"message": "Knowledge entry reparse queued"
} Notas
- Si subes un archivo idéntico al de una entrada existente (mismo contenido), el sistema deduplica y no crea una nueva.
- Para archivos muy largos, el contenido se divide en varias entradas relacionadas para mantener una buena calidad de búsqueda.