API v2
Usa la API v2 para la administración de agentes, chat en streaming, conversaciones, comentarios, fuentes, contactos, leads y configuraciones.
La API v2 es una API REST estructurada para administrar agentes y crear experiencias de chat personalizadas. Agrega administración de agentes, chat en streaming, historial de conversaciones, comentarios sobre mensajes, contactos, leads, fuentes, configuraciones y endpoints de entrenamiento.
El acceso a la API requiere un plan Hobby o superior con facturación activa.
URL base
https://your-domain.com/api/v2
Autenticación
Excepto en la verificación de estado (health check), envía la clave de API de tu espacio de trabajo como token bearer:
Authorization: Bearer YOUR_API_KEY
Crea y revoca claves de API desde Configuración > Claves de API.
Formato de respuesta
La mayoría de las respuestas exitosas devuelven un objeto de recurso o un envoltorio data:
{
"data": []
}
Los endpoints de listado incluyen paginación por cursor:
{
"data": [],
"pagination": {
"cursor": null,
"hasMore": false,
"total": 0
}
}
Los errores usan un objeto error estructurado:
{
"error": {
"code": "VALIDATION_INVALID_BODY",
"message": "Invalid request body"
}
}
Cada respuesta de v2 incluye un encabezado x-request-id. Inclúyelo al contactar a soporte sobre una solicitud a la API.
Alcance de las conversaciones
Los endpoints de conversaciones de solo lectura usan source=api_v2 de forma predeterminada. Configura source=widget para devolver conversaciones del widget y del Playground; las filas del Playground se almacenan con el origen widget. Configura source=all para devolver conversaciones de la API v2, del widget y del Playground. Los resultados siempre se limitan al agente de la cuenta autenticada. Un valor de source inválido o más de un parámetro de consulta source devuelve 400 VALIDATION_INVALID_BODY. La continuación de chat, los reintentos, los comentarios, el listado de mensajes y las lecturas por usuario siguen limitados a las conversaciones de la API v2.
Verificación de estado
GET /api/v2/health
La verificación de estado no requiere autenticación.
Éxito: 200 OK
{
"status": "ok",
"timestamp": 1784332800
}
timestamp es la marca de tiempo Unix actual en segundos.
Chat
POST /api/v2/agents/{agentId}/chat
Solicitud:
{
"message": "What plans do you offer?",
"conversationId": "optional-existing-conversation-id",
"userId": "optional-user-id",
"stream": true
}
| Field | Required | Notes |
|---|---|---|
message | Sí | De 1 a 32.000 caracteres. |
conversationId | No | Continúa una conversación de la API v2. Los ID desconocidos devuelven 404. |
userId | No | ID estable del usuario final para agrupar conversaciones de la API. Se permiten letras, números, ., _ y -. |
stream | No | El valor predeterminado es true. Configura false para obtener una sola respuesta JSON. |
Las respuestas en streaming usan Server-Sent Events. El stream incluye los eventos message-start, text-start, text-delta, text-end, message-metadata, finish y [DONE]. Un fallo en el stream o en el hook de finalización emite un evento error con error.code establecido en CHAT_STREAMING_ERROR; este código de protocolo exclusivo de SSE es independiente del catálogo de errores REST estructurado. message-metadata contiene el ID del mensaje del asistente cuando la persistencia se realiza correctamente, además del ID de conversación, el ID de usuario, el motivo de finalización y el uso. Su messageId es null cuando no se persistió ningún mensaje del asistente. Cuando la respuesta se pausa en una acción del lado del cliente, el stream también emite un evento tool-call con { "id", "name", "arguments" }; envía el resultado al endpoint de tool-result para reanudar la conversación — la respuesta a esa solicitud transmite la continuación.
Las respuestas sin streaming devuelven:
{
"data": {
"id": "123",
"role": "assistant",
"parts": [{ "type": "text", "text": "..." }],
"pendingToolCall": null,
"metadata": {
"userMessageId": "122",
"conversationId": "abc123",
"userId": "user_123",
"finishReason": "stop",
"usage": { "credits": 1 }
}
}
}
Los valores data.id y metadata.userMessageId de las respuestas sin streaming son ID de mensaje numéricos serializados como strings, o null cuando el mensaje correspondiente no se persistió. metadata.userId es el ID de usuario proporcionado o almacenado, o null. pendingToolCall es null, salvo que la respuesta se haya pausado en una llamada a una herramienta del lado del cliente; en ese caso contiene { "id", "name", "arguments" } para el endpoint de resultados de herramientas.
Resumen de endpoints
| Method | Endpoint | Description | Reference |
|---|---|---|---|
| GET | /api/v2/health | Verifica el estado de la API. | Verificación de estado |
| GET | /api/v2/agents | Lista los agentes. | Agentes y configuración |
| POST | /api/v2/agents | Crea un agente. | Agentes y configuración |
| GET | /api/v2/agents/{agentId} | Obtiene un agente. | Agentes y configuración |
| PATCH | /api/v2/agents/{agentId} | Actualiza el nombre o la URL del agente. | Agentes y configuración |
| DELETE | /api/v2/agents/{agentId} | Elimina un agente. | Agentes y configuración |
| POST | /api/v2/agents/{agentId}/chat | Envía un mensaje de chat. | Chat |
| GET | /api/v2/agents/{agentId}/conversations | Lista conversaciones por origen. | Conversaciones |
| GET | /api/v2/agents/{agentId}/conversations/export | Exporta conversaciones con sus mensajes. | Conversaciones |
| GET | /api/v2/agents/{agentId}/conversations/{conversationId} | Obtiene una conversación por origen. | Conversaciones |
| GET | /api/v2/agents/{agentId}/conversations/{conversationId}/messages | Lista los mensajes de una conversación de la API v2. | Conversaciones |
| POST | /api/v2/agents/{agentId}/conversations/{conversationId}/retry | Reintenta una respuesta del asistente de la API v2. | Conversaciones |
| POST | /api/v2/agents/{agentId}/conversations/{conversationId}/tool-result | Envía el resultado de una herramienta del lado del cliente. | Conversaciones |
| PATCH | /api/v2/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/feedback | Establece o borra los comentarios de un mensaje del asistente. | Conversaciones |
| GET | /api/v2/agents/{agentId}/users/{userId}/conversations | Lista las conversaciones de la API v2 de un usuario final. | Conversaciones |
| GET | /api/v2/agents/{agentId}/sources | Lista las fuentes de entrenamiento. | Fuentes y entrenamiento |
| POST | /api/v2/agents/{agentId}/sources/text | Agrega una fuente de texto. | Fuentes y entrenamiento |
| POST | /api/v2/agents/{agentId}/sources/qna | Agrega una fuente de preguntas y respuestas. | Fuentes y entrenamiento |
| POST | /api/v2/agents/{agentId}/sources/url | Agrega o reentrena una fuente de URL. | Fuentes y entrenamiento |
| POST | /api/v2/agents/{agentId}/sources/file/upload-url | Crea URL firmadas para subir archivos directamente. | Fuentes y entrenamiento |
| POST | /api/v2/agents/{agentId}/sources/file | Registra los archivos subidos e inicia el procesamiento. | Fuentes y entrenamiento |
| DELETE | /api/v2/agents/{agentId}/sources/{documentId} | Elimina una fuente. | Fuentes y entrenamiento |
| GET | /api/v2/agents/{agentId}/contacts | Lista los contactos. | Contactos |
| POST | /api/v2/agents/{agentId}/contacts | Crea o actualiza un contacto por ID externo. | Contactos |
| POST | /api/v2/agents/{agentId}/contacts/import | Importa contactos en bloque. | Contactos |
| GET | /api/v2/agents/{agentId}/leads | Lista los leads capturados. | Contactos y leads |
| GET/PATCH | /api/v2/agents/{agentId}/settings/ai | Lee o actualiza la configuración de IA. | Agentes y configuración |
| GET/PATCH | /api/v2/agents/{agentId}/settings/design | Lee o actualiza la configuración de diseño. | Agentes y configuración |
| GET/PATCH | /api/v2/agents/{agentId}/settings/security | Lee o actualiza la configuración de seguridad. | Agentes y configuración |
| GET/PATCH | /api/v2/agents/{agentId}/settings/notifications | Lee o actualiza la configuración de notificaciones. | Agentes y configuración |
| GET/PATCH | /api/v2/agents/{agentId}/settings/training | Lee o actualiza la configuración de entrenamiento. | Agentes y configuración |
| GET | /api/v2/agents/{agentId}/channels/instagram | Obtiene la conexión de Instagram, las automatizaciones y los iniciadores de conversación. | Canal de Instagram |
| GET/PATCH | /api/v2/agents/{agentId}/channels/instagram/automations/{key} | Lee o actualiza una automatización de Instagram. | Canal de Instagram |
| GET/PATCH | /api/v2/agents/{agentId}/channels/instagram/conversation-starters | Lee o actualiza los iniciadores de conversación de Instagram. | Canal de Instagram |
| GET | /api/v2/agents/{agentId}/train | Obtiene el estado del entrenamiento. | Fuentes y entrenamiento |
| POST | /api/v2/agents/{agentId}/train | Inicia el reentrenamiento de fuentes web. | Fuentes y entrenamiento |
Comentarios
Usa los comentarios para marcar los mensajes del asistente de la API v2 como positive, negative o null. Consulta Conversaciones, mensajes y comentarios para conocer el esquema de la solicitud, la respuesta y el comportamiento de errores.
Paginación
Trata los cursores como tokens opacos devueltos por la API. Reenvía el valor de pagination.cursor sin modificarlo en la siguiente solicitud; no lo construyas ni lo decodifiques.
| Query | Notes |
|---|---|
limit | El valor predeterminado es 20. Debe ser un entero de 1 a 100, salvo que un endpoint documente un máximo menor; la exportación de conversaciones tiene un máximo de 20. |
cursor | Cursor opaco devuelto por la página anterior. Los cursores inválidos devuelven 400 VALIDATION_INVALID_BODY. |
Contacts también admite search. Leads admite los filtros de fecha y hora ISO 8601 inclusivos createdAfter y createdBefore. Sources admite sourceType con web_crawl, file_upload, text_snippet o qna_entry.
Los formatos de cursor son un detalle interno de implementación. Los clientes deben tratar todos los cursores como opacos y reenviarlos sin modificarlos, sin construirlos ni decodificarlos.
Errores comunes
| Code | Meaning |
|---|---|
AUTH_INVALID_API_KEY | No se puede validar la clave de API del bearer. |
SUBSCRIPTION_PLAN_REQUIRED | El plan del espacio de trabajo no incluye acceso a la API. |
AGENT_NOT_FOUND | El agente no existe o no pertenece a la cuenta de la clave de API. |
VALIDATION_INVALID_BODY | Un cuerpo de solicitud, valor de ruta, parámetro de consulta, límite o cursor no superó la validación. |
Consulta el catálogo completo de errores de la API v2 para ver los 27 códigos declarados, los estados HTTP, sus disparadores y los códigos reservados.
Referencia
- Catálogo de errores
- Agentes y configuración
- Conversaciones, mensajes, reintentos y comentarios
- Fuentes y entrenamiento
- Contactos y leads
- Canal de Instagram