Skip to content

Listar llamadas

GET /api/v1/calls

Este endpoint permite obtener un listado de llamadas entrantes o salientes registradas en la plataforma, dentro de un rango de fechas definido por el usuario.

Es útil para monitorear la actividad telefónica, generar métricas operativas y auditar interacciones con clientes o usuarios finales.

A través de una solicitud GET, es posible recuperar llamadas aplicando filtros opcionales como tipo de llamada, campaña asociada o límites de paginación para acotar los resultados.

La respuesta del endpoint incluye un conjunto de datos estructurados que proporciona información relevante de cada llamada, como el número de origen y destino, fecha y hora de la interacción, duración total y campaña relacionada, etc.

A continuación, se describen los parámetros disponibles, ejemplos de solicitud y la estructura detallada de la respuesta esperada.

ℹ Recuerda que:

La URL base para todas las solicitudes es: https://tu-dominio.c3.pe

Importante: reemplaza tu-dominio por el nombre de dominio específico que te haya proporcionado C3.

Solicitud

Cabeceras

EncabezadoTipoObligatorioDescripción
AuthorizationString✅ SíToken de autenticación (Bearer Token).

Parámetros de consulta

ParámetroTipoObligatorioDescripción
from_datestring✅ SíFecha y hora de inicio en formato YYYY-MM-DD HH:MM:SS.
to_datestring✅ SíFecha y hora de fin en formato YYYY-MM-DD HH:MM:SS.
call_typestring❌ No (Por defecto incoming)Tipo de llamada (incoming, outgoing, etc.).
campaign_idint❌ NoID de la campaña.
with_formint❌ No (Por defecto 0)Incluir el formulario en la respuesta (1 para activarlo).
with_paginationint❌ No (Por defecto 0)Incluir la paginación en la respuesta (1 para activarlo).
pageint❌ No (Por defecto 1)Número de página (requiere with_pagination=1).
per_pageint❌ No (Por defecto 15)Resultados por página (requiere with_pagination=1).

Ejemplo de solicitud

http
GET /api/v1/calls?from_date=2025-02-01 00:00:00&to_date=2025-04-20 23:59:59&call_type=incoming&campaign_id=11&with_form=1&with_pagination=1&page=1&per_page=1

Respuesta

La API devuelve un json con la siguiente estructura.

Respuesta base 200

json
 {
  "message": "Llamadas obtenidas correctamente",
  "data": [
    {
      "id": 52,
      "campaign_id": 1,
      "campaign_name": "campaña00",
      "agent_id": 3,
      "agent_name": "Agente 1",
      "customer_number": "99999999",
      "customer_name": null,
      "ring_duration": 1,
      "talk_duration": 25,
      "total_duration": 26,
      "created_at": "2025-04-04 17:44:48",
      "call_type": "incoming_campaign",
      "result": "COMPLETECALLER",
      "is_vip": 0,
      "extension": "7002"
    }
  ]
}

Respuesta con formulario 200

json
{
  "message": "Llamadas obtenidas correctamente",
  "data": [
    {
      "id": 52,
      "campaign_id": 1,
      "campaign_name": "campaña00",
      "agent_id": 3,
      "agent_name": "Agente 1",
      "customer_number": "99999999",
      "customer_name": null,
      "ring_duration": 1,
      "talk_duration": 25,
      "total_duration": 26,
      "created_at": "2025-04-04 17:44:48",
      "call_type": "incoming_campaign",
      "result": "COMPLETECALLER",
      "is_vip": 0,
      "extension": "7002",
      "call_form": {
        "id": 38,
        "fields": [
          {
            "name": "Nombre",
            "value": null
          },
          {
            "name": "destino",
            "value": null
          }
        ],
        "form_id": "90465948-34ed-4635-9021-29415d2379c7",
        "form_type": "INBOUND",
        "created_at": "2025-04-04 17:47:13.000000",
        "submit_type": "AUTOMATIC"
      }
    }
  ]
}

Respuesta con paginación 200

json
{
  "message": "Llamadas obtenidas correctamente",
  "data": [
    {
      "id": 52,
      "campaign_id": 1,
      "campaign_name": "campaña00",
      "agent_id": 3,
      "agent_name": "Agente 1",
      "customer_number": "99999999",
      "customer_name": null,
      "ring_duration": 1,
      "talk_duration": 25,
      "total_duration": 26,
      "created_at": "2025-04-04 17:44:48",
      "call_type": "incoming_campaign",
      "result": "COMPLETECALLER",
      "is_vip": 0,
      "extension": "7002",
      "call_form": {
        "id": 38,
        "fields": [
          {
            "name": "Nombre",
            "value": null
          },
          {
            "name": "destino",
            "value": null
          }
        ],
        "form_id": "90465948-34ed-4635-9021-29415d2379c7",
        "form_type": "INBOUND",
        "created_at": "2025-04-04 17:47:13.000000",
        "submit_type": "AUTOMATIC"
      }
    }
  ],
  "pagination": {
    "total_items": 1,
    "items_per_page": 15,
    "current_page": 1,
    "total_pages": 1
  }
}

Definición de atributos

CampoTipoDescripción
messageStringMensaje de respuesta del servidor.
dataArrayLista de llamadas obtenidas.
data.idIntegerIdentificador de la llamada.
data.campaign_idIntegerIdentificador de la campaña.
data.campaign_nameStringNombre de la campaña.
data.agent_idIntegerIdentificador del agente.
data.agent_nameStringNombre del agente.
data.customer_numberStringNúmero del cliente.
data.customer_nameString | nullNombre del cliente.
data.ring_durationIntegerDuración del timbrado en segundos.
data.talk_durationIntegerDuración de la conversación en segundos.
data.total_durationIntegerDuración total de la llamada en segundos.
data.created_atStringFecha y hora de creación de la llamada.
data.call_typeStringTipo de llamada (ej. "incoming_campaign", "external_incoming", "internal_incoming", "outgoing_campaign).
data.resultStringResultado de la llamada (ej. "COMPLETECALLER", "ANSWERED", "NO ANSWERED", "ABANDON", "COMPLETEAGENT").
data.is_vipIntegerIndicador si el cliente es VIP.
data.extensionStringExtensión de la llamada.
data.call_formObjectInformación del formulario asociado a la llamada.
data.call_form.idIntegerIdentificador del formulario.
data.call_form.fieldsArrayLista de campos del formulario.
data.call_form.fields.nameStringNombre del campo del formulario.
data.call_form.fields.valueString | nullValor del campo del formulario.
data.call_form.form_idStringUUID del formulario.
data.call_form.form_typeStringTipo de formulario (ej. "INBOUND", "OUTBOUND").
data.call_form.created_atStringFecha y hora de creación del formulario.
data.call_form.submit_typeStringTipo de envío del formulario (ej. "AUTOMATIC", "MANUALLY").
paginationObjectInformación de la paginación.
pagination.total_itemsIntegerTotal de elementos encontrados.
pagination.items_per_pageIntegerElementos por página.
pagination.current_pageIntegerPágina actual.
pagination.total_pagesIntegerTotal de páginas.

Errores generales

Código HTTPTipoCausa común
401UnauthorizedEl token de acceso no fue proporcionado en el encabezado Authorization, es inválido o ha sido revocado. Verifique que el token sea correcto y esté activo.
422Unprocessable EntityLa solicitud fue entendida, pero contiene errores semánticos que impiden su procesamiento. Esto puede deberse a:
1. Parámetros faltantes o inválidos (ej, from_date no es una fecha válida);
2. Recurso inexistente (wa_number no registrado en el sistema);
3. Violación de reglas de negocio (el rango de fechas excede el límite permitido).
500Server ErrorError interno del servidor. Intenta nuevamente más tarde o contacta soporte técnico.