Como lidar com a paginação na Reports API síncrona
Ao solicitar dados da Reports API, a resposta pode não incluir todos os registros disponíveis caso o conjunto de dados contenha mais de 1.000 registros. Nesses casos, a API retorna uma resposta com o status de TRUNCATED, indicando que há registros adicionais disponíveis.
A TRUNCATED A resposta inclui um cursor e um iv (vetor de inicialização), que são necessários para recuperar o próximo conjunto de resultados.
Você pode lidar com a paginação de duas maneiras:
- Use o
_links.next.hrefURL fornecido na resposta (recomendado). - Passe manualmente o
cursoreivvalores na sua próxima solicitação.
Você repete esse processo até que a resposta da API não seja mais TRUNCATED, o que significa que todos os registros foram recuperados.
Solicitação inicial
Aqui está um exemplo de uma solicitação inicial para recuperar registros:
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
Exemplo de uma resposta TRUNCADA
Se o conjunto de resultados contiver mais de 1.000 registros, a API responde com um "request_status": "TRUNCATED" valor e inclui o cursor, iv, e um next link para acessar a página a seguir.
{
"_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"
}
]
}
Carregando a próxima página
Sempre que a resposta contiver "request_status": "TRUNCATED", isso significa que há mais resultados disponíveis.
Existem duas maneiras de acessar a próxima página:
Opção 1 — Use o next Link (Recomendado)
O método mais fácil é enviar uma solicitação GET para a URL fornecida no _links.next.href parâmetro do TRUNCATED resposta, que já está configurada com o cursor e iv valores para sua solicitação:
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
Opção 2 — Adicionar manualmente cursor e iv
Ao criar solicitações manualmente, reutilize todos os parâmetros da sua solicitação inicial e acrescente o cursor e iv valores do anterior TRUNCATED resposta.
Continuar até que todos os registros sejam recuperados
Cada resposta paginada também pode ser TRUNCATED.
Continue seguindo o next link (ou usando valores atualizados de cursor/iv) até que a resposta da API não seja mais TRUNCATED.
Isso indica que todos os registros disponíveis foram recuperados.