verirouteintel
v1.0.0
Published
Official VeriRoute Intel SDK for phone number intelligence - CNAM, LRN, carrier lookup, spam detection
Maintainers
Readme
VeriRoute Intel Node.js SDK
Official Node.js/TypeScript SDK for VeriRoute Intel phone number intelligence API.
Features
- CNAM Lookup - Caller ID / caller name
- LRN Lookup - Carrier, line type, ported number routing
- Enhanced Data - City, state, ZIP, timezone, rate center
- Messaging Provider - SMS/MMS routing information
- Spam Detection - Robocall, scam, and spam flagging
- Bulk Operations - Up to 1,000 numbers per request
Installation
npm install verirouteintelyarn add verirouteintelpnpm add verirouteintelQuick Start
import { VeriRoute } from 'verirouteintel';
const vri = new VeriRoute('your_api_key');
// CNAM - Get caller name
const caller = await vri.cnam('+15551234567');
console.log(caller.cnam); // "JOHN DOE"
// LRN - Get carrier and line type
const info = await vri.lrn('+15551234567');
console.log(info.carrier); // "Verizon Wireless"
console.log(info.lineType); // "mobile"
// Trust - Check spam reputation
const trust = await vri.trust('+15551234567');
console.log(trust.isSpam); // false
console.log(trust.isRobocall); // falseAPI Reference
Initialization
import { VeriRoute } from 'verirouteintel';
// Simple initialization
const vri = new VeriRoute('your_api_key');
// With options
const vri = new VeriRoute({
apiKey: 'your_api_key',
baseUrl: 'https://api-service.verirouteintel.io', // optional
timeout: 30000, // optional, in milliseconds
retries: 3, // optional, retry attempts
});CNAM Lookup
// Basic CNAM
const result = await vri.cnam('+15551234567');
console.log(result.cnam); // "JOHN DOE"
console.log(result.number); // "+15551234567"
// CNAM with spam check
const result = await vri.cnam('+15551234567', { includeSpam: true });
console.log(result.spamType); // "NONE" | "SPAM" | "SCAM" | "ROBOCALL"
// Bulk CNAM (up to 1,000 numbers)
const bulk = await vri.cnamBulk(['+15551234567', '+15559876543']);
console.log(bulk.results); // Array of CNAM results
console.log(bulk.successful); // 2
console.log(bulk.failed); // 0LRN Lookup (Carrier & Line Type)
// Basic LRN
const info = await vri.lrn('+15551234567');
console.log(info.carrier); // "Verizon Wireless"
console.log(info.lineType); // "mobile" | "landline" | "voip" | "unknown"
console.log(info.lrn); // "5551230000"
// With enhanced location data
const info = await vri.lrn('+15551234567', { includeEnhanced: true });
console.log(info.enhanced.city); // "New York"
console.log(info.enhanced.state); // "NY"
console.log(info.enhanced.zipCode); // "10001"
console.log(info.enhanced.county); // "New York County"
console.log(info.enhanced.timezone); // "America/New_York"
console.log(info.enhanced.rateCenter); // "NWYORK"
console.log(info.enhanced.lata); // "227"
console.log(info.enhanced.ocn); // "1001"
// With messaging provider
const info = await vri.lrn('+15551234567', { messagingLookup: true });
console.log(info.messaging.provider); // "Verizon Wireless"
console.log(info.messaging.enabled); // true
console.log(info.messaging.country); // "United States"
console.log(info.messaging.countryCode); // "US"
// Full lookup with everything
const info = await vri.lrn('+15551234567', {
includeEnhanced: true,
messagingLookup: true,
});
// Bulk LRN
const bulk = await vri.lrnBulk(['+15551234567', '+15559876543'], {
includeEnhanced: true,
});Trust / Spam Detection
// Full reputation check
const trust = await vri.trust('+15551234567');
console.log(trust.isSpam); // false
console.log(trust.isRobocall); // false
console.log(trust.isScam); // false
console.log(trust.spamType); // "NONE"
console.log(trust.complaintCount); // 0
console.log(trust.subjects); // []
console.log(trust.firstReported); // null
console.log(trust.lastReported); // null
// Quick spam check
const spam = await vri.spam('+15551234567');
console.log(spam.isSpam); // false
console.log(spam.spamType); // "NONE"
// Batch spam check
const batch = await vri.spamBatch(['+15551234567', '+15559876543']);
// Report spam
await vri.spamReport('+15551234567', {
reportType: 'robocall', // 'spam' | 'robocall' | 'scam' | 'telemarketing' | 'fraud' | 'phishing'
details: 'Automated warranty scam call',
messageContent: 'Your car warranty is expiring...', // optional
});Messaging Provider
const msg = await vri.messaging('+15551234567');
console.log(msg.messagingProvider); // "Verizon Wireless"
console.log(msg.messagingEnabled); // true
console.log(msg.messagingCountry); // "United States"
console.log(msg.messagingCountryCode); // "US"Analytics & Usage
// Get analytics
const analytics = await vri.analytics({ preset: '30d' });
console.log(analytics.totalLookups);
console.log(analytics.carrierTypeBreakdown);
console.log(analytics.spamBreakdown);
console.log(analytics.geographicBreakdown);
// Custom date range
const analytics = await vri.analytics({
startDate: '2025-01-01',
endDate: '2025-01-31',
});
// Get usage for current API key
const usage = await vri.usage();
console.log(usage.totalLookups);
console.log(usage.creditsRemaining);
// Validate API key
const isValid = await vri.validateKey();Error Handling
import {
VeriRoute,
VeriRouteError,
AuthenticationError,
RateLimitError,
InsufficientBalanceError,
InvalidPhoneError,
InternationalNotSupportedError,
} from 'verirouteintel';
try {
const result = await vri.lrn('+15551234567');
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('Invalid API key');
} else if (error instanceof RateLimitError) {
console.error(`Rate limited. Retry after ${error.retryAfter} seconds`);
} else if (error instanceof InsufficientBalanceError) {
console.error('Add credits to your account');
} else if (error instanceof InvalidPhoneError) {
console.error(`Invalid phone: ${error.phoneNumber}`);
} else if (error instanceof InternationalNotSupportedError) {
console.error('Only US/Canada numbers supported');
} else if (error instanceof VeriRouteError) {
console.error(`API error: ${error.code} - ${error.message}`);
}
}TypeScript Support
Full TypeScript support with complete type definitions:
import type {
CnamResult,
LrnResult,
EnhancedLrnData,
MessagingData,
TrustResult,
SpamResult,
} from 'verirouteintel';
// Types are inferred automatically
const info = await vri.lrn('+15551234567', { includeEnhanced: true });
// info.enhanced is typed as EnhancedLrnData | undefinedShorthand Import
// Full name
import { VeriRoute } from 'verirouteintel';
// Shorthand
import { VRI } from 'verirouteintel';
const vri = new VRI('your_api_key');Requirements
- Node.js 16 or later
- Works with Deno, Bun, and modern browsers (via bundler)
Links
License
MIT
