Before you Begin
This guide helps you get started with the Reports API. For detailed information, review the Overview and API Reference.
In this topic
- Choose your approach
- Making your first request
- Authentication
- Common parameters
- Product-specific parameters
- Working with asynchronous reports
- See also
Choose your approach
The Reports API provides two methods to retrieve your activity records, each optimized for different query patterns and data volumes.
Synchronous (Real-time)
The synchronous approach is best for frequent queries retrieving up to tens of thousands of records. When you make a synchronous request, records are returned immediately in the API response, making it ideal for real-time dashboards and monitoring systems. This method also supports querying by specific message or record ID, which is useful when you need to look up individual transactions. While efficient for smaller datasets, we recommend limiting synchronous queries to thousands of records per request to maintain optimal performance.
Example use case: Retrieve today's SMS delivery status for a specific campaign.
Asynchronous (Background processing)
For larger data requirements, the asynchronous approach is designed for infrequent queries that need to retrieve millions of records. Rather than returning data immediately, this method generates a downloadable ZIP file containing CSV data while processing happens in the background. The generation process typically takes 5-10 minutes per 1 million records. You can either provide a callback URL to receive a notification when processing completes, or periodically poll for the report status. To ensure optimal performance, Vonage recommends limiting asynchronous queries to a maximum of 7 million records by setting appropriate start and end dates.
Example use case: Generate a monthly report of all voice calls.
Making your first request
Synchronous request example
Retrieve SMS records for a specific date range:
Asynchronous request example
Generate a report for all messages sent in December:
Authentication
All Reports API requests require HTTP Basic Authentication using your API key and secret:
Replace $VONAGE_API_KEY and $VONAGE_API_SECRET with your credentials from the Vonage Dashboard.
Common parameters
These parameters are used across most Reports API calls:
| Parameter | Required | Description | Example |
|---|---|---|---|
account_id | Your Vonage API key (account ID) | abcd1234 | |
product | The Vonage product to query | SMS, MESSAGES, VOICE-CALL | |
date_start | 🔸 | Start of date range (ISO-8601 format) | 2026-01-01T00:00:00Z |
date_end | 🔸 | End of date range (ISO-8601 format) | 2026-01-06T23:59:59Z |
direction | 🔸 | Message/call direction | inbound or outbound |
id | 🔸 | Specific message or record ID (sync only) | Cannot be used with date range |
Legend:
Date format requirements
Dates must be in ISO-8601 format:
- UTC format:
2026-01-01T00:00:00Z - With timezone offset:
2026-01-01T08:00:00+0800
Important: When using GET requests with + in dates, URL-encode the dates:
Querying by ID vs date range
- By ID: Retrieve a specific record (synchronous only)
- By date range: Retrieve all records within a time period
- Cannot use both: Choose either
idORdate_start/date_end, not both
Product-specific parameters
Different products support different parameters. This section details the required and optional parameters for each product. For the complete parameter specifications and response formats, see the API Reference.
SMS
Required parameters:
product- Set toSMSaccount_id- Your Vonage API keydirection- Must be eitherinboundoroutbound
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)status- Filter by delivery status (e.g.,delivered,failed,expired)from- Sender numberto- Recipient numbercountry- Filter by country codenetwork- Filter by network MCC-MNCclient_ref- Your client referenceaccount_ref- Account referenceinclude_message- Include message body in response (true/false)
Example:
SMS-TRAFFIC-CONTROL
Required parameters:
product- Set toSMS-TRAFFIC-CONTROLaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record id (cannot be used with date range)
MESSAGES
Required parameters:
product- Set toMESSAGESaccount_id- Your Vonage API keydirection- Must be eitherinboundoroutbound
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)status- Filter by delivery status (e.g.,submitted,delivered,read,rejected)from- Sender identifierto- Recipient identifierprovider- Filter by channel (e.g.,whatsapp,sms,mms,viber_service_msg,messenger,instagram,rcs)include_message- Include message body in response (true/false)
VOICE-CALL
Required parameters:
product- Set toVOICE-CALLaccount_id- Your Vonage API key
Additional parameters:
direction- Call direction (inboundoroutbound)date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)status- Call status (e.g.,ANSWERED,MACHINE,ERROR)from- Caller numberto- Called numbercountry- Filter by country codenetwork- Filter by network MCC-MNCcall_id- Specific call identifier
IN-APP-VOICE
Required parameters:
product- Set toIN-APP-VOICEaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)status- Call termination statusconversation_id- Conversation IDleg_id- Specific leg of a call
VOICE-TTS
Required parameters:
product- Set toVOICE-TTSaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record id (cannot be used with date range)
VOICE-FAILED
Required parameters:
product- Set toVOICE-FAILEDaccount_id- Your Vonage API key
Additional parameters:
direction- Call direction (inboundoroutbound)date_start/date_end- Date range for filtering recordsfrom- Caller numberto- Called numberid- Specific record ID (cannot be used with date range)country- Country code filter
WEBSOCKET-CALL
Required parameters:
product- Set toWEBSOCKET-CALLaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record id (cannot be used with date range)
ASR
Required parameters:
product- Set toASRaccount_id- Your Vonage API key
Additional parameters:
direction- Call direction (inboundoroutbound)date_start/date_end- Date range for filtering recordsfrom- Caller IDto- Number calledid- Specific record ID (cannot be used with date range)
AMD
Required parameters:
product- Set toAMDaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record id (cannot be used with date range)
VERIFY-API
Required parameters:
product- Set toVERIFY-APIaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)to- Phone number that was verifiednetwork- Filter by network MCC-MNC
VERIFY-V2
Required parameters:
product- Set toVERIFY-V2account_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordschannel- Verification channel (v2,email,silent_auth)status- Request statusparent_request_id- Filter by parent request ID, which correlates v2 verification requests with their associated email or silent_auth eventscountry- Country Codelocale- Language/Localenetwork- Mobile network codeto- Phone number being verifiedid- Specific record id (cannot be used with date range)
NUMBER-INSIGHT
Required parameters:
product- Set toNUMBER-INSIGHTaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)number- Phone number that was queriednetwork- Mobile network code
NUMBER-INSIGHT-V2
Required parameters:
product- Set toNUMBER-INSIGHT-V2account_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsrequest_type- Type of insight request (e.g.,fraud_score,sim_swap)risk- Risk assessment levelstatus- Number Insight request statusswapped- Whether the number has been ported/swappedid- Specific record id (cannot be used with date range)
CONVERSATION-EVENT
Required parameters:
product- Set toCONVERSATION-EVENTaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsconversation_id- Specific conversation IDstatus- Event statusid- Specific record ID (cannot be used with date range)
CONVERSATION-MESSAGE
Required parameters:
product- Set toCONVERSATION-MESSAGEaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsconversation_id- Specific conversation IDid- Specific record ID (cannot be used with date range)
VIDEO-API
Required parameters:
product- Set toVIDEO-APIaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordssession_id- Video session IDmeeting_id- Meeting identifierid- Specific record ID (cannot be used with date range)
NETWORK-API-EVENT
Required parameters:
product- Set toNETWORK-API-EVENTaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsproduct_name- Specific Network API productrequest_session_id- Request session identifierproduct_path- API product pathcorrelation_id- Correlation IDrequest_type- Type of Network API Requestid- Specific record ID (cannot be used with date range)
REPORTS-USAGE
Required parameters:
product- Set toREPORTS-USAGEaccount_id- Your Vonage API key
Additional parameters:
date_start/date_end- Date range for filtering recordsid- Specific record ID (cannot be used with date range)
Note: All products support include_subaccounts parameter when creating asynchronous reports to include data from subaccounts. For complete details on response formats and additional filtering options, see the API Reference.
Working with asynchronous reports
When you create an asynchronous report, you'll receive a request_id to track the report status:
Response example:
{
"request_id": "ri3p58f-48598ea7-1234-5678-9012-faabd79bdc2e",
"request_status": "PENDING",
"direction": "outbound",
"product": "SMS",
"account_id": "abcd1234",
"date_start": "2026-01-01T00:00:00+0000",
"date_end": "2026-01-06T23:59:59+0000",
"_links": {
"self": {
"href": "https://api.nexmo.com/v2/reports/ri3p58f-48598ea7-1234-5678-9012-faabd79bdc2e"
}
}
}
Check report status
Use the request_id to check if your report is ready:
Download completed report
When the report status is SUCCESS, extract the file_id from the response and download:
The downloaded ZIP file contains a CSV with your records. Files are available for 72 hours.