Suivre et intégrer
Appels et enregistrements
/v1/calls, du plus récent au plus ancien. GET/v1/calls/{callId} y ajoute la transcription.Filtrer les appels
| Paramètre | Filtre sur |
|---|---|
agentId, campaignId | Les appels d'un agent ou d'une campagne |
customerPhoneNumber | Les appels avec un client donné |
type | inbound, outbound, webcall |
status | Voir les statuts ci-dessous |
from, to | Date de création, au format ISO complet avec l'heure (2026-10-01T00:00:00Z) |
endedReason | Un motif de fin d'appel, en correspondance exacte |
minDuration | Durée facturée minimale, en secondes |
isReached, isSignificant, isSuccessful, isSilent | true 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
| Statut | Signification |
|---|---|
READY | En file d'attente dans une campagne, pas encore composé |
SCHEDULED | Sorti de la file d'attente, à composer dans les secondes qui suivent |
IN_PROGRESS | En train de sonner ou en cours |
COMPLETED | Terminé. L'endedReason indique comment. |
REJECTED | Un 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.
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.
