canonical: https://jentic.com/apis/nexmo.com/nexmo-reports

# Nexmo Reports API

The Nexmo Reports API exposes activity reporting across SMS, voice, verification, and other Vonage products on a single Vonage account. It supports two patterns - synchronous record loads for ad-hoc queries and asynchronous report generation for large date ranges - plus listing, status checking, cancelling, and downloading the resulting media file. Finance, operations, and growth teams use it to reconcile spend, audit traffic, and export data into a warehouse without scraping the dashboard.

## For AI agents

Generate, list, cancel, and download asynchronous activity reports across SMS, voice, and verification on a Vonage account, or query records synchronously for ad-hoc analytics.

## Scope

Does not send messages, place calls, or stream live events - use for after-the-fact activity reporting and CSV export only.

## Capabilities

- Create an asynchronous report covering a date range across SMS, voice, or verify activity
- Load activity records synchronously for short date ranges and ad-hoc queries
- List the reports an account has previously created with their current status
- Check the execution status of a specific report and retrieve metadata
- Cancel a long-running report that is no longer needed
- Download the generated CSV media file once the report has completed

## Use cases

### Monthly billing reconciliation

Finance teams kick off an asynchronous SMS report at the start of each month covering the previous billing period, poll its status until completion, then download the generated CSV from /v3/media/{file_id} to load into the warehouse alongside the Vonage invoice. The async pattern is essential because account-level reports can cover millions of records.

Example prompt: POST /v2/reports for product=SMS and date_start/date_end covering last month, poll GET /v2/reports/{report_id} until status=COMPLETED, then GET /v3/media/{file_id}

### Operational ad-hoc lookups

Operations engineers running incident triage need to see the last few hours of voice or SMS records without waiting for a full report job. /v2/reports/records returns the records inline for short windows, which keeps incident response fast and removes the need to schedule and download a full report.

Example prompt: GET /v2/reports/records?product=VOICE&date_start=2026-06-10T00:00:00Z&date_end=2026-06-10T03:00:00Z and inspect the call statuses

### Report job orchestration

Data platform teams that automate report generation use the list, status, and cancel endpoints together. A scheduler creates reports daily, a watcher polls /v2/reports for any stuck in PENDING longer than the SLA, and operators call DELETE /v2/reports/{report_id} on jobs that are no longer needed, keeping the report queue clean and predictable.

Example prompt: GET /v2/reports, find any with status=PENDING older than 1 hour, and DELETE /v2/reports/{report_id} on each

### AI agent reporting via Jentic

An AI agent that produces weekly Vonage spend summaries can drive the Reports API end-to-end through Jentic. The agent searches for the create-report operation, posts the date range and product, polls the status endpoint, and downloads the CSV media file, all without touching the apiKey or apiSecret directly.

Example prompt: Search Jentic for 'create a vonage activity report', load POST /v2/reports, and execute with product=SMS and the target date range

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v2/reports | Create an asynchronous report |
| GET | /v2/reports | List reports for the account |
| GET | /v2/reports/{report_id} | Get the status of a specific report |
| DELETE | /v2/reports/{report_id} | Cancel a running report |
| GET | /v2/reports/records | Load activity records synchronously |
| GET | /v3/media/{file_id} | Download the CSV output of a completed report |

## Key resources

- **Reports** — POST /v2/reports creates async report jobs; GET /v2/reports lists them; GET/DELETE /v2/reports/{report_id} manage individual jobs.
- **Records** — GET /v2/reports/records returns activity records synchronously for short windows.
- **Media** — GET /v3/media/{file_id} downloads the CSV output of a completed report.

## Why Jentic

- **Setup:** Wiring the Vonage Reports API by hand means encoding your API key and secret as HTTP Basic, submitting an asynchronous report job to api.nexmo.com, and downloading the CSV once it completes. Through Jentic you install once, import the Reports API from the API Directory, store the key and secret once, and your agent calls it.
- **Permission scoping:** The Reports API puts the report job id in the URL path (/v2/reports/{report_id}), so you choose the operations your agent may call: you can allow it to create and read report jobs while leaving job deletion out of the allowed set unless you add it.
- **Credential handling:** Your Vonage API key and secret are stored once, encrypted, by your own Jentic One instance and encoded as HTTP Basic at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a Vonage SMS activity report' and Jentic returns the POST /v2/reports operation with its product and date-range input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Twilio Bulk Exports** — Twilio's equivalent bulk export service for messaging and voice activity data.
- **Nexmo SMS API** — SMS traffic sent via the SMS API is one of the primary data sources reported on by the Reports API.
- **Nexmo Voice API** — Voice activity is one of the products the Reports API can export.

## FAQ

### What authentication does the Nexmo Reports API use?

The Reports API uses HTTP Basic authentication with apiKey as the username and apiSecret as the password. Through Jentic those credentials live in the encrypted vault, are encoded automatically, and the agent only ever sees a scoped token.

### Should I use the synchronous or asynchronous endpoint?

Use GET /v2/reports/records for short windows (a few hours of traffic) where you need the data inline. Use POST /v2/reports for anything covering a full day or more - the async pattern handles report generation on Vonage's side, then exposes the result as a downloadable CSV via /v3/media/{file_id}.

### What are the rate limits for the Reports API?

The OpenAPI spec does not encode a numeric rate limit. The synchronous /records endpoint will reject queries that span too long a window; the asynchronous flow exists exactly so that long ranges go through the report queue rather than the live request path.

### How do I download a report's CSV through Jentic?

Run pip install jentic, search for 'download a vonage report csv', and Jentic returns GET /v3/media/{file_id}. Execute with the file_id returned by the report's status response and Jentic streams the CSV bytes back.

### Which Vonage products can I report on?

The product parameter accepts SMS, VOICE-CALL, VERIFY, MESSAGES, and a handful of other Vonage product codes. Each product type returns a distinct set of columns in the CSV, so reports are scoped to one product per job rather than blended across products.

### Is the Nexmo Reports API free to call?

Vonage does not charge per report-generation request, but report data ages off according to your account's retention policy. Generate and download reports promptly rather than relying on Vonage to retain raw records indefinitely.

### Can I limit what my agent is allowed to do with the Nexmo Reports API?

Yes. Because you run Jentic One yourself, your own rules decide which Reports API operations the agent may call and which stored credentials it may use. For example, you can allow it to create and read report jobs with POST /v2/reports and GET /v2/reports/{report_id}, and download the CSV via GET /v3/media/{file_id}, while leaving DELETE /v2/reports/{report_id} out of the allowed set so the agent cannot cancel jobs. The report job id sits in the URL path, so you scope access per operation rather than handing over the whole account.
