CX-Engine enregistre chaque appel reçu du PBX (via CRM Lookup ou en le récupérant directement sur le PBX) avant de le traiter et de le pousser dans le CRM connecté. Cet endpoint liste ces appels enregistrés.
GET /api/crm/phone-callslit les appels enregistrés dans CX-Engine.GET /api/crm/lookup/phone-callslit les appels enregistrés dans le CRM connecté (voir CRM Lookup).
En-têtes : Authorization: Bearer {token-workspace}
#GET /api/crm/phone-calls
Retourne une liste paginée des appels du client sélectionné, du plus récent au plus ancien.
Requiert le scope OAuth client et la permission crm-phone-call.view. Le client est sélectionné avec le paramètre de requête customer_account (voir Choix du compte client).
Paramètres de requête
| Paramètre | Description |
|---|---|
customer_account |
Requis. Code de compte client |
filter[direction] |
inbound, outbound ou internal |
filter[status] |
completed, failed, busy ou no-answer |
filter[answered] |
Appel décroché ou non (1 ou 0) |
filter[processing_status] |
pending, queued, in_progress, completed, skipped ou failed |
filter[number_from] |
Numéro de l'appelant |
filter[number_to] |
Numéro de l'appelé |
filter[number_did] |
Numéro SDA (DID) |
filter[start_time] |
Heure de début de l'appel |
filter[end_time] |
Heure de fin de l'appel |
filter[duration] |
Durée en secondes |
filter[subject] |
Objet de l'appel |
filter[body] |
Notes de l'appel |
filter[agent_first_name] |
Prénom de l'agent |
filter[agent_last_name] |
Nom de l'agent |
filter[agent_email] |
Adresse email de l'agent |
filter[pbx3cx_host_id] |
ID de l'hôte 3CX d'origine de l'appel |
filter[pbx3cx_call_id] |
ID de l'appel sur le PBX 3CX |
include |
Relations à charger, séparées par des virgules : segments, logs |
sort |
start_time, end_time, created_at ou updated_at. Préfixer par - pour un ordre décroissant. Par défaut : -start_time |
per_page |
Résultats par page (défaut : 20) |
page |
Numéro de page |
Les filtres texte acceptent des valeurs partielles (filter[agent_email]=acme.com renvoie tous les agents de ce domaine).
Réponse 200 : réponse paginée
{
"current_page": 1,
"data": [
{
"id": 1842,
"uuid": "9b1d6c1e-6f0a-4c7e-9a43-2f5d8a7b1c20",
"source": "3cx",
"ingested_via": "webhook",
"customer_id": 12,
"pbx3cx_host_id": 3,
"pbx3cx_call_id": "48211",
"processing_status": "completed",
"processing_step": "complete",
"number_from": "+33612345678",
"number_to": { "number": "201" },
"number_did": "+33142000000",
"direction": "inbound",
"status": "completed",
"answered": true,
"start_time": "2026-10-08T09:15:02.000000Z",
"end_time": "2026-10-08T09:19:40.000000Z",
"duration": {
"y": 0, "m": 0, "d": 0, "h": 0, "i": 0, "s": 278, "f": 0,
"invert": 0, "days": false, "from_string": false
},
"subject": "Support call",
"body": null,
"recording_url": null,
"agent_first_name": "Bob",
"agent_last_name": "Smith",
"agent_email": "bob@acme.com",
"queue_extension": "800",
"created_at": "2026-10-08T09:19:41.000000Z",
"updated_at": "2026-10-08T09:20:05.000000Z"
}
],
"first_page_url": "https://acme.cx-engine.app/api/crm/phone-calls?page=1",
"from": 1,
"last_page": 12,
"last_page_url": "https://acme.cx-engine.app/api/crm/phone-calls?page=12",
"links": [...],
"next_page_url": "https://acme.cx-engine.app/api/crm/phone-calls?page=2",
"path": "https://acme.cx-engine.app/api/crm/phone-calls",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 231
}
Notes sur les champs
| Champ | Description |
|---|---|
source |
PBX d'origine de l'appel : 3cx ou yeastar |
ingested_via |
Mode de réception de l'appel : webhook (poussé via l'API) ou pbx_pull (récupéré sur le PBX) |
processing_status |
Avancement du traitement (enregistrements, transcription, envoi au CRM…) |
processing_step |
Étape en cours du traitement, complete une fois terminé |
number_from, number_to, number_did |
Les numéros externes sont des chaînes au format E.164 ; les extensions internes sont des objets comme { "number": "201" } |
duration |
Objet intervalle ; la durée en secondes se trouve dans s |
Réponse 403 : aucun client sélectionné, ou accès non autorisé