Comment gérer la pagination pour l'API Reports Synchronous

Lorsque vous demandez des données à l'API Reports, il se peut que la réponse n'inclue pas tous les enregistrements disponibles si l'ensemble de données contient plus de 1 000 enregistrements. Dans ce cas, l'API renvoie une réponse avec le statut TRUNCATEDindiquant que des enregistrements supplémentaires sont disponibles.

A TRUNCATED La réponse comprend un cursor et un iv (vecteur d'initialisation), qui sont nécessaires pour récupérer la prochaine série de résultats.

Vous pouvez gérer la pagination de deux manières :

  • Utiliser le _links.next.href URL fournie dans la réponse (recommandé).
  • Passer manuellement le cursor et iv dans votre prochaine demande.

Vous répétez ce processus jusqu'à ce que la réponse de l'API ne soit plus TRUNCATEDce qui signifie que tous les enregistrements ont été récupérés.

Demande initiale

Voici un exemple de demande initiale d'extraction d'enregistrements :

GET https://api.nexmo.com/v2/reports/records?product=VERIFY-API&date_start=2025-10-28T00:00:00-0000&date_end=2025-10-30T00:00:00-0000&account_id=test123

Exemple de réponse tronquée

Si l'ensemble de résultats contient plus de 1000 enregistrements, l'API répond par un message "request_status": "TRUNCATED" et inclut la valeur cursor, ivet un next pour obtenir la page suivante.

{
  "_links": {
    "next": {
      "href": "https://api.nexmo.com/v2/reports/records?product=VERIFY-API&date_start=2025-10-28T00%3A00%3A00-0000&date_end=2025-10-30T00%3A00%3A00-0000&account_id=test123&cursor=VwwxWeDsSHrf5eDbC7OA4NAUJKjy0Jw91uGIhbsjpH254R3Og6HCsfy5pmcw_Nzerlbt_p6J3xRxvocnv8CIoasCH0C3Z-Gq7n1VQ5Es6hgZKx4m0IN0G6lgqahNjoRoW67XysF32MGzYs2jkol1EmZ_o-TN5wvfILqGuDuXuUiUh-QvmmNPd5p066GTRxhuS6_DGRT-x7Lw2oxV&iv=QnJtvajk5bH0wMX-8JHLRQ"
    },
    "self": {
      "href": "https://api.nexmo.com/v2/reports/records?product=VERIFY-API&date_start=2025-10-28T00%3A00%3A00-0000&date_end=2025-10-30T00%3A00%3A00-0000&account_id=test123"
    }
  },
  "request_id": "aaaa111111-b222-4556-789c-fb123456789",
  "request_status": "TRUNCATED",
  "cursor": "VwwxWeDsSHrf5eDbC7OA4NAUJKjy0Jw91uGIhbsjpH254R3Og6HCsfy5pmcw_Nzerlbt_p6J3xRxvocnv8CIoasCH0C3Z-Gq7n1VQ5Es6hgZKx4m0IN0G6lgqahNjoRoW67XysF32MGzYs2jkol1EmZ_o-TN5wvfILqGuDuXuUiUh-QvmmNPd5p066GTRxhuS6_DGRT-x7Lw2oxV",
  "iv": "QnJtvajk5bH0wMX-8JHLRQ",
  "received_at": "2025-10-29T10:04:09+00:00",
  "price": 0.0,
  "currency": "",
  "product": "VERIFY-API",
  "account_id": "41aa7248",
  "date_start": "2025-10-28T00:00:00+00:00",
  "date_end": "2025-10-30T00:00:00+00:00",
  "items_count": 1000,
  "include_subaccounts": false,
  "records": [
    {
      "account_id": "test123",
      "request_id": "06a1e004a84e4b47ab48a15f072ef0dd",
      "from": "verify",
      "to": "123456789",
      "locale": "pl-pl",
      "number_type": "MOBILE",
      "network": "26003",
      "network_name": "Orange Polska S.A.",
      "country": "PL",
      "country_name": "Poland",
      "date_received": "2025-10-29T09:56:36+00:00",
      "date_finalized": "2025-10-29T10:01:49+00:00",
      "first_event_date": "2025-10-29T09:56:36+00:00",
      "last_event_date": "2025-10-29T10:01:43+00:00",
      "status": "EXPIRED",
      "sms_event_count": "1",
      "tts_event_count": "2",
      "currency": "",
      "pricing_model": "1",
      "price": "0.1",
      "estimated_price": "0.1",
      "sms_price": "0.03980000",
      "tts_price": "0.00238217",
      "id": "06a1e004a84e4b47ab48a15f072ef0dd"
    }
  ]
}

Recherche de la page suivante

Lorsque la réponse contient "request_status": "TRUNCATED"Cela signifie que davantage de résultats sont disponibles.

Il y a deux façons de récupérer la page suivante :

Option 1 - Utiliser le next Lien (recommandé)

La méthode la plus simple consiste à envoyer une requête

GET
à l'URL fournie dans le fichier _links.next.href du paramètre TRUNCATED qui est déjà configurée avec la bonne cursor et iv pour votre demande :

GET https://api.nexmo.com/v2/reports/records?product=VERIFY-API&date_start=2025-10-28T00%3A00%3A00-0000&date_end=2025-10-30T00%3A00%3A00-0000&account_id=test123&cursor=VwwxWeDsSHrf5eDbC7OA4NAUJKjy0Jw91uGIhbsjpH254R3Og6HCsfy5pmcw_Nzerlbt_p6J3xRxvocnv8CIoasCH0C3Z-Gq7n1VQ5Es6hgZKx4m0IN0G6lgqahNjoRoW67XysF32MGzYs2jkol1EmZ_o-TN5wvfILqGuDuXuUiUh-QvmmNPd5p066GTRxhuS6_DGRT-x7Lw2oxV&iv=QnJtvajk5bH0wMX-8JHLRQ

Option 2 - Ajouter manuellement cursor et iv

Si vous construisez des requêtes manuellement, réutilisez tous les paramètres de votre requête initiale et ajoutez l'élément cursor et iv des valeurs de l'exercice précédent TRUNCATED réponse.

Continuer jusqu'à ce que tous les enregistrements soient récupérés

Chaque réponse paginée peut également être TRUNCATED.
Continuer à suivre le next (ou en utilisant des valeurs de curseur/iv mises à jour) jusqu'à ce que la réponse de l'API ne soit plus TRUNCATED.

Cela indique que tous les enregistrements disponibles ont été récupérés.