Explorar la documentación

Monitorizar e integrar

Llamadas y grabaciones

Todas las llamadas, entrantes, salientes o desde un navegador, están en GET/v1/calls, de la más reciente a la más antigua. GET/v1/calls/{callId} añade la transcripción.

Filtrar llamadas

ParámetroFiltra por
agentId, campaignIdLas llamadas de un agente o de una campaña
customerPhoneNumberLas llamadas con un cliente
typeinbound, outbound, webcall
statusConsulta los estados más abajo
from, toFecha de creación, en formato ISO completo (fecha y hora) (2026-10-01T00:00:00Z)
endedReasonUn motivo de fin de llamada, coincidencia exacta
minDurationAl menos este número de segundos facturados
isReached, isSignificant, isSuccessful, isSilenttrue o false
# Calls of a campaign that nobody answered in October
curl "https://api.callshift.ai/v1/calls?campaignId=$CAMPAIGN_ID&isReached=false&from=2026-10-01T00:00:00Z&to=2026-11-01T00:00:00Z" \
  -H "Authorization: Bearer $CALLSHIFT_API_KEY"
const params = new URLSearchParams({
  campaignId,
  isReached: "false",
  from: "2026-10-01T00:00:00Z",
  to: "2026-11-01T00:00:00Z",
});
const res = await fetch(`https://api.callshift.ai/v1/calls?${params}`, {
  headers: { Authorization: `Bearer ${process.env.CALLSHIFT_API_KEY}` },
});
const { data, pageCount } = await res.json();
res = requests.get(
    "https://api.callshift.ai/v1/calls",
    headers={"Authorization": f"Bearer {os.environ['CALLSHIFT_API_KEY']}"},
    params={
        "campaignId": campaign_id,
        "isReached": "false",
        "from": "2026-10-01T00:00:00Z",
        "to": "2026-11-01T00:00:00Z",
    },
)
calls = res.json()["data"]

Estados

EstadoSignificado
READYEn la cola de una campaña, esperando a ser marcada
SCHEDULEDSacada de la cola, se marcará en unos segundos
IN_PROGRESSSonando o en curso
COMPLETEDTerminada. El endedReason indica cómo.
REJECTEDUna llamada entrante rechazada antes de que contestara el agente: sin plan activo, sin crédito o marcada como spam
ERRORFallida. El endedReason indica por qué.

Transcripción

transcript es un solo texto, con una línea por turno, y cada línea empieza por quien habla. Divídelo por saltos de línea para obtener los turnos.

Transcript
Assistant: Hello, this is Alice, the AI assistant of Club Lyon Part-Dieu. How can I help?
User: Hi, I'd like to book a visit on Saturday.

Grabación

recordingUrl es una URL directa, que no caduca y es accesible sin autenticación: guárdala como un secreto. Vale null mientras la llamada está en curso o cuando no se hizo ninguna grabación.

Una llamada transferida termina en COMPLETED, con assistant-forwarded-call como motivo de fin de llamada.

Coste de una llamada

billingSeconds es la duración facturada, redondeada al alza. costEstimationCents la valora a la tarifa de excedente de tu plan, en céntimos de euro, más el cargo por marcación de una llamada de campaña, sea cual sea su resultado. Es una estimación para comparar llamadas y prever el gasto: no descuenta los minutos que incluye tu plan, y vale null cuando la cuenta no tiene tarifa de excedente. Lo que pagas realmente aparece en tus facturas.