Parcourir la documentation

Suivre et intégrer

Appels et enregistrements

Chaque appel, entrant, sortant ou passé depuis un navigateur, figure dans GET/v1/calls, du plus récent au plus ancien. GET/v1/calls/{callId} y ajoute la transcription.

Filtrer les appels

ParamètreFiltre sur
agentId, campaignIdLes appels d'un agent ou d'une campagne
customerPhoneNumberLes appels avec un client donné
typeinbound, outbound, webcall
statusVoir les statuts ci-dessous
from, toDate de création, au format ISO complet avec l'heure (2026-10-01T00:00:00Z)
endedReasonUn motif de fin d'appel, en correspondance exacte
minDurationDurée facturée minimale, en secondes
isReached, isSignificant, isSuccessful, isSilenttrue ou 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"]

Statuts

StatutSignification
READYEn file d'attente dans une campagne, pas encore composé
SCHEDULEDSorti de la file d'attente, à composer dans les secondes qui suivent
IN_PROGRESSEn train de sonner ou en cours
COMPLETEDTerminé. L'endedReason indique comment.
REJECTEDUn appel entrant refusé avant que l'agent ne réponde : aucun abonnement actif, plus de crédit, ou signalé comme spam
ERRORÉchec. L'endedReason indique pourquoi.

Transcription

transcript est un seul texte, une ligne par tour de parole, chaque ligne commençant par le locuteur. Découpez-le à chaque saut de ligne pour obtenir les tours de parole.

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.

Enregistrement

recordingUrl est une URL directe, sans expiration, lisible sans authentification : conservez-la comme un secret. Elle vaut null pendant l'appel ou quand aucun enregistrement n'a été fait.

Un appel transféré se termine en COMPLETED, avec assistant-forwarded-call comme motif de fin d'appel.

Coût d'un appel

billingSeconds est la durée facturée, arrondie à la seconde supérieure. costEstimationCents la valorise au tarif de dépassement de votre abonnement, en centimes d'euro, auxquels s'ajoutent, pour un appel de campagne, les frais de numérotation, quelle qu'en soit l'issue. C'est une estimation pour comparer les appels et prévoir vos dépenses : elle ne déduit pas les minutes incluses dans votre abonnement, et vaut null quand le compte n'a pas de tarif de dépassement. Ce que vous payez réellement figure sur vos factures.