Saltar al contenido principal
Recuperas las conversaciones que atendió un asesor humano para analizar tiempos de respuesta, estados de cierre y asignaciones. Recibes metadatos de operadores, usuarios y bots involucrados dentro de un rango de fechas definido.

Endpoint

GET https://api.jelou.ai/v1/external/conversations

Autenticación

CampoUbicaciónTipoRequeridoDescripción
AuthorizationHeaderstringCredenciales en formato clientId:clientSecret.

Parámetros de consulta

CampoUbicaciónTipoRequeridoValor por defectoDescripción
startAtQuerystringFecha de inicio del rango en formato ISO 8601 (UTC). Ejemplo: 2026-03-10T00:00:00.000Z
endAtQuerystringFecha de fin del rango en formato ISO 8601 (UTC). Ejemplo: 2026-03-17T23:59:59.999Z
limitQueryintegerNo10Número máximo de conversaciones por página. Máximo: 50.
pageQueryintegerNo1Número de página.
botIdQuerystringNoFiltra conversaciones por el identificador del bot.
userIdQuerystringNoFiltra conversaciones por el identificador del usuario.
operatorIdQueryintegerNoFiltra conversaciones por el identificador del operador.
conversationIdQuerystringNoFiltra por el identificador único de una conversación.
stateQuerystringNoFiltra por estado de la conversación: active, closed, resolved, expired, transferred.
Usa ventanas de tiempo acotadas para optimizar la consulta y evita rangos demasiado amplios si manejas altos volúmenes de conversaciones.

Ejemplos de solicitud

curl --request GET \
  --url 'https://api.jelou.ai/v1/external/conversations?startAt=2026-03-10T00%3A00%3A00.000Z&endAt=2026-03-17T23%3A59%3A59.999Z&page=1' \
  --header 'authorization: Basic <clientId:clientSecret>'

Respuestas

{
  "pagination": {
    "limit": 10,
    "page": 1,
    "total": 88,
    "offset": 0,
    "totalPages": 9
  },
  "_metadata": {},
  "results": [
    {
      "_id": "CONVERSATION_ID_1",
      "operator": {
        "id": 1000,
        "names": "OPERATOR_NAME",
        "email": "[email protected]"
      },
      "user": {
        "id": "USER_ID",
        "names": "USER_NAME"
      },
      "bot": {
        "id": "BOT_ID",
        "name": "BOT_NAME"
      },
      "company": {
        "name": "COMPANY_NAME"
      },
      "assignationMethod": {
        "teamName": "TEAM_NAME"
      },
      "state": "transferred",
      "wasReplied": false,
      "childConversation": "CONVERSATION_ID_2",
      "parentConversation": null,
      "endedReason": "transferred",
      "startAt": "2026-03-10 08:00:00",
      "endAt": "2026-03-10 08:01:00",
      "firstRepliedAtOperator": null,
      "origin": "organic",
      "timeRepliedOperator": null,
      "conversationDuration": 60000,
      "avgOperatorResponseTime": null
    },
    {
      "_id": "CONVERSATION_ID_2",
      "operator": {
        "id": 2000,
        "names": "OPERATOR_NAME_2",
        "email": "[email protected]"
      },
      "user": {
        "id": "USER_ID",
        "names": "USER_NAME"
      },
      "bot": {
        "id": "BOT_ID",
        "name": "BOT_NAME"
      },
      "company": {
        "name": "COMPANY_NAME"
      },
      "assignationMethod": {
        "teamName": "TEAM_NAME_2"
      },
      "state": "closed",
      "wasReplied": true,
      "childConversation": null,
      "parentConversation": "CONVERSATION_ID_1",
      "endedReason": "closed_by_operator",
      "startAt": "2026-03-10 08:01:00",
      "endAt": "2026-03-10 08:02:00",
      "firstRepliedAtOperator": "2026-03-10 08:01:10",
      "origin": "transfer",
      "timeRepliedOperator": 10000,
      "conversationDuration": 60000,
      "avgOperatorResponseTime": 0
    }
  ],
  "links": [
    {
      "number": 1,
      "url": "/v1/external/conversations?startAt=2026-03-10T02%3A29%3A20.164Z&endAt=2026-03-17T02%3A29%3A20.164Z&page=1&limit=10"
    },
    {
      "number": 2,
      "url": "/v1/external/conversations?startAt=2026-03-10T02%3A29%3A20.164Z&endAt=2026-03-17T02%3A29%3A20.164Z&page=2&limit=10"
    },
    {
      "number": 3,
      "url": "/v1/external/conversations?startAt=2026-03-10T02%3A29%3A20.164Z&endAt=2026-03-17T02%3A29%3A20.164Z&page=3&limit=10"
    }
  ]
}
{
  "message": "Authentication failed"
}
{
  "message": [
    "Los valores ingresados no son correctos."
  ],
  "statusMessage": "failed",
  "status": 0,
  "error": {
    "code": "E0422",
    "key": "VALIDATOR_ERROR",
    "description": "Error to be thrown when cannot process request because of incoming values",
    "developerMessages": {
      "es": "Los valores del request no son correctos para ser procesados.",
      "en": "The request values are not correct for processing."
    },
    "clientMessages": {
      "es": "Los valores ingresados no son correctos.",
      "en": "The values entered are not correct."
    }
  },
  "validationError": {
    "startAt": [
      {
        "es": "El campo startAt es requerido",
        "en": "The startAt field is required",
        "pt": "O campo startAt é obrigatório"
      }
    ]
  }
}
{
  "message": ["We are having trouble processing your request. Please try again later."],
  "statusMessage": "failed",
  "status": 0
}

Detalle de la respuesta

Objeto results

CampoTipoDescripción
_idstringIdentificador único de la conversación.
operatorobjectInformación del operador que atendió la conversación.
operator.idintegerIdentificador del operador.
operator.namesstringNombre del operador.
operator.emailstringCorreo electrónico del operador.
userobjectInformación del usuario.
user.idstringIdentificador del usuario.
user.namesstringNombre del usuario.
botobjectInformación del bot asociado.
bot.idstringIdentificador del bot.
bot.namestringNombre del bot.
companyobjectInformación de la empresa.
company.namestringNombre de la empresa.
assignationMethodobjectMétodo de asignación.
assignationMethod.teamNamestringNombre del equipo al que fue asignada la conversación.
statestringEstado de la conversación: active, closed, resolved, expired, transferred.
wasRepliedbooleanIndica si la conversación recibió respuesta del operador.
childConversationstring | nullIdentificador de la conversación hija en caso de transferencia.
parentConversationstring | nullIdentificador de la conversación padre si fue recibida por transferencia.
endedReasonstringMotivo de cierre: closed_by_operator, expired, transferred, entre otros.
startAtstringFecha y hora de inicio de la conversación.
endAtstringFecha y hora de finalización de la conversación.
firstRepliedAtOperatorstring | nullFecha y hora de la primera respuesta del operador.
originstringOrigen de la conversación: organic, transfer, induced_by_operator, entre otros.
timeRepliedOperatornumber | nullTiempo hasta la primera respuesta del operador en milisegundos.
conversationDurationnumberDuración total de la conversación en milisegundos.
avgOperatorResponseTimenumber | nullTiempo promedio de respuesta del operador en milisegundos.

Métricas de rendimiento

Usa los campos timeRepliedOperator y conversationDuration para analizar la eficiencia de tu equipo de soporte:
  • timeRepliedOperator: Mide el tiempo que tarda un asesor en dar la primera respuesta (en milisegundos).
  • conversationDuration: Mide la duración total desde el inicio hasta el cierre de la conversación (en milisegundos).