---
title: Historique des appels
excerpt: Listez les appels téléphoniques reçus par CX-Engine pour un compte client, avec filtres, tri et pagination.
order: 5
---

CX-Engine enregistre chaque appel reçu du PBX (via [CRM Lookup](/fr/docs/cx-api/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-calls` lit les appels enregistrés dans CX-Engine. `GET /api/crm/lookup/phone-calls` lit les appels enregistrés dans le CRM connecté (voir [CRM Lookup](/fr/docs/cx-api/lookup#get-apicrmlookupphone-calls)).

**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](/fr/docs/cx-api/smart-routings#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

```json
{
  "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é
