Ruby SDK

Setup & Initialization

  1. Install:
gem install pingram

Or add to your Gemfile:

gem 'pingram'
  1. Require and initialize:
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
Name Type Description
api_key* string Your Pingram API key. You can get it from your dashboard under Environments.
base_url string Optional. Override the base URL. Use https://api.ca.pingram.io for the Canada region, and https://api.eu.pingram.io for the EU region. Default: US region.

* required

Region specific example:

client = Pingram::Client.new(api_key: 'YOUR_API_KEY', base_url: 'https://api.eu.pingram.io')

Send

call_send()

Send a notification (email, SMS, etc.) to one user. Requires a notification type which categorizes this messages for future reporting, and channel-specific payloads such as email or sms. Recipient is specified with the to parameter. Returns a trackingId for error or delivery lookup through our Logs.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::SenderPostBody.new # configure as needed
begin
result = client.send(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling call_send: #{e}"
end

Parameters

| Name | Type | Description | Notes | | –––––––––– | —————— | ——————————— | —– | — | | sender_post_body | SenderPostBody | See Request Body Properties below | | |

Request Body Properties

Name Type Description
type string ID of the notification type (e.g. “welcome_email”). Creates a new notification if it does not exist.
to object Recipient user. Provide id, email, or number to identify the user.
to.id string Unique user identifier. Required.
to.email string User’s email address for email notifications.
to.number string User’s phone number for SMS/call notifications.
to.pushTokens object[] Mobile push tokens (FCM, APN) for push notifications.
to.pushTokens[].type “FCM” | “APN” (required)
to.pushTokens[].token string (required)
to.pushTokens[].device object (required)
to.pushTokens[].device.app_id string
to.pushTokens[].device.ad_id string
to.pushTokens[].device.device_id string (required)
to.pushTokens[].device.platform string
to.pushTokens[].device.manufacturer string
to.pushTokens[].device.model string
to.pushTokens[].environment string used by APN to differentiate between sandbox and production builds (sandbox/undefined or production)
to.webPushTokens object[] Web push subscription config from the browser.
to.webPushTokens[].sub object (required) Configuration for a Push Subscription. This can be obtained on the frontend by calling serviceWorkerRegistration.pushManager.subscribe(). The expected format is the same output as JSON.stringify’ing a PushSubscription in the browser.
to.webPushTokens[].sub.endpoint string (required)
to.webPushTokens[].sub.keys object (required)
to.webPushTokens[].sub.keys.p256dh string (required)
to.webPushTokens[].sub.keys.auth string (required)
to.timezone string User’s timezone (e.g. “America/New_York”) for scheduling.
to.slackChannel string The 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”
to.slackToken object
to.slackToken.access_token string
to.slackToken.app_id string
to.slackToken.authed_user object
to.slackToken.authed_user.access_token string
to.slackToken.authed_user.expires_in number
to.slackToken.authed_user.id string
to.slackToken.authed_user.refresh_token string
to.slackToken.authed_user.scope string
to.slackToken.authed_user.token_type string
to.slackToken.bot_user_id string
to.slackToken.enterprise object
to.slackToken.enterprise.id string
to.slackToken.enterprise.name string
to.slackToken.error string
to.slackToken.expires_in number
to.slackToken.incoming_webhook object
to.slackToken.incoming_webhook.channel string
to.slackToken.incoming_webhook.channel_id string
to.slackToken.incoming_webhook.configuration_url string
to.slackToken.incoming_webhook.url string
to.slackToken.is_enterprise_install boolean
to.slackToken.needed string
to.slackToken.ok boolean (required)
to.slackToken.provided string
to.slackToken.refresh_token string
to.slackToken.scope string
to.slackToken.team object
to.slackToken.team.id string
to.slackToken.team.name string
to.slackToken.token_type string
to.slackToken.warning string
to.slackToken.response_metadata object
to.slackToken.response_metadata.warnings string[]
to.slackToken.response_metadata.next_cursor string
to.slackToken.response_metadata.scopes string[]
to.slackToken.response_metadata.acceptedScopes string[]
to.slackToken.response_metadata.retryAfter number
to.slackToken.response_metadata.messages string[]
to.lastSeenTime string Last activity timestamp. Updated automatically. Read-only.
to.updatedAt string Last update timestamp. Read-only.
to.createdAt string Creation timestamp. Read-only.
to.emailSuppressionStatus object Bounce or complaint status if email was suppressed. Read-only.
to.emailSuppressionStatus.reason “Bounce” | “Complaint” (required)
to.emailSuppressionStatus.details object (required)
forceChannels (“EMAIL” | “INAPP_WEB” | “SMS” | “CALL” | “PUSH” | “WEB_PUSH” | “SLACK”)[] Override which channels to send to (e.g. [“EMAIL”, “SMS”]). Bypasses notification channel config.
parameters Record<string, any> Key-value pairs for template merge tags. Replaces placeholders like {{firstName}} in templates.
secondaryId string Optional sub-notification identifier for grouping or tracking.
templateId string Specific template ID to use. If omitted, uses the default template for each channel.
subNotificationId string Sub-notification identifier (e.g. for grouping related notifications).
options object Per-channel overrides for send options (email, APN, FCM).
options.email object Email-specific overrides.
options.email.replyToAddresses string[] Reply-to addresses for the email.
options.email.ccAddresses string[] CC recipients.
options.email.bccAddresses string[] BCC recipients.
options.email.fromAddress string Override sender email address.
options.email.fromName string Override sender display name.
options.email.attachments (object | object)[] File attachments (by URL or inline base64 content). Inline content: ~4 MB raw per file (413 if exceeded). URL url: up to 20 MB per file.
options.email.condition string Conditional expression for when to send (e.g. merge tag logic).
options.apn object Apple Push Notification (APN) overrides.
options.apn.expiry number Seconds until the notification expires.
options.apn.priority number Delivery priority (10 = immediate, 5 = power-saving).
options.apn.collapseId string Group notifications with the same ID (replaces previous).
options.apn.threadId string Thread identifier for grouping notifications.
options.apn.badge number Badge count on app icon.
options.apn.sound string Sound file name.
options.apn.contentAvailable boolean Silent background notification (no alert).
options.fcm object Firebase Cloud Messaging (FCM) overrides.
options.fcm.android object Android-specific FCM options.
options.fcm.android.collapseKey string Collapse key for grouping messages.
options.fcm.android.priority “high” | “normal” Delivery priority.
options.fcm.android.ttl number Time to live in seconds.
options.fcm.android.restrictedPackageName string Restrict delivery to a specific package.
options.push object Cross-platform mobile push options (applied to both APN and FCM).
options.push.customData Record<string, string> Up to 3 custom string key-value pairs for deep linking. Included in both APN and FCM payloads.
schedule string
email object Inline email content (subject, html). Use when not using templates.
email.subject string (required) Email subject line.
email.html string (required) HTML body content.
email.previewText string Preview/snippet text shown in inbox.
email.senderName string Display name of sender.
email.senderEmail string Sender email address.
inapp object Inline in-app content (title, url, image).
inapp.title string (required) Notification title.
inapp.url string URL to open when clicked.
inapp.image string Image URL.
sms object Inline SMS content (message, autoReply, from, mediaUrls).
sms.message string SMS/MMS body text.
sms.mediaUrls string[] Public HTTPS URLs of media to attach (MMS). Carriers fetch these via GET. Total size limits apply per provider.
sms.autoReply object
sms.autoReply.message string (required) Auto-reply message to send when user texts in.
sms.from string Override the sender phone number. Must be a verified number on your account.
call object Inline call content (message).
call.message string (required) Text to speak (TTS).
web_push object Inline web push content (title, message, icon, url).
web_push.title string (required) Notification title.
web_push.message string (required) Body text.
web_push.icon string Icon URL.
web_push.url string URL to open when clicked.
mobile_push object Inline mobile push content (title, message).
mobile_push.title string (required) Notification title.
mobile_push.message string (required) Body text.
slack object Inline Slack content (text, blocks, etc.).
slack.text string (required) Fallback plain text (required when using blocks).
slack.blocks Record<string, any>[] Slack Block Kit blocks.
slack.username string Override bot username.
slack.icon string Icon: emoji (e.g. “:smile:”) or URL. Default: bot’s icon.
slack.thread_ts string Parent message ts to post in a thread.
slack.reply_broadcast boolean When true with thread_ts, broadcasts reply to channel. Default: false.
slack.parse “full” | “none” URL parsing: “full” (clickable links) or “none”. Default: “none”.
slack.link_names boolean Convert channel and username refs to Slack links. Default: false.
slack.mrkdwn boolean Enable Slack markup (bold, italic, code). Default: true.
slack.unfurl_links boolean Unfurl link previews. Default: true.
slack.unfurl_media boolean Unfurl media previews. Default: true.
slack.metadata object Slack message metadata with optional work object entities. Combines standard Slack message metadata fields with an array of entity objects.
slack.metadata.entities object[] An array of work object entities.
slack.metadata.entities[].entity_type string (required) Entity type (e.g., ‘slack#/entities/task’, ‘slack#/entities/file’).
slack.metadata.entities[].entity_payload Record<string, any> (required) Schema for the given entity type.
slack.metadata.entities[].external_ref object (required) Reference used to identify an entity within the developer’s system.
slack.metadata.entities[].external_ref.id string (required)
slack.metadata.entities[].external_ref.type string
slack.metadata.entities[].url string (required) URL used to identify an entity within the developer’s system.
slack.metadata.entities[].app_unfurl_url string The exact URL posted in the source message. Required in metadata passed to chat.unfurl.
slack.metadata.event_type string A human readable alphanumeric string representing your application’s metadata event.
slack.metadata.event_payload Record<string, any> A free-form object containing whatever data your application wishes to attach to messages.

Return Type

SenderPostResponse

Webhooks

webhooks_delete_events_webhook()

```ruby
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.webhooks.webhooks_delete_events_webhook
p result
rescue Pingram::ApiError => e
puts "Error when calling webhooks_delete_events_webhook: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

nil (empty response body)

webhooks_get_events_webhook()

Get the events webhook configuration for the current account/environment.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.webhooks.webhooks_get_events_webhook
p result
rescue Pingram::ApiError => e
puts "Error when calling webhooks_get_events_webhook: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

EventsWebhookResponse

webhooks_upsert_events_webhook()

Create or update the events webhook configuration for the current account/environment.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::EventsWebhookUpsertRequest.new # configure as needed
begin
result = client.webhooks.webhooks_upsert_events_webhook(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling webhooks_upsert_events_webhook: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ——————————— | —————————— | ——————————— | —– | — | | events_webhook_upsert_request | EventsWebhookUpsertRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
webhook string (required) Destination URL that receives webhook event payloads. Must be a valid http(s) URL.
events (“EMAIL_OPEN” | “EMAIL_CLICK” | “EMAIL_FAILED” | “EMAIL_DELIVERED” | “EMAIL_UNSUBSCRIBE” | “EMAIL_INBOUND” | “INAPP_WEB_FAILED” | “INAPP_WEB_UNSUBSCRIBE” | “SMS_DELIVERED” | “SMS_FAILED” | “SMS_UNSUBSCRIBE” | “SMS_SUBSCRIBE” | “SMS_INBOUND” | “PUSH_FAILED” | “PUSH_UNSUBSCRIBE” | “CALL_FAILED” | “CALL_UNSUBSCRIBE” | “WEB_PUSH_FAILED” | “WEB_PUSH_UNSUBSCRIBE” | “SLACK_FAILED” | “SLACK_UNSUBSCRIBE” | “VOICE_INBOUND”)[] (required) List of event types that should be forwarded to the webhook URL.

Return Type

EventsWebhookResponse

Addresses

addresses_create_address()

Create a new email inbox. Omit domain for a built-in @mail.pingram.io address; set domain and displayName for a custom address on a verified domain.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::CreateAddressRequest.new # configure as needed
begin
result = client.addresses.addresses_create_address(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling addresses_create_address: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––––––––– | ———————— | ——————————— | —– | — | | create_address_request | CreateAddressRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
prefix string (required)
domain string
displayName string

Return Type

AddressResponse

addresses_delete_address()

Delete a custom inbound address. Builtin addresses cannot be deleted.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.addresses.addresses_delete_address
p result
rescue Pingram::ApiError => e
puts "Error when calling addresses_delete_address: #{e}"
end

Parameters

Name Type Description Notes
full_address String Full address to delete (e.g. hello@example.com)

Return Type

SuccessResponse

addresses_list_addresses()

List email inboxes (addresses) configured for receiving. Custom addresses must use a verified domain.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.addresses.addresses_list_addresses
p result
rescue Pingram::ApiError => e
puts "Error when calling addresses_list_addresses: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

AccountAddressesResponse

addresses_update_address()

Update an inbox prefix or display name.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::UpdateAddressRequest.new # configure as needed
begin
result = client.addresses.addresses_update_address(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling addresses_update_address: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––––––––– | ———————— | ——————————— | —– | — | | update_address_request | UpdateAddressRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
fullAddress string (required)
prefix string
displayName string

Return Type

AddressResponse

Domains

domains_add_domain()

Add and start verification for a new sender domain. Pass the domain only (not a full email address).

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::PostSendersRequestBody.new # configure as needed
begin
result = client.domains.domains_add_domain(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling domains_add_domain: #{e}"
end

Parameters

| Name | Type | Description | Notes | | —————————– | ––––––––––––– | ——————————— | —– | — | | post_senders_request_body | PostSendersRequestBody | See Request Body Properties below | | |

Request Body Properties

Name Type Description
sender string (required)

Return Type

Array&lt;GetSendersResponseInner&gt;

domains_delete_domain()

Remove a sender domain from the account.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.domains.domains_delete_domain
p result
rescue Pingram::ApiError => e
puts "Error when calling domains_delete_domain: #{e}"
end

Parameters

Name Type Description Notes
sender String Sender domain (URL encoded)

Return Type

SuccessResponse

domains_list_domains()

List sender domains configured for the account (for outbound email).

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.domains.domains_list_domains
p result
rescue Pingram::ApiError => e
puts "Error when calling domains_list_domains: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

Array&lt;GetSendersResponseInner&gt;

domains_start_domain_verification()

Start SES domain verification (DNS readiness is checked client-side via checkDomainDns)

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.domains.domains_start_domain_verification
p result
rescue Pingram::ApiError => e
puts "Error when calling domains_start_domain_verification: #{e}"
end

Parameters

Name Type Description Notes
sender String Sender domain (URL encoded)

Return Type

Array&lt;GetSendersResponseInner&gt;

Email

email_send()

Send an email. Requires type, to, subject, and html. Optional: fromAddress, fromName, schedule, attachments. The fromAddress must be a verified domain; otherwise our built-in address will be used which is fine for testing purposes.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::SendEmailRequest.new # configure as needed
begin
result = client.email.email_send(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling email_send: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––––––– | –––––––––– | ——————————— | —– | — | | send_email_request | SendEmailRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
type string (required) The notification type to send.
to string (required) The email address of the recipient.
subject string (required) The subject of the email.
html string (required) The HTML body of the email.
fromName string The display name of the sender.
fromAddress string The email address of the sender.
previewText string The preview text of the email.
replyToAddresses string[] The reply-to addresses of the email.
ccAddresses string[] The CC addresses of the email.
bccAddresses string[] The BCC addresses of the email.
attachments object[] URL-based file attachments. Up to 20 MB per file.
attachments[].filename string (required)
attachments[].url string (required)
schedule string The ISO 8601 datetime to schedule the email.

Return Type

SendEmailApiResponse

Environments

environments_create_environment()

Create a new environment for the account

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::EnvironmentCreateRequest.new # configure as needed
begin
result = client.environments.environments_create_environment(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling environments_create_environment: #{e}"
end

Parameters

| Name | Type | Description | Notes | | —————————— | –––––––––––––– | ——————————— | —– | — | | environment_create_request | EnvironmentCreateRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
title string (required)

Return Type

Environment

environments_list_environments()

Get all environments for the authenticated account

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.environments.environments_list_environments
p result
rescue Pingram::ApiError => e
puts "Error when calling environments_list_environments: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

Array&lt;GetEnvironmentsResponseInner&gt;

environments_update_environment()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::EnvironmentPatchRequest.new # configure as needed
begin
result = client.environments.environments_update_environment(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling environments_update_environment: #{e}"
end

Parameters

| Name | Type | Description | Notes | | —————————– | ————————— | ——————————— | —– | — | | client_id | String | Environment client ID | | | environment_patch_request | EnvironmentPatchRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
resetSecret boolean
disableSending (“EMAIL” | “INAPP_WEB” | “SMS” | “CALL” | “PUSH” | “WEB_PUSH” | “SLACK”)[]
title string
secureMode boolean

Return Type

Environment

Logs

logs_get_log_retention()

Get log retention period in days for the account

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.logs.logs_get_log_retention
p result
rescue Pingram::ApiError => e
puts "Error when calling logs_get_log_retention: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

LogsRetentionResponse

logs_get_logs()

List recent notification logs for the authenticated account, newest first.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.logs.logs_get_logs
p result
rescue Pingram::ApiError => e
puts "Error when calling logs_get_logs: #{e}"
end

Parameters

Name Type Description Notes
limit Float Maximum number of logs to return (default [optional]
cursor String Pagination cursor for next page [optional]

Return Type

GetLogsResponse

logs_get_logs_by_tracking_ids()

Get logs by tracking IDs (comma-separated, max 25 IDs). Use after sending email or SMS to look up delivery status.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.logs.logs_get_logs_by_tracking_ids
p result
rescue Pingram::ApiError => e
puts "Error when calling logs_get_logs_by_tracking_ids: #{e}"
end

Parameters

Name Type Description Notes
tracking_ids String Comma-separated tracking IDs (URL encoded)

Return Type

LogsGetResponse

logs_get_logs_query_result()

Get results from a log query started with Start Log Query. Poll until status is Complete.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.logs.logs_get_logs_query_result
p result
rescue Pingram::ApiError => e
puts "Error when calling logs_get_logs_query_result: #{e}"
end

Parameters

Name Type Description Notes
query_id String Query ID returned by Start Log Query

Return Type

LogsQueryResultResponse

logs_start_logs_query()

Start an asynchronous log search over a date range. Returns a queryId; poll with Get Log Query Results until status is Complete.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::LogQueryPostBody.new # configure as needed
begin
result = client.logs.logs_start_logs_query(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling logs_start_logs_query: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ———————– | –––––––––– | ——————————— | —– | — | | log_query_post_body | LogQueryPostBody | See Request Body Properties below | | |

Request Body Properties

Name Type Description
dateRangeFilter number[] A tuple of [startTime, endTime] for the date range filter, each representing a unix timestamp.
userFilter string
envIdFilter string[]
statusFilter string
channelFilter (“email” | “inapp” | “sms” | “call” | “web_push” | “mobile_push” | “slack”)[]
notificationFilter string[]

Return Type

LogsQueryResponse

logs_tail_logs()

Get last 100 logs from the stream

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.logs.logs_tail_logs
p result
rescue Pingram::ApiError => e
puts "Error when calling logs_tail_logs: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

LogsTailResponse

Numbers

numbers_list()

List active phone numbers registered for the account.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.numbers.numbers_list
p result
rescue Pingram::ApiError => e
puts "Error when calling numbers_list: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

ListPhoneNumbersResponse

numbers_list_released()

List released phone numbers. Released numbers may be purchased again with 2 weeks of being released. Released numbers may be removed from released list after 2 weeks.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.numbers.numbers_list_released
p result
rescue Pingram::ApiError => e
puts "Error when calling numbers_list_released: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

ListReleasedPhoneNumbersResponse

numbers_order_number()

Purchase a phone number for the authenticated account, or reactivate a released number owned by the account (preserves original createdAt). Pass phoneNumber in E.164 format (e.g. +15551234567).

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::OrderPhoneNumberRequest.new # configure as needed
begin
result = client.numbers.numbers_order_number(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling numbers_order_number: #{e}"
end

Parameters

| Name | Type | Description | Notes | | —————————— | ————————— | ——————————— | —– | — | | order_phone_number_request | OrderPhoneNumberRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
phoneNumber string (required) E.164 from search results

Return Type

OrderPhoneNumberResponse

numbers_release_number()

Release a phone number from the account. No refund for the current billing month.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.numbers.numbers_release_number
p result
rescue Pingram::ApiError => e
puts "Error when calling numbers_release_number: #{e}"
end

Parameters

Name Type Description Notes
phone_number String E.164 phone number to release

Return Type

ReleasePhoneNumberResponse

numbers_search_available()

Search for available phone numbers to purchase. Requires countryCode (e.g. US, CA). Use before ordering a number.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.numbers.numbers_search_available
p result
rescue Pingram::ApiError => e
puts "Error when calling numbers_search_available: #{e}"
end

Parameters

Name Type Description Notes
country_code String ISO 3166-1 alpha-2 country code (e.g., US, CA)
features String Comma-separated [optional]
area_code String National destination / area code filter [optional]
limit Float Max results (default 10, max 50) [optional]

Return Type

SearchAvailablePhoneNumbersResponse

Organization

organization_create()

Create organization after SMS verification bypass

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.organization.organization_create
p result
rescue Pingram::ApiError => e
puts "Error when calling organization_create: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

CreateOrganizationResponse

organization_get_usage()

Get usage for the authenticated account’s organization (new billing model).

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.organization.organization_get_usage
p result
rescue Pingram::ApiError => e
puts "Error when calling organization_get_usage: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

OrganizationUsage

organization_get_usage_history()

Get historical usage for the authenticated account’s organization over a date range.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.organization.organization_get_usage_history
p result
rescue Pingram::ApiError => e
puts "Error when calling organization_get_usage_history: #{e}"
end

Parameters

Name Type Description Notes
start_date String Start date (YYYY-MM-DD) for the range
end_date String End date (YYYY-MM-DD) for the range

Return Type

OrganizationUsageHistory

Profile

profile_accept_invite()

Accept a team invitation using a token

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::AcceptInviteRequest.new # configure as needed
begin
result = client.profile.profile_accept_invite(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_accept_invite: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ———————–– | ———————– | ——————————— | —– | — | | accept_invite_request | AcceptInviteRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
token string (required)

Return Type

AcceptInviteResponse

profile_change_email()

Change the email address of the authenticated user

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::ChangeEmailRequest.new # configure as needed
begin
result = client.profile.profile_change_email(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_change_email: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ———————— | ––––––––––– | ——————————— | —– | — | | change_email_request | ChangeEmailRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
newEmail string (required)

Return Type

SuccessResponse

profile_delete_account()

Permanently delete the authenticated user’s account

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::DeleteAccountRequest.new # configure as needed
begin
result = client.profile.profile_delete_account(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_delete_account: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––––––––– | ———————— | ——————————— | —– | — | | delete_account_request | DeleteAccountRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
reason string

Return Type

SuccessResponse

profile_disable_mfa()

Disable MFA for the authenticated user

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.profile.profile_disable_mfa
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_disable_mfa: #{e}"
end

Parameters

Name Type Description Notes
type String MFA type (e.g. SOFTWARE_TOKEN_MFA)

Return Type

SuccessResponse

profile_get_mfa_status()

Get MFA status for the authenticated user

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.profile.profile_get_mfa_status
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_get_mfa_status: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

MFAStatusResponse

profile_setup_mfa()

Start TOTP MFA setup and return QR code data

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::MFASetupRequest.new # configure as needed
begin
result = client.profile.profile_setup_mfa(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_setup_mfa: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ——————— | —————–– | ——————————— | —– | — | | mfa_setup_request | MFASetupRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
type “SOFTWARE_TOKEN_MFA” (required) MFA methods supported by the profile MFA API.

Return Type

MFASetupResponse

profile_verify_mfa()

Verify TOTP code and enable MFA

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::MFAVerifyRequest.new # configure as needed
begin
result = client.profile.profile_verify_mfa(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling profile_verify_mfa: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––––––– | –––––––––– | ——————————— | —– | — | | mfa_verify_request | MFAVerifyRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
type “SOFTWARE_TOKEN_MFA” (required) MFA methods supported by the profile MFA API.
code string (required)
session string (required)

Return Type

SuccessResponse

PushSettings

push_settings_delete_push_apn_settings()

```ruby
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.push_settings.push_settings_delete_push_apn_settings
p result
rescue Pingram::ApiError => e
puts "Error when calling push_settings_delete_push_apn_settings: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

nil (empty response body)

push_settings_delete_push_fcm_settings()

```ruby
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.push_settings.push_settings_delete_push_fcm_settings
p result
rescue Pingram::ApiError => e
puts "Error when calling push_settings_delete_push_fcm_settings: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

nil (empty response body)

push_settings_get_push_apn_settings()

Get Apple Push Notification (APN) configuration for the current account.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.push_settings.push_settings_get_push_apn_settings
p result
rescue Pingram::ApiError => e
puts "Error when calling push_settings_get_push_apn_settings: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

APNConfig

push_settings_get_push_fcm_settings()

Get Firebase Cloud Messaging (FCM) configuration for the current account.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.push_settings.push_settings_get_push_fcm_settings
p result
rescue Pingram::ApiError => e
puts "Error when calling push_settings_get_push_fcm_settings: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

PushSettingsFCMResponse

push_settings_upsert_push_apn_settings()

Create or update Apple Push Notification (APN) configuration for the current account.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::APNConfig.new # configure as needed
begin
result = client.push_settings.push_settings_upsert_push_apn_settings(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling push_settings_upsert_push_apn_settings: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––– | ———–– | ——————————— | —– | — | | apn_config | APNConfig | See Request Body Properties below | | |

Request Body Properties

Name Type Description
KeyId string (required)
Key string (required)
TeamId string (required)
Topic string (required)

Return Type

APNConfig

push_settings_upsert_push_fcm_settings()

Create or update Firebase Cloud Messaging (FCM) configuration for the current account.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::PushSettingsFCMPutRequest.new # configure as needed
begin
result = client.push_settings.push_settings_upsert_push_fcm_settings(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling push_settings_upsert_push_fcm_settings: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ——————————— | —————————– | ——————————— | —– | — | | push_settings_fcm_put_request | PushSettingsFCMPutRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
fcmConfig string (required)

Return Type

PushSettingsFCMResponse

Sender

sender_delete_schedule()

Delete (unschedule) an already scheduled notification

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.sender.sender_delete_schedule
p result
rescue Pingram::ApiError => e
puts "Error when calling sender_delete_schedule: #{e}"
end

Parameters

Name Type Description Notes
tracking_id String The tracking ID of the scheduled notification

Return Type

MessageResponse

sender_update_schedule()

Update the body or schedule of an already scheduled notification.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::SenderPostBody.new # configure as needed
begin
result = client.sender.sender_update_schedule(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling sender_update_schedule: #{e}"
end

Parameters

| Name | Type | Description | Notes | | –––––––––– | —————— | ——————————————— | —– | — | | tracking_id | String | The tracking ID of the scheduled notification | | | sender_post_body | SenderPostBody | See Request Body Properties below | | |

Request Body Properties

Name Type Description
type string ID of the notification type (e.g. “welcome_email”). Creates a new notification if it does not exist.
to object Recipient user. Provide id, email, or number to identify the user.
to.id string Unique user identifier. Required.
to.email string User’s email address for email notifications.
to.number string User’s phone number for SMS/call notifications.
to.pushTokens object[] Mobile push tokens (FCM, APN) for push notifications.
to.pushTokens[].type “FCM” | “APN” (required)
to.pushTokens[].token string (required)
to.pushTokens[].device object (required)
to.pushTokens[].device.app_id string
to.pushTokens[].device.ad_id string
to.pushTokens[].device.device_id string (required)
to.pushTokens[].device.platform string
to.pushTokens[].device.manufacturer string
to.pushTokens[].device.model string
to.pushTokens[].environment string used by APN to differentiate between sandbox and production builds (sandbox/undefined or production)
to.webPushTokens object[] Web push subscription config from the browser.
to.webPushTokens[].sub object (required) Configuration for a Push Subscription. This can be obtained on the frontend by calling serviceWorkerRegistration.pushManager.subscribe(). The expected format is the same output as JSON.stringify’ing a PushSubscription in the browser.
to.webPushTokens[].sub.endpoint string (required)
to.webPushTokens[].sub.keys object (required)
to.webPushTokens[].sub.keys.p256dh string (required)
to.webPushTokens[].sub.keys.auth string (required)
to.timezone string User’s timezone (e.g. “America/New_York”) for scheduling.
to.slackChannel string The 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”
to.slackToken object
to.slackToken.access_token string
to.slackToken.app_id string
to.slackToken.authed_user object
to.slackToken.authed_user.access_token string
to.slackToken.authed_user.expires_in number
to.slackToken.authed_user.id string
to.slackToken.authed_user.refresh_token string
to.slackToken.authed_user.scope string
to.slackToken.authed_user.token_type string
to.slackToken.bot_user_id string
to.slackToken.enterprise object
to.slackToken.enterprise.id string
to.slackToken.enterprise.name string
to.slackToken.error string
to.slackToken.expires_in number
to.slackToken.incoming_webhook object
to.slackToken.incoming_webhook.channel string
to.slackToken.incoming_webhook.channel_id string
to.slackToken.incoming_webhook.configuration_url string
to.slackToken.incoming_webhook.url string
to.slackToken.is_enterprise_install boolean
to.slackToken.needed string
to.slackToken.ok boolean (required)
to.slackToken.provided string
to.slackToken.refresh_token string
to.slackToken.scope string
to.slackToken.team object
to.slackToken.team.id string
to.slackToken.team.name string
to.slackToken.token_type string
to.slackToken.warning string
to.slackToken.response_metadata object
to.slackToken.response_metadata.warnings string[]
to.slackToken.response_metadata.next_cursor string
to.slackToken.response_metadata.scopes string[]
to.slackToken.response_metadata.acceptedScopes string[]
to.slackToken.response_metadata.retryAfter number
to.slackToken.response_metadata.messages string[]
to.lastSeenTime string Last activity timestamp. Updated automatically. Read-only.
to.updatedAt string Last update timestamp. Read-only.
to.createdAt string Creation timestamp. Read-only.
to.emailSuppressionStatus object Bounce or complaint status if email was suppressed. Read-only.
to.emailSuppressionStatus.reason “Bounce” | “Complaint” (required)
to.emailSuppressionStatus.details object (required)
forceChannels (“EMAIL” | “INAPP_WEB” | “SMS” | “CALL” | “PUSH” | “WEB_PUSH” | “SLACK”)[] Override which channels to send to (e.g. [“EMAIL”, “SMS”]). Bypasses notification channel config.
parameters Record<string, any> Key-value pairs for template merge tags. Replaces placeholders like {{firstName}} in templates.
secondaryId string Optional sub-notification identifier for grouping or tracking.
templateId string Specific template ID to use. If omitted, uses the default template for each channel.
subNotificationId string Sub-notification identifier (e.g. for grouping related notifications).
options object Per-channel overrides for send options (email, APN, FCM).
options.email object Email-specific overrides.
options.email.replyToAddresses string[] Reply-to addresses for the email.
options.email.ccAddresses string[] CC recipients.
options.email.bccAddresses string[] BCC recipients.
options.email.fromAddress string Override sender email address.
options.email.fromName string Override sender display name.
options.email.attachments (object | object)[] File attachments (by URL or inline base64 content). Inline content: ~4 MB raw per file (413 if exceeded). URL url: up to 20 MB per file.
options.email.condition string Conditional expression for when to send (e.g. merge tag logic).
options.apn object Apple Push Notification (APN) overrides.
options.apn.expiry number Seconds until the notification expires.
options.apn.priority number Delivery priority (10 = immediate, 5 = power-saving).
options.apn.collapseId string Group notifications with the same ID (replaces previous).
options.apn.threadId string Thread identifier for grouping notifications.
options.apn.badge number Badge count on app icon.
options.apn.sound string Sound file name.
options.apn.contentAvailable boolean Silent background notification (no alert).
options.fcm object Firebase Cloud Messaging (FCM) overrides.
options.fcm.android object Android-specific FCM options.
options.fcm.android.collapseKey string Collapse key for grouping messages.
options.fcm.android.priority “high” | “normal” Delivery priority.
options.fcm.android.ttl number Time to live in seconds.
options.fcm.android.restrictedPackageName string Restrict delivery to a specific package.
options.push object Cross-platform mobile push options (applied to both APN and FCM).
options.push.customData Record<string, string> Up to 3 custom string key-value pairs for deep linking. Included in both APN and FCM payloads.
schedule string
email object Inline email content (subject, html). Use when not using templates.
email.subject string (required) Email subject line.
email.html string (required) HTML body content.
email.previewText string Preview/snippet text shown in inbox.
email.senderName string Display name of sender.
email.senderEmail string Sender email address.
inapp object Inline in-app content (title, url, image).
inapp.title string (required) Notification title.
inapp.url string URL to open when clicked.
inapp.image string Image URL.
sms object Inline SMS content (message, autoReply, from, mediaUrls).
sms.message string SMS/MMS body text.
sms.mediaUrls string[] Public HTTPS URLs of media to attach (MMS). Carriers fetch these via GET. Total size limits apply per provider.
sms.autoReply object
sms.autoReply.message string (required) Auto-reply message to send when user texts in.
sms.from string Override the sender phone number. Must be a verified number on your account.
call object Inline call content (message).
call.message string (required) Text to speak (TTS).
web_push object Inline web push content (title, message, icon, url).
web_push.title string (required) Notification title.
web_push.message string (required) Body text.
web_push.icon string Icon URL.
web_push.url string URL to open when clicked.
mobile_push object Inline mobile push content (title, message).
mobile_push.title string (required) Notification title.
mobile_push.message string (required) Body text.
slack object Inline Slack content (text, blocks, etc.).
slack.text string (required) Fallback plain text (required when using blocks).
slack.blocks Record<string, any>[] Slack Block Kit blocks.
slack.username string Override bot username.
slack.icon string Icon: emoji (e.g. “:smile:”) or URL. Default: bot’s icon.
slack.thread_ts string Parent message ts to post in a thread.
slack.reply_broadcast boolean When true with thread_ts, broadcasts reply to channel. Default: false.
slack.parse “full” | “none” URL parsing: “full” (clickable links) or “none”. Default: “none”.
slack.link_names boolean Convert channel and username refs to Slack links. Default: false.
slack.mrkdwn boolean Enable Slack markup (bold, italic, code). Default: true.
slack.unfurl_links boolean Unfurl link previews. Default: true.
slack.unfurl_media boolean Unfurl media previews. Default: true.
slack.metadata object Slack message metadata with optional work object entities. Combines standard Slack message metadata fields with an array of entity objects.
slack.metadata.entities object[] An array of work object entities.
slack.metadata.entities[].entity_type string (required) Entity type (e.g., ‘slack#/entities/task’, ‘slack#/entities/file’).
slack.metadata.entities[].entity_payload Record<string, any> (required) Schema for the given entity type.
slack.metadata.entities[].external_ref object (required) Reference used to identify an entity within the developer’s system.
slack.metadata.entities[].external_ref.id string (required)
slack.metadata.entities[].external_ref.type string
slack.metadata.entities[].url string (required) URL used to identify an entity within the developer’s system.
slack.metadata.entities[].app_unfurl_url string The exact URL posted in the source message. Required in metadata passed to chat.unfurl.
slack.metadata.event_type string A human readable alphanumeric string representing your application’s metadata event.
slack.metadata.event_payload Record<string, any> A free-form object containing whatever data your application wishes to attach to messages.

Return Type

MessageResponse

Sms

sms_send()

Send an SMS or MMS directly without a template. Requires type and to. Pass message and/or mediaUrls. Optional: from, schedule.

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::SendSmsRequest.new # configure as needed
begin
result = client.sms.sms_send(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling sms_send: #{e}"
end

Parameters

| Name | Type | Description | Notes | | –––––––––– | —————— | ——————————— | —– | — | | send_sms_request | SendSmsRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
type string (required) The notification type to send.
to string (required) The phone number of the recipient.
message string The message of the SMS or MMS notification. Optional when mediaUrls is provided.
mediaUrls string[] Public HTTPS URLs of media to attach (MMS).
schedule string The ISO 8601 datetime to schedule the SMS notification.
from string Override the sender phone number. Must be a dedicated number on your Pingram account.

Return Type

SendSmsResponse

Templates

templates_create_template()

Create a new template for a notification

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::TemplatePostRequest.new # configure as needed
begin
result = client.templates.templates_create_template(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling templates_create_template: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ———————–– | ———————– | ——————————— | —– | — | | notification_id | String | Notification ID | | | channel | String | Channel type | | | template_post_request | TemplatePostRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
templateId string (required) Unique ID for this template within the notification and channel. Required.
html string HTML body of the email.
previewText string Preview text (e.g. for inbox).
internal string Internal editor representation of the email content (e.g. Bee or Redactor JSON). Used for editing and component embedding; the actual email sent to recipients uses the html field.
subject string Email subject line.
senderName string Sender display name.
senderEmail string Sender email address.
title string Notification title (in-app).
redirectURL string URL to open when the user taps the notification.
imageURL string Image URL shown in the in-app notification.
instant object Copy for instant (real-time) delivery.
instant.title string
instant.redirectURL string
instant.imageURL string (required)
batch object Copy for batch delivery.
batch.title string (required)
batch.redirectURL string (required)
batch.imageURL string (required)
text string Message text (SMS or call).
message string Push notification body text. (title is shared with INAPP_WEB above.)
icon string Web push: icon URL. Slack: bot icon (emoji or URL).
url string Web push: URL to open when the notification is clicked.
blocks Record<string, any>[] Slack message blocks (optional).
username string Slack bot username.

Return Type

Template

templates_delete_template()

```ruby
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.templates.templates_delete_template
p result
rescue Pingram::ApiError => e
puts "Error when calling templates_delete_template: #{e}"
end

Parameters

Name Type Description Notes
notification_id String Notification ID
channel String Channel type
template_id String Template ID

Return Type

nil (empty response body)

templates_get_template()

Get a single template by ID

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.templates.templates_get_template
p result
rescue Pingram::ApiError => e
puts "Error when calling templates_get_template: #{e}"
end

Parameters

Name Type Description Notes
notification_id String Notification ID
channel String Channel type
template_id String Template ID

Return Type

GetTemplatesResponse

templates_list_templates()

List all templates for a notification and channel

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.templates.templates_list_templates
p result
rescue Pingram::ApiError => e
puts "Error when calling templates_list_templates: #{e}"
end

Parameters

Name Type Description Notes
notification_id String Notification ID
channel String Channel type

Return Type

Array&lt;GetTemplatesListResponseInner&gt;

templates_set_default_template()

Set a template as default for specific delivery modes

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::SetDefaultTemplateRequest.new # configure as needed
begin
result = client.templates.templates_set_default_template(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling templates_set_default_template: #{e}"
end

Parameters

| Name | Type | Description | Notes | | –––––––––––––––– | —————————– | ——————————— | —– | — | | notification_id | String | Notification ID | | | channel | String | Channel type | | | set_default_template_request | SetDefaultTemplateRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
templateId string (required)
modes (“instant” | “hourly” | “daily” | “weekly” | “monthly”)[] (required)

Return Type

Template

templates_update_template()

Update a template’s properties

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::TemplatePatchRequest.new # configure as needed
begin
result = client.templates.templates_update_template(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling templates_update_template: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ––––––––––––– | ———————— | ——————————— | —– | — | | notification_id | String | Notification ID | | | channel | String | Channel type | | | template_id | String | Template ID | | | template_patch_request | TemplatePatchRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
html string HTML body of the email.
previewText string Preview text (e.g. for inbox).
internal string Internal editor representation of the email content (e.g. Bee or Redactor JSON). Used for editing and component embedding; the actual email sent to recipients uses the html field.
subject string Email subject line.
senderName string Sender display name.
senderEmail string Sender email address.
title string Notification title (in-app).
redirectURL string URL to open when the user taps the notification.
imageURL string Image URL shown in the in-app notification.
instant object Copy for instant (real-time) delivery.
instant.title string
instant.redirectURL string
instant.imageURL string (required)
batch object Copy for batch delivery.
batch.title string (required)
batch.redirectURL string (required)
batch.imageURL string (required)
text string Message text (SMS or call).
message string Push notification body text. (title is shared with INAPP_WEB above.)
icon string Web push: icon URL. Slack: bot icon (emoji or URL).
url string Web push: URL to open when the notification is clicked.
blocks Record<string, any>[] Slack message blocks (optional).
username string Slack bot username.

Return Type

Template

Types

types_create_notification_type()

Create a new notification

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::NotificationCreateRequest.new # configure as needed
begin
result = client.types.types_create_notification_type(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling types_create_notification_type: #{e}"
end

Parameters

| Name | Type | Description | Notes | | —————————–– | —————————– | ——————————— | —– | — | | notification_create_request | NotificationCreateRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
notificationId string (required)
title string (required)
channels string[] (required)
options object
options.EMAIL object
options.EMAIL.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.EMAIL.off object
options.EMAIL.off.enabled boolean (required)
options.EMAIL.instant object
options.EMAIL.instant.enabled boolean (required)
options.EMAIL.hourly object
options.EMAIL.hourly.enabled boolean (required)
options.EMAIL.daily object
options.EMAIL.daily.enabled boolean (required)
options.EMAIL.daily.hour string
options.EMAIL.weekly object
options.EMAIL.weekly.enabled boolean (required)
options.EMAIL.weekly.hour string
options.EMAIL.weekly.day string
options.EMAIL.monthly object
options.EMAIL.monthly.enabled boolean (required)
options.EMAIL.monthly.hour string
options.EMAIL.monthly.date “first” | “last”
options.INAPP_WEB object
options.INAPP_WEB.defaultDeliveryOption “off” | “instant” (required)
options.INAPP_WEB.off object
options.INAPP_WEB.off.enabled boolean (required)
options.INAPP_WEB.instant object
options.INAPP_WEB.instant.enabled boolean (required)
options.INAPP_WEB.instant.batching boolean
options.INAPP_WEB.instant.batchingKey string
options.INAPP_WEB.instant.batchingWindow number
options.SMS object
options.SMS.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.SMS.off object
options.SMS.off.enabled boolean (required)
options.SMS.instant object
options.SMS.instant.enabled boolean (required)
options.SMS.hourly object
options.SMS.hourly.enabled boolean (required)
options.SMS.daily object
options.SMS.daily.enabled boolean (required)
options.SMS.daily.hour string
options.SMS.weekly object
options.SMS.weekly.enabled boolean (required)
options.SMS.weekly.hour string
options.SMS.weekly.day string
options.SMS.monthly object
options.SMS.monthly.enabled boolean (required)
options.SMS.monthly.hour string
options.SMS.monthly.date “first” | “last”
options.CALL object
options.CALL.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.CALL.off object
options.CALL.off.enabled boolean (required)
options.CALL.instant object
options.CALL.instant.enabled boolean (required)
options.CALL.hourly object
options.CALL.hourly.enabled boolean (required)
options.CALL.daily object
options.CALL.daily.enabled boolean (required)
options.CALL.daily.hour string
options.CALL.weekly object
options.CALL.weekly.enabled boolean (required)
options.CALL.weekly.hour string
options.CALL.weekly.day string
options.CALL.monthly object
options.CALL.monthly.enabled boolean (required)
options.CALL.monthly.hour string
options.CALL.monthly.date “first” | “last”
options.PUSH object
options.PUSH.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.PUSH.off object
options.PUSH.off.enabled boolean (required)
options.PUSH.instant object
options.PUSH.instant.enabled boolean (required)
options.PUSH.hourly object
options.PUSH.hourly.enabled boolean (required)
options.PUSH.daily object
options.PUSH.daily.enabled boolean (required)
options.PUSH.daily.hour string
options.PUSH.weekly object
options.PUSH.weekly.enabled boolean (required)
options.PUSH.weekly.hour string
options.PUSH.weekly.day string
options.PUSH.monthly object
options.PUSH.monthly.enabled boolean (required)
options.PUSH.monthly.hour string
options.PUSH.monthly.date “first” | “last”
options.WEB_PUSH object
options.WEB_PUSH.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.WEB_PUSH.off object
options.WEB_PUSH.off.enabled boolean (required)
options.WEB_PUSH.instant object
options.WEB_PUSH.instant.enabled boolean (required)
options.WEB_PUSH.hourly object
options.WEB_PUSH.hourly.enabled boolean (required)
options.WEB_PUSH.daily object
options.WEB_PUSH.daily.enabled boolean (required)
options.WEB_PUSH.daily.hour string
options.WEB_PUSH.weekly object
options.WEB_PUSH.weekly.enabled boolean (required)
options.WEB_PUSH.weekly.hour string
options.WEB_PUSH.weekly.day string
options.WEB_PUSH.monthly object
options.WEB_PUSH.monthly.enabled boolean (required)
options.WEB_PUSH.monthly.hour string
options.WEB_PUSH.monthly.date “first” | “last”
options.SLACK object
options.SLACK.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.SLACK.off object
options.SLACK.off.enabled boolean (required)
options.SLACK.instant object
options.SLACK.instant.enabled boolean (required)
options.SLACK.hourly object
options.SLACK.hourly.enabled boolean (required)
options.SLACK.daily object
options.SLACK.daily.enabled boolean (required)
options.SLACK.daily.hour string
options.SLACK.weekly object
options.SLACK.weekly.enabled boolean (required)
options.SLACK.weekly.hour string
options.SLACK.weekly.day string
options.SLACK.monthly object
options.SLACK.monthly.enabled boolean (required)
options.SLACK.monthly.hour string
options.SLACK.monthly.date “first” | “last”

Return Type

Notification

types_delete_notification_type()

```ruby
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.types.types_delete_notification_type
p result
rescue Pingram::ApiError => e
puts "Error when calling types_delete_notification_type: #{e}"
end

Parameters

Name Type Description Notes
notification_id String The notification ID

Return Type

nil (empty response body)

types_get_notification_type()

Get a specific notification by ID

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.types.types_get_notification_type
p result
rescue Pingram::ApiError => e
puts "Error when calling types_get_notification_type: #{e}"
end

Parameters

Name Type Description Notes
notification_id String The notification ID

Return Type

Array&lt;GetNotificationsResponseInner&gt;

types_list_notification_types()

Get all notifications for an account with their templates

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.types.types_list_notification_types
p result
rescue Pingram::ApiError => e
puts "Error when calling types_list_notification_types: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

Array&lt;GetNotificationsResponseInner&gt;

types_update_notification_type()

Update a notification’s settings

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::NotificationPatchRequest.new # configure as needed
begin
result = client.types.types_update_notification_type(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling types_update_notification_type: #{e}"
end

Parameters

| Name | Type | Description | Notes | | —————————— | –––––––––––––– | ——————————— | —– | — | | notification_id | String | The notification ID | | | notification_patch_request | NotificationPatchRequest | See Request Body Properties below | | |

Request Body Properties

| Name | Type | Description | | —————————————— | –––––––––––––––––––––––––––––––––––––––– | ———– | — | | title | string | | | channels | (“EMAIL” | “INAPP_WEB” | “SMS” | “CALL” | “PUSH” | “WEB_PUSH” | “SLACK”)[] | | | enabled | boolean | | | deduplication | object | | | deduplication.duration | number | (required) | | throttling | object | | | throttling.max | number | (required) | | throttling.period | number | (required) | | throttling.unit | “seconds” | “minutes” | “hours” | “days” | “months” | “years” | (required) | | throttling.forever | boolean | (required) | | throttling.scope | (“userId” | “notificationId”)[] | (required) | | retention | number | null | | | options | object | | | options.EMAIL | object | | | options.EMAIL.defaultDeliveryOption | “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” | (required) | | options.EMAIL.off | object | | | options.EMAIL.off.enabled | boolean | (required) | | options.EMAIL.instant | object | | | options.EMAIL.instant.enabled | boolean | (required) | | options.EMAIL.hourly | object | | | options.EMAIL.hourly.enabled | boolean | (required) | | options.EMAIL.daily | object | | | options.EMAIL.daily.enabled | boolean | (required) | | options.EMAIL.daily.hour | string | | | options.EMAIL.weekly | object | | | options.EMAIL.weekly.enabled | boolean | (required) | | options.EMAIL.weekly.hour | string | | | options.EMAIL.weekly.day | string | | | options.EMAIL.monthly | object | | | options.EMAIL.monthly.enabled | boolean | (required) | | options.EMAIL.monthly.hour | string | | | options.EMAIL.monthly.date | “first” | “last” | | | options.INAPP_WEB | object | | | options.INAPP_WEB.defaultDeliveryOption | “off” | “instant” | (required) | | options.INAPP_WEB.off | object | | | options.INAPP_WEB.off.enabled | boolean | (required) | | options.INAPP_WEB.instant | object | | | options.INAPP_WEB.instant.enabled | boolean | (required) | | options.INAPP_WEB.instant.batching | boolean | | | options.INAPP_WEB.instant.batchingKey | string | | | options.INAPP_WEB.instant.batchingWindow | number | | | options.SMS | object | | | options.SMS.defaultDeliveryOption | “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” | (required) | | options.SMS.off | object | | | options.SMS.off.enabled | boolean | (required) | | options.SMS.instant | object | | | options.SMS.instant.enabled | boolean | (required) | | options.SMS.hourly | object | | | options.SMS.hourly.enabled | boolean | (required) | | options.SMS.daily | object | | | options.SMS.daily.enabled | boolean | (required) | | options.SMS.daily.hour | string | | | options.SMS.weekly | object | | | options.SMS.weekly.enabled | boolean | (required) | | options.SMS.weekly.hour | string | | | options.SMS.weekly.day | string | | | options.SMS.monthly | object | | | options.SMS.monthly.enabled | boolean | (required) | | options.SMS.monthly.hour | string | | | options.SMS.monthly.date | “first” | “last” | | | options.CALL | object | | | options.CALL.defaultDeliveryOption | “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” | (required) | | options.CALL.off | object | | | options.CALL.off.enabled | boolean | (required) | | options.CALL.instant | object | | | options.CALL.instant.enabled | boolean | (required) | | options.CALL.hourly | object | | | options.CALL.hourly.enabled | boolean | (required) | | options.CALL.daily | object | | | options.CALL.daily.enabled | boolean | (required) | | options.CALL.daily.hour | string | | | options.CALL.weekly | object | | | options.CALL.weekly.enabled | boolean | (required) | | options.CALL.weekly.hour | string | | | options.CALL.weekly.day | string | | | options.CALL.monthly | object | | | options.CALL.monthly.enabled | boolean | (required) | | options.CALL.monthly.hour | string | | | options.CALL.monthly.date | “first” | “last” | | | options.PUSH | object | | | options.PUSH.defaultDeliveryOption | “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” | (required) | | options.PUSH.off | object | | | options.PUSH.off.enabled | boolean | (required) | | options.PUSH.instant | object | | | options.PUSH.instant.enabled | boolean | (required) | | options.PUSH.hourly | object | | | options.PUSH.hourly.enabled | boolean | (required) | | options.PUSH.daily | object | | | options.PUSH.daily.enabled | boolean | (required) | | options.PUSH.daily.hour | string | | | options.PUSH.weekly | object | | | options.PUSH.weekly.enabled | boolean | (required) | | options.PUSH.weekly.hour | string | | | options.PUSH.weekly.day | string | | | options.PUSH.monthly | object | | | options.PUSH.monthly.enabled | boolean | (required) | | options.PUSH.monthly.hour | string | | | options.PUSH.monthly.date | “first” | “last” | | | options.WEB_PUSH | object | | | options.WEB_PUSH.defaultDeliveryOption | “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” | (required) | | options.WEB_PUSH.off | object | | | options.WEB_PUSH.off.enabled | boolean | (required) | | options.WEB_PUSH.instant | object | | | options.WEB_PUSH.instant.enabled | boolean | (required) | | options.WEB_PUSH.hourly | object | | | options.WEB_PUSH.hourly.enabled | boolean | (required) | | options.WEB_PUSH.daily | object | | | options.WEB_PUSH.daily.enabled | boolean | (required) | | options.WEB_PUSH.daily.hour | string | | | options.WEB_PUSH.weekly | object | | | options.WEB_PUSH.weekly.enabled | boolean | (required) | | options.WEB_PUSH.weekly.hour | string | | | options.WEB_PUSH.weekly.day | string | | | options.WEB_PUSH.monthly | object | | | options.WEB_PUSH.monthly.enabled | boolean | (required) | | options.WEB_PUSH.monthly.hour | string | | | options.WEB_PUSH.monthly.date | “first” | “last” | | | options.SLACK | object | | | options.SLACK.defaultDeliveryOption | “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” | (required) | | options.SLACK.off | object | | | options.SLACK.off.enabled | boolean | (required) | | options.SLACK.instant | object | | | options.SLACK.instant.enabled | boolean | (required) | | options.SLACK.hourly | object | | | options.SLACK.hourly.enabled | boolean | (required) | | options.SLACK.daily | object | | | options.SLACK.daily.enabled | boolean | (required) | | options.SLACK.daily.hour | string | | | options.SLACK.weekly | object | | | options.SLACK.weekly.enabled | boolean | (required) | | options.SLACK.weekly.hour | string | | | options.SLACK.weekly.day | string | | | options.SLACK.monthly | object | | | options.SLACK.monthly.enabled | boolean | (required) | | options.SLACK.monthly.hour | string | | | options.SLACK.monthly.date | “first” | “last” | |

Return Type

Notification

User

user_get_account_metadata()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.user.user_get_account_metadata
p result
rescue Pingram::ApiError => e
puts "Error when calling user_get_account_metadata: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

GetAccountMetadataResponse

user_get_available_slack_channels()

```ruby
require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.user.user_get_available_slack_channels
p result
rescue Pingram::ApiError => e
puts "Error when calling user_get_available_slack_channels: #{e}"
end

Parameters

Name Type Description Notes
user_id String User ID

Return Type

nil (empty response body)

user_get_in_app_notifications()

Get in-app notifications for a user

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.user.user_get_in_app_notifications
p result
rescue Pingram::ApiError => e
puts "Error when calling user_get_in_app_notifications: #{e}"
end

Parameters

Name Type Description Notes
before String Timestamp or ISO date to fetch notifications before [optional]
count Float Number of notifications to return (default 10) [optional]

Return Type

GetInappNotificationsResponse

user_get_in_app_unread_count()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.user.user_get_in_app_unread_count
p result
rescue Pingram::ApiError => e
puts "Error when calling user_get_in_app_unread_count: #{e}"
end

Parameters

This endpoint does not need any parameter.

Return Type

InappUnreadCountResponse

user_get_user()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.user.user_get_user
p result
rescue Pingram::ApiError => e
puts "Error when calling user_get_user: #{e}"
end

Parameters

Name Type Description Notes
user_id String User ID

Return Type

User

user_identify()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::PostUserRequest.new # configure as needed
begin
result = client.user.user_identify(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling user_identify: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ——————— | —————–– | ——————————— | —– | — | | user_id | String | User ID | | | post_user_request | PostUserRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
id string Unique user identifier. Required.
email string User’s email address for email notifications.
number string User’s phone number for SMS/call notifications.
pushTokens object[] Mobile push tokens (FCM, APN) for push notifications.
pushTokens[].type “FCM” | “APN” (required)
pushTokens[].token string (required)
pushTokens[].device object (required)
pushTokens[].device.app_id string
pushTokens[].device.ad_id string
pushTokens[].device.device_id string (required)
pushTokens[].device.platform string
pushTokens[].device.manufacturer string
pushTokens[].device.model string
pushTokens[].environment string used by APN to differentiate between sandbox and production builds (sandbox/undefined or production)
webPushTokens object[] Web push subscription config from the browser.
webPushTokens[].sub object (required) Configuration for a Push Subscription. This can be obtained on the frontend by calling serviceWorkerRegistration.pushManager.subscribe(). The expected format is the same output as JSON.stringify’ing a PushSubscription in the browser.
webPushTokens[].sub.endpoint string (required)
webPushTokens[].sub.keys object (required)
webPushTokens[].sub.keys.p256dh string (required)
webPushTokens[].sub.keys.auth string (required)
timezone string User’s timezone (e.g. “America/New_York”) for scheduling.
slackChannel string The 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”
slackToken object
slackToken.access_token string
slackToken.app_id string
slackToken.authed_user object
slackToken.authed_user.access_token string
slackToken.authed_user.expires_in number
slackToken.authed_user.id string
slackToken.authed_user.refresh_token string
slackToken.authed_user.scope string
slackToken.authed_user.token_type string
slackToken.bot_user_id string
slackToken.enterprise object
slackToken.enterprise.id string
slackToken.enterprise.name string
slackToken.error string
slackToken.expires_in number
slackToken.incoming_webhook object
slackToken.incoming_webhook.channel string
slackToken.incoming_webhook.channel_id string
slackToken.incoming_webhook.configuration_url string
slackToken.incoming_webhook.url string
slackToken.is_enterprise_install boolean
slackToken.needed string
slackToken.ok boolean (required)
slackToken.provided string
slackToken.refresh_token string
slackToken.scope string
slackToken.team object
slackToken.team.id string
slackToken.team.name string
slackToken.token_type string
slackToken.warning string
slackToken.response_metadata object
slackToken.response_metadata.warnings string[]
slackToken.response_metadata.next_cursor string
slackToken.response_metadata.scopes string[]
slackToken.response_metadata.acceptedScopes string[]
slackToken.response_metadata.retryAfter number
slackToken.response_metadata.messages string[]

Return Type

User

user_mark_in_app_notifications_as_seen()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::InAppNotificationUnreadClearRequest.new # configure as needed
begin
result = client.user.user_mark_in_app_notifications_as_seen(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling user_mark_in_app_notifications_as_seen: #{e}"
end

Parameters

| Name | Type | Description | Notes | | –––––––––––––––––––––– | ————————————— | ——————————— | —– | — | | in_app_notification_unread_clear_request | InAppNotificationUnreadClearRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
notificationId string
trackingId string

Return Type

SuccessResponse

user_update_in_app_notification_status()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
body = Pingram::InAppNotificationPatchRequest.new # configure as needed
begin
result = client.user.user_update_in_app_notification_status(body)
p result
rescue Pingram::ApiError => e
puts "Error when calling user_update_in_app_notification_status: #{e}"
end

Parameters

| Name | Type | Description | Notes | | ———————————–– | ——————————— | ——————————— | —– | — | | in_app_notification_patch_request | InAppNotificationPatchRequest | See Request Body Properties below | | |

Request Body Properties

Name Type Description
trackingIds string[] (required)
opened string
clicked string
archived string
actioned1 string
actioned2 string
reply object
reply.date string (required)
reply.message string (required)
replies object[]
replies[].date string (required)
replies[].message string (required)

Return Type

SuccessResponse

Users

users_delete_user()

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

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.users.users_delete_user
p result
rescue Pingram::ApiError => e
puts "Error when calling users_delete_user: #{e}"
end

Parameters

Name Type Description Notes
user_id String User ID
env_id String Environment ID (required when using JWT auth) [optional]

Return Type

DeleteUserResponse

users_list_users()

Get all users for an environment with pagination support

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.users.users_list_users
p result
rescue Pingram::ApiError => e
puts "Error when calling users_list_users: #{e}"
end

Parameters

Name Type Description Notes
limit Float Maximum number of users to return (default
next_token String Pagination token for next page
env_id String Environment ID (required when using JWT auth) [optional]

Return Type

GetUsersResponse

users_remove_user_from_suppression()

Remove user suppression status for a specific channel

require 'pingram'
client = Pingram::Client.new(api_key: 'YOUR_API_KEY')
begin
result = client.users.users_remove_user_from_suppression
p result
rescue Pingram::ApiError => e
puts "Error when calling users_remove_user_from_suppression: #{e}"
end

Parameters

Name Type Description Notes
user_id String User ID
channel String Channel type (EMAIL)
env_id String Environment ID (required when using JWT auth) [optional]

Return Type

UserSuppressionDeleteResponse