npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vonage/reports

v1.1.0

Published

The Reports API enables you to request a report of activity for your Vonage account.

Downloads

5,364

Readme

Vonage Reports SDK for Node.js

GitHub Workflow Status Codecov Latest Release Contributor Covenant License

This is the Vonage Reports SDK for Node.js for use with Vonage APIs. To use it you will need a Vonage account. Sign up for free at vonage.com.

For full API documentation refer to developer.vonage.com.

Installation

We recommend using this SDK as part of the overall @vonage/server-sdk package. Please see the main package for installation.

You can also use this SDK standalone if you only need access to just the Reports API.

With NPM

npm install @vonage/reports

With Yarn

yarn add @vonage/reports

Usage

As part of the Vonage Server SDK

If you are using this SDK as part of the Vonage Server SDK, you can access it as the reports property off of the client that you instantiate.

const { Vonage } = require('@vonage/server-sdk');
const { Auth } = require('@vonage/auth');

const vonage = new Vonage(new Auth({
  apiKey: API_KEY,
  apiSecret: API_SECRET,
}));

const response = await vonage.reports.getRecords({
  product: 'SMS',
  accountId: API_KEY,
  dateStart: '2024-01-01T00:00:00Z',
  dateEnd: '2024-02-01T00:00:00Z',
});

Standalone

The SDK can be used standalone from the main Vonage Server SDK for Node.js if you only need to use the Reports API. All you need to do is require('@vonage/reports'), and use the returned object to create your own client.

const { Auth } = require('@vonage/auth');
const { Reports } = require('@vonage/reports');

const credentials = new Auth({
  apiKey: API_KEY,
  apiSecret: API_SECRET,
});
const options = {};

const reportsClient = new Reports(credentials, options);

Where credentials is any option from @vonage/auth, and options is any option from @vonage/server-client

Promises

Most methods that interact with the Vonage API use Promises. You can either resolve these yourself, or use await to wait for a response.

const resp = await reportsClient.getRecords({
  product: 'SMS',
  accountId: API_KEY,
  dateStart: '2024-01-01T00:00:00Z',
  dateEnd: '2024-02-01T00:00:00Z',
});

reportsClient.getRecords({
  product: 'SMS',
  accountId: API_KEY,
  dateStart: '2024-01-01T00:00:00Z',
  dateEnd: '2024-02-01T00:00:00Z',
})
  .then(resp => console.log(resp))
  .catch(err => console.error(err));

Supported Products

The Reports API supports generating reports and records for the following Vonage products:

| Product | Sync Records | Async Report | |--------------------------|:------------:|:------------:| | SMS | ✅ | ✅ | | Voice (Call) | ✅ | ✅ | | Voice (ASR) | ✅ | ✅ | | Voice (AMD) | ✅ | ✅ | | Voice (WebSocket) | ✅ | ✅ | | In-App Voice | ✅ | ✅ | | Verify API | ✅ | ✅ | | Verify API V2 | ✅ | ✅ | | Number Insight | ✅ | ✅ | | Conversations (Events) | ✅ | ✅ | | Conversations (Messages) | ✅ | ✅ | | Network API Events | ✅ | ✅ | | SMS Traffic Control | ✅ | ✅ | | Video API | ✅ | ✅ | | Reports (Usage) | ✅ | ✅ |

Synchronous Records

Use getRecords for frequent, periodic retrieval of smaller data sets (up to tens of thousands of records per query):

const response = await reportsClient.getRecords({
  product: 'SMS',
  accountId: API_KEY,
  dateStart: '2024-01-01T00:00:00Z',
  dateEnd: '2024-01-02T00:00:00Z',
});

console.log(`Total records: ${response.itemsCount}`);
for (const record of response.records) {
  console.log(record.id, record.status);
}

Asynchronous Reports

Use createReport for infrequent, large data queries (up to tens of millions of records). The report is generated in the background and can be polled with getReport. Vonage recommends limiting queries to a maximum of 7 million records.

// Create the report
const report = await reportsClient.createReport({
  product: 'SMS',
  accountId: API_KEY,
  dateStart: '2024-01-01T00:00:00Z',
  dateEnd: '2024-02-01T00:00:00Z',
  callbackUrl: 'https://example.com/webhook',
});

console.log(`Report ID: ${report.requestId}`);

// Poll until complete
let status = await reportsClient.getReport(report.requestId);

while (status.requestStatus === 'PENDING' || status.requestStatus === 'PROCESSING') {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  status = await reportsClient.getReport(report.requestId);
}

console.log(`Download: ${status.links.downloadReport?.href}`);

// Cancel a pending report
await reportsClient.cancelReport(report.requestId);

Testing

Run:

npm run test