Conversaciones #

Consulta el historial y administra los hilos de tu tenant.

Prepara tu terminal una vez

Variables para bash o zsh
export FLOWORDR_BASE_URL="https://app.flowordr.com"
export FLOWORDR_API_KEY="<tu-api-key>"
export FLOWORDR_TENANT_ID="<tu-tenant-id>"

Ejecuta este bloque antes de los cURL. Sustituye los valores entre ángulos por tus credenciales; ningún ejemplo contiene claves reales.

Para seguir una conversación, toma el conversationId de la primera respuesta y envíalo en la segunda pregunta. Si lo omites, el backend crea una conversación nueva que consume el cupo del plan. Con API key se guarda el turno aunque envíes persistConversation: false.
Dos turnos en la misma conversación
PRIMERA=$(curl -sS -X POST "$FLOWORDR_BASE_URL/api/rag/answer" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID" -H "Content-Type: application/json" -d '{"query":"¿Cuáles son sus horarios?"}')
CONVERSATION_ID=$(printf '%s' "$PRIMERA" | jq -r '.conversationId')
curl -X POST "$FLOWORDR_BASE_URL/api/rag/answer" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID" -H "Content-Type: application/json" -d "{"query":"¿Y los sábados?","conversationId":"$CONVERSATION_ID"}"

GET /api/conversation

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
statusquery enumNoActive, Resolved, Pending, Closed, Archived; desconocido se ignoraTodosFiltra por estado.
isActivequery booleanNotrue, falseTodosFiltra activos.
channelquery enumNoApi, Widget, Telegram, WhatsApp, Web, Playground; desconocido se ignoraTodosCanal.
pagequery integerNo≥1; menores pasan a 11Página.
pageSizequery integerNo1–200; fuera de rango pasa a 5050Resultados por página.
cURL
curl "$FLOWORDR_BASE_URL/api/conversation?page=1&pageSize=50" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 {conversations, totalCount, page, pageSize}.

GET /api/conversation/{conversationId}

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
conversationIdpath stringSíID devuelto por /api/rag/answer o por el evento meta del stream—Conversación del tenant.
cURL
curl "$FLOWORDR_BASE_URL/api/conversation/<conversation-id>" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 historial; 404 si no existe.

POST /api/conversation/{conversationId}/archive

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
conversationIdpath stringSíID devuelto por /api/rag/answer o por el evento meta del stream—Conversación del tenant.
cURL
curl -X POST "$FLOWORDR_BASE_URL/api/conversation/<conversation-id>/archive" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 conversación archivada; 404 si no existe.

DELETE /api/conversation/{conversationId}

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
conversationIdpath stringSíID devuelto por /api/rag/answer o por el evento meta del stream—Conversación del tenant.
cURL
curl -X DELETE "$FLOWORDR_BASE_URL/api/conversation/<conversation-id>" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 confirmación; 404 si no existe.

POST /api/conversation/analyze

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
conversationIdbody stringSíID existente—Conversación por analizar.
forceRefreshbody booleanNotrue, falsefalseRecalcula el análisis.
modelbody stringNoModelo disponibleConfiguradoModelo para el análisis.
cURL
curl -X POST "$FLOWORDR_BASE_URL/api/conversation/analyze" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID" -H "Content-Type: application/json" -d '{"conversationId":"<conversation-id>"}'

Respuesta: 200 análisis; 400 si falta conversationId; 404 si no existe; 500 error de análisis.

GET /api/conversation/{conversationId}/chat-view

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
conversationIdpath stringSíID devuelto por /api/rag/answer o por el evento meta del stream—Conversación del tenant.
includeAnalysisquery booleanNotrue, falsetrueIncluye análisis.
cURL
curl "$FLOWORDR_BASE_URL/api/conversation/<conversation-id>/chat-view?includeAnalysis=true" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 vista de chat; 404 si no existe.

GET /api/conversation/notifications

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
sincequery fecha ISO-8601NoFecha UTCÚltimas 24 horasConversaciones nuevas desde esa fecha.
cURL
curl "$FLOWORDR_BASE_URL/api/conversation/notifications" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 notificaciones de canales reales; no incluye Playground.

GET /api/conversation/with-analysis

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
userId / searchQuery / originquery stringNoTextoSin filtroFiltra usuario, contenido u origen.
channel / channelFilterquery enumNoWeb, Telegram, WhatsApp, Api, Widget, PlaygroundTodoschannel prevalece sobre channelFilter.
statusFilterquery enumNoActive, Resolved, Pending, Closed, ArchivedTodosEstado.
intentFilter / sentimentFilter / urgencyFilterquery enumNoValores de análisis del servidorTodosFiltros de IA.
resolvedFilter / includeArchived / includePlaygroundquery booleanNotrue, falsefalseFiltros adicionales.
sortByquery stringNonewest_first y opciones del servicionewest_firstOrden.
dateFrom / dateToquery fecha ISO-8601NoFechas válidasSin filtroPeriodo.
page / pageSizequery integerNoEnteros positivos; este endpoint no aplica el clamp de /api/conversation1 / 20Paginación.
cURL
curl "$FLOWORDR_BASE_URL/api/conversation/with-analysis?page=1&pageSize=20" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 conversaciones con análisis; 400/500 según validación o fallo de consulta.

GET /api/conversation/export

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
channel / channelFilter / statusFilter / intentFilter / sentimentFilter / resolvedFilter / urgencyFilter / searchQuery / dateFrom / dateTo / originqueryNoMismos filtros que with-analysisSin filtroFiltra filas del CSV.
includePlaygroundquery booleanNotrue, falsefalseIncluye pruebas del dueño.
maxRowsquery integerNoSe ajusta a 1–5000010000Tope de filas.
cURL
curl "$FLOWORDR_BASE_URL/api/conversation/export?maxRows=10000" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID"

Respuesta: 200 text/csv en UTF-8.

PATCH /api/conversation/v2/{conversationId}/status

NombreTipoObligatorioValores aceptados / rangoDefaultDescripción
X-Api-Key (header)stringSíClave activa de tu tenant—Autentica la integración.
X-Tenant-Id (header)UUIDCondicionalTenant autorizado para la claveTenant de la claveEnvíalo si tu clave permite varios tenants; los ejemplos lo incluyen siempre.
conversationIdpath stringSíID devuelto por /api/rag/answer o por el evento meta del stream—Conversación del tenant.
statusbody stringSíActive, Resolved, Pending, Closed, Archived—Nuevo estado.
cURL
curl -X PATCH "$FLOWORDR_BASE_URL/api/conversation/v2/<conversation-id>/status" -H "X-Api-Key: $FLOWORDR_API_KEY" -H "X-Tenant-Id: $FLOWORDR_TENANT_ID" -H "Content-Type: application/json" -d '{"status":"Resolved"}'

Respuesta: 200 conversación; 404 si no existe.