同期レポートAPIのページネーションの処理方法

Reports API からデータを要求した場合、データセットに 1000 を超えるレコードが含まれていると、応答には利用可能なすべてのレコードが含まれないことがあります。このような場合、API は以下のステータスの応答を返します。 TRUNCATED追加記録があることを示す。

A TRUNCATED 応答には cursor そして iv (初期化ベクトル)は、次の結果セットを取得するために必要である。

ページネーションには2つの方法がある:

  • を使用する。 _links.next.href レスポンスで提供されたURL (おすすめ).
  • を手動で渡す。 cursor そして iv 値を次のリクエストに追加する。

APIのレスポンスが以下のようになるまで、このプロセスを繰り返す。 TRUNCATEDすべてのレコードが検索されたことを意味する。

初回リクエスト

レコードを検索するための最初のリクエストの例である:

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

TRUNCATEDレスポンスの例

結果セットに1000件以上のレコードが含まれる場合、APIは "request_status": "TRUNCATED" 値が含まれる。 cursor, ivそして next リンクをクリックすると、次のページが表示される。

{
  "_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"
    }
  ]
}

次のページの取得

レスポンスに "request_status": "TRUNCATED"それは、より多くの結果が得られることを意味する。

次のページを取得するには2つの方法がある:

オプション1 next リンク(推奨)

で指定されたURLに

GET
リクエストを送るのが最も簡単な方法である。 _links.next.href パラメータを TRUNCATED レスポンスは、すでに正しい設定になっている。 cursor そして iv あなたのリクエストに応えます:

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

オプション2 - 手動で追加する cursor そして iv

リクエストを手動で作成する場合は、最初のリクエストからすべてのパラメータを再利用し、そのパラメータに cursor そして iv 前回の TRUNCATED と答えた。

すべてのレコードが取得されるまで続ける

ページ分割された各レスポンスは TRUNCATED.
に従い続ける。 next リンク(または更新されたカーソル/iv値)を使用して、APIレスポンスがもはやないまで TRUNCATED.

これは、利用可能なすべてのレコードが検索されたことを示す。