Node.js SDK

Setup & Initialization

  1. Install using one of the following package managers:
npm install pingram
yarn add pingram
pnpm add pingram
  1. Import:
import { Pingram } from 'pingram';
  1. Initialize:
const pingram = new Pingram({
  apiKey: 'pingram_sk_...' // Your API key from the dashboard
});
NameTypeDescription
apiKey*stringYour Pingram API key. You can get it from your dashboard under Environments.
accessTokenstringOptional JWT token for end-user authentication (for internal use)
baseURLstringOptional. To choose a different region other than default (US). Use https://api.ca.pingram.io for the Canada region, and https://api.eu.pingram.io for the EU region.
  • required

Region specific example:

import { Pingram } from 'pingram';

const pingram = new Pingram({
  apiKey: 'pingram_sk_...',
  baseURL: 'https://api.eu.pingram.io'
});

Send

send()

Send a notification

// Request body only
await pingram.send({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
senderPostBodySenderPostBodySee Request Body Properties below

Request Body Properties

NameTypeDescription
notificationIdstring
userGetUsersResponseUsersInner
mergeTagsobject
replace{ [key: string]: string; }
typestring
toSenderPostBodyTo
forceChannelsArray<ChannelsEnum>
parameters{ [key: string]: any; }
secondaryIdstring
templateIdstring
subNotificationIdstring
optionsSenderPostBodyOptions
schedulestring
emailSenderPostBodyEmail
inappSenderPostBodyInapp
smsSenderPostBodySms
callSenderPostBodySmsAutoReply
webPushSenderPostBodyWebPush
mobilePushSenderPostBodyMobilePush
slackSenderPostBodySlack

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

Domains

addDomain()

Request to verify a new sender domain or email address

// Request body only
await pingram.domains.addDomain({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
postSendersRequestBodyPostSendersRequestBodySee Request Body Properties below

Request Body Properties

NameTypeDescription
senderstring

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

deleteDomain()

Delete a sender domain or email address

// Path parameter only
await pingram.domains.deleteDomain('sender_example');

Parameters

NameTypeDescription
senderstringSender domain or email address (URL encoded)

listDomains()

Get all sender domains and email addresses configured for the account

// No parameters
await pingram.domains.listDomains();

Parameters

This endpoint does not need any parameter.

Environments

createEnvironment()

Create a new environment for the account

// Request body only
await pingram.environments.createEnvironment({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
environmentCreateRequestEnvironmentCreateRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
titlestring

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

listEnvironments()

Get all environments for the authenticated account

// No parameters
await pingram.environments.listEnvironments();

Parameters

This endpoint does not need any parameter.

updateEnvironment()

Update environment settings (title, secret, disable sending, secure mode)

// Path parameter + request body
await pingram.environments.updateEnvironment('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
clientIdstringEnvironment client ID
environmentPatchRequestEnvironmentPatchRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
resetSecretboolean
disableSendingArray<ChannelsEnum>
titlestring
secureModeboolean

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

Logs

getLogRetention()

Get log retention period in days for the account

// No parameters
await pingram.logs.getLogRetention();

Parameters

This endpoint does not need any parameter.

getLogsByTrackingIds()

Get logs by tracking IDs (comma-separated, max 25 IDs)

// Path parameter only
await pingram.logs.getLogsByTrackingIds('trackingIds_example');

Parameters

NameTypeDescription
trackingIdsstringComma-separated tracking IDs (URL encoded)

getLogsQueryResult()

Get results from a query ID

// Path parameter only
await pingram.logs.getLogsQueryResult('queryId_example');

Parameters

NameTypeDescription
queryIdstringQuery ID

startLogsQuery()

Start a log query and return query ID for asynchronous log searching

// Request body only
await pingram.logs.startLogsQuery({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
logQueryPostBodyLogQueryPostBodySee Request Body Properties below

Request Body Properties

NameTypeDescription
dateRangeFilterArray<number>A tuple of [startTime, endTime] for the date range filter, each representing a unix timestamp.
userFilterstring
envIdFilterArray<string>
statusFilterstring
channelFilterArray<string>
notificationFilterArray<string>

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

tailLogs()

Get last 100 logs from the stream

// No parameters
await pingram.logs.tailLogs();

Parameters

This endpoint does not need any parameter.

Sender

deleteSchedule()

Delete (unschedule) an already scheduled notification

// Path parameter only
await pingram.sender.deleteSchedule('trackingId_example');

Parameters

NameTypeDescription
trackingIdstringThe tracking ID of the scheduled notification

updateSchedule()

Update the body or schedule of an already scheduled notification.

// Path parameter + request body
await pingram.sender.updateSchedule('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
trackingIdstringThe tracking ID of the scheduled notification
senderPostBodySenderPostBodySee Request Body Properties below

Request Body Properties

NameTypeDescription
notificationIdstring
userGetUsersResponseUsersInner
mergeTagsobject
replace{ [key: string]: string; }
typestring
toSenderPostBodyTo
forceChannelsArray<ChannelsEnum>
parameters{ [key: string]: any; }
secondaryIdstring
templateIdstring
subNotificationIdstring
optionsSenderPostBodyOptions
schedulestring
emailSenderPostBodyEmail
inappSenderPostBodyInapp
smsSenderPostBodySms
callSenderPostBodySmsAutoReply
webPushSenderPostBodyWebPush
mobilePushSenderPostBodyMobilePush
slackSenderPostBodySlack

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

Templates

createTemplate()

Create a new template for a notification

// Path parameter + request body
await pingram.templates.createTemplate('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
notificationIdstringNotification ID
channelstringChannel type
templatePostRequestTemplatePostRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
templateIdstring

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

deleteTemplate()

Delete a template

// Path parameter only
await pingram.templates.deleteTemplate('notificationId_example');

Parameters

NameTypeDescription
notificationIdstringNotification ID
channelstringChannel type
templateIdstringTemplate ID

listTemplates()

Get template(s) for a notification

// Path parameter only
await pingram.templates.listTemplates('notificationId_example');

Parameters

NameTypeDescription
notificationIdstringNotification ID
channelstringChannel type
templateIdstringTemplate ID (optional for listing all)

setDefaultTemplate()

Set a template as default for specific delivery modes

// Path parameter + request body
await pingram.templates.setDefaultTemplate('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
notificationIdstringNotification ID
channelstringChannel type
setDefaultTemplateRequestSetDefaultTemplateRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
templateIdstring
modesArray<string>

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

updateTemplate()

Update a template&#39;s properties

// Path parameter + request body
await pingram.templates.updateTemplate('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
notificationIdstringNotification ID
channelstringChannel type
templateIdstringTemplate ID
templatePatchRequestTemplatePatchRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
htmlstring
internalstring
subjectstring
senderNamestring
senderEmailstring
migrationstring
titlestring
redirectURLstring
imageURLstring
instantTemplatePatchRequestAnyOf1Instant
batchTemplatePatchRequestAnyOf1Batch

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

Types

createNotificationType()

Create a new notification

// Request body only
await pingram.types.createNotificationType({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
notificationCreateRequestNotificationCreateRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
notificationIdstring
titlestring
channelsArray<string>
optionsGetNotificationsResponseInnerOptions

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

deleteNotificationType()

Delete a notification

// Path parameter only
await pingram.types.deleteNotificationType('notificationId_example');

Parameters

NameTypeDescription
notificationIdstringThe notification ID

getNotificationType()

Get a specific notification by ID

// Path parameter only
await pingram.types.getNotificationType('notificationId_example');

Parameters

NameTypeDescription
notificationIdstringThe notification ID

listNotificationTypes()

Get all notifications for an account with their templates

// No parameters
await pingram.types.listNotificationTypes();

Parameters

This endpoint does not need any parameter.

updateNotificationType()

Update a notification&#39;s settings

// Path parameter + request body
await pingram.types.updateNotificationType('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
notificationIdstringThe notification ID
notificationPatchRequestNotificationPatchRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
titlestring
channelsArray<ChannelsEnum>
enabledboolean
deduplicationGetNotificationsResponseInnerDeduplication
throttlingGetNotificationsResponseInnerThrottling
retentionnumber
optionsGetNotificationsResponseInnerOptions

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

User

getAccountMetadata()

Get account-level metadata including logo, VAPID key, and web push status

// No parameters
await pingram.user.getAccountMetadata();

Parameters

This endpoint does not need any parameter.

getAvailableSlackChannels()

Get list of Slack channels and users for the authenticated user

// Path parameter only
await pingram.user.getAvailableSlackChannels('userId_example');

Parameters

NameTypeDescription
userIdstringUser ID

getInAppNotifications()

Get in-app notifications for a user

// No parameters
await pingram.user.getInAppNotifications();

Parameters

NameTypeDescription
beforestringTimestamp or ISO date to fetch notifications before
countnumberNumber of notifications to return (default 10)

getInAppUnreadCount()

Get the count of unread in-app notifications for a user

// No parameters
await pingram.user.getInAppUnreadCount();

Parameters

This endpoint does not need any parameter.

getUser()

Get a user by ID. All users exist implicitly, returns basic user object if not found in DB.

// Path parameter only
await pingram.user.getUser('userId_example');

Parameters

NameTypeDescription
userIdstringUser ID

identify()

Create or update a user with the given ID. Updates lastSeenTime automatically.

// Path parameter + request body
await pingram.user.identify('', {
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
userIdstringUser ID
postUserRequestPostUserRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
idstring
emailstring
numberstring
pushTokensArray<GetUsersResponseUsersInnerPushTokensInner>
webPushTokensArray<GetUsersResponseUsersInnerWebPushTokensInner>
timezonestring
slackChannelstringThe destination channel of slack notifications sent to this user. Can be either of the following: - Channel name, e.g. “test” - Channel name with # prefix, e.g. “#test” - Channel ID, e.g. “C1234567890” - User ID for DM, e.g. “U1234567890” - Username with @ prefix, e.g. “@test”
slackTokenGetUsersResponseUsersInnerSlackToken

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

markInAppNotificationsAsSeen()

Mark in-app web notifications as seen/read for a user

// Request body only
await pingram.user.markInAppNotificationsAsSeen({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
inAppNotificationUnreadClearRequestInAppNotificationUnreadClearRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
notificationIdstring
trackingIdstring

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

updateInAppNotificationStatus()

Update in-app web notification status (opened, archived, clicked, etc.)

// Request body only
await pingram.user.updateInAppNotificationStatus({
  // See Request Body Properties table below for all available fields
  // Example structure (adjust based on your needs):
  // fieldName: 'value'
});

Parameters

NameTypeDescription
inAppNotificationPatchRequestInAppNotificationPatchRequestSee Request Body Properties below

Request Body Properties

NameTypeDescription
trackingIdsArray<string>
openedstring
clickedstring
archivedstring
actioned1string
actioned2string
replyGetInappNotificationsResponseNotificationsInnerRepliesInner
repliesArray<GetInappNotificationsResponseNotificationsInnerRepliesInner>

For detailed property descriptions and TypeScript type definitions, refer to the generated TypeScript types in the pingram package.

Users

deleteUser()

Delete a user and all associated data (in-app notifications, preferences, and user record)

// Path parameter only
await pingram.users.deleteUser('userId_example');

Parameters

NameTypeDescription
userIdstringUser ID
envIdstringEnvironment ID (required when using JWT auth)

listUsers()

Get all users for an environment with pagination support

// No parameters
await pingram.users.listUsers();

Parameters

NameTypeDescription
limitnumberMaximum number of users to return (default
nextTokenstringPagination token for next page
envIdstringEnvironment ID (required when using JWT auth)

removeUserFromSuppression()

Remove user suppression status for a specific channel

// Path parameter only
await pingram.users.removeUserFromSuppression('userId_example');

Parameters

NameTypeDescription
userIdstringUser ID
channelstringChannel type (EMAIL)
envIdstringEnvironment ID (required when using JWT auth)