Go SDK

Setup & Initialization

  1. Install Package:
go get github.com/pingram-io/pingram-go
  1. Import:
import (
pingram "github.com/pingram-io/pingram-go"
)
  1. Initialize:
client := pingram.NewClient("pingram_sk_your_api_key")
Name Type Description
apiKey* string Your Pingram API key. You can get it from your dashboard under Environments.
baseURL string Optional. Use pingram.WithBaseURL("https://api.eu.pingram.io") or pingram.WithRegion(pingram.RegionEU) for EU/CA. Default is US.

* required

Region example:

client := pingram.NewClient("pingram_sk_...", pingram.WithRegion(pingram.RegionEU))

Working example

Full runnable example that sends a notification:

package main
import (
"context"
"encoding/json"
"fmt"
"log"
pingram "github.com/pingram-io/pingram-go"
)
func main() {
client := pingram.NewClient("pingram_sk_your_api_key") // or WithBaseURL("https://api.pingram.click") for custom host
body := pingram.SenderPostBody{
Type: pingram.PtrString("domain_verification"),
User: &pingram.GetUsersResponseUsersInner{
Id: "user@example.com",
Email: pingram.PtrString("user@example.com"),
},
Email: &pingram.SenderPostBodyEmail{
Subject: "Domain Verification",
Html: "<p>Please verify your domain by clicking the link below.</p>",
},
}
resp, _, err := client.DefaultAPI.Send(context.Background()).SenderPostBody(body).Execute()
if err != nil {
log.Fatal(err)
}
out, _ := json.MarshalIndent(resp, "", " ")
fmt.Println(string(out))
}

The sections below list every API method. For most use cases the Send method and the Domains / Users / Types APIs are the main ones.

Send

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.

senderPostBody := *pingram.NewSenderPostBody() // SenderPostBody
resp, _, err := client.DefaultAPI.Send(ctx).SenderPostBody(senderPostBody).Execute()
if err != nil {
// handle error
}
// resp is SenderPostResponse

Parameters

Name Type Description Notes

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” | “VOICE” | “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.
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.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.

Webhooks

WebhooksCreateWebhook()

Create a webhook.

webhookEndpointUpsertRequest := *pingram.NewWebhookEndpointUpsertRequest("Webhook_example", []string{"Events_example"}) // WebhookEndpointUpsertRequest
resp, _, err := client.WebhooksAPI.WebhooksCreateWebhook(ctx).WebhookEndpointUpsertRequest(webhookEndpointUpsertRequest).Execute()
if err != nil {
// handle error
}
// resp is WebhookEndpoint

Parameters

Name Type Description Notes

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”)[] (required) List of event types that should be forwarded to the webhook URL.

WebhooksDeleteWebhook()

Delete a webhook.

endpointId := // Webhook endpoint id
_, err := client.WebhooksAPI.WebhooksDeleteWebhook(ctx, endpointId).Execute()
if err != nil {
// handle error
}

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
endpointId string Webhook endpoint id
Name Type Description Notes
———–– ———–– ———–– ———––

WebhooksListWebhooks()

List webhooks for the current account.

resp, _, err := client.WebhooksAPI.WebhooksListWebhooks(ctx).Execute()
if err != nil {
// handle error
}
// resp is WebhookEndpointsResponse

Parameters

This endpoint does not need any parameter.

WebhooksUpdateWebhook()

Update a webhook. The signing secret is preserved.

endpointId := // Webhook endpoint id
webhookEndpointUpsertRequest := *pingram.NewWebhookEndpointUpsertRequest("Webhook_example", []string{"Events_example"}) // WebhookEndpointUpsertRequest
resp, _, err := client.WebhooksAPI.WebhooksUpdateWebhook(ctx, endpointId).WebhookEndpointUpsertRequest(webhookEndpointUpsertRequest).Execute()
if err != nil {
// handle error
}
// resp is WebhookEndpoint

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
endpointId string Webhook endpoint id
Name Type Description Notes
———–– ———–– ———–– ———––

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”)[] (required) List of event types that should be forwarded to the webhook URL.

Accounts

AccountsCreateAccount()

Create an additional account for the authenticated user

createAccountRequest := *pingram.NewCreateAccountRequest("Name_example") // CreateAccountRequest
resp, _, err := client.AccountsAPI.AccountsCreateAccount(ctx).CreateAccountRequest(createAccountRequest).Execute()
if err != nil {
// handle error
}
// resp is CreateAccountResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
name string (required)
plan object Billing to copy onto a new additional account.
plan.tier “budget_20” | “budget_50” | “budget_100” | “budget_250” | “budget_500” | “budget_1000” | “budget_2000” | “budget_5000” (required)
plan.sourceBillingAccountId string (required) Account whose saved payment method is copied onto the new account. The caller must be an owner of this account.
memberEmails string[] Emails to add or invite to the new account. Existing members of any account the caller belongs to are added directly; everyone else is invited.

AccountsListAccounts()

List accounts the authenticated user can access

resp, _, err := client.AccountsAPI.AccountsListAccounts(ctx).Execute()
if err != nil {
// handle error
}
// resp is ListAccountsResponse

Parameters

This endpoint does not need any parameter.

Addresses

AddressesCreateAddress()

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.

createAddressRequest := *pingram.NewCreateAddressRequest("Prefix_example") // CreateAddressRequest
resp, _, err := client.AddressesAPI.AddressesCreateAddress(ctx).CreateAddressRequest(createAddressRequest).Execute()
if err != nil {
// handle error
}
// resp is AddressResponse

Parameters

Name Type Description Notes

Request Body Properties

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

AddressesDeleteAddress()

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

fullAddress := // Full address to delete (e.g. hello@example.com)
resp, _, err := client.AddressesAPI.AddressesDeleteAddress(ctx, fullAddress).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
fullAddress string Full address to delete (e.g. hello@example.com)
Name Type Description Notes
———–– ———–– ———–– ———––

AddressesListAddresses()

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

resp, _, err := client.AddressesAPI.AddressesListAddresses(ctx).Execute()
if err != nil {
// handle error
}
// resp is AccountAddressesResponse

Parameters

This endpoint does not need any parameter.

AddressesUpdateAddress()

Update an inbox prefix or display name.

updateAddressRequest := *pingram.NewUpdateAddressRequest("FullAddress_example") // UpdateAddressRequest
resp, _, err := client.AddressesAPI.AddressesUpdateAddress(ctx).UpdateAddressRequest(updateAddressRequest).Execute()
if err != nil {
// handle error
}
// resp is AddressResponse

Parameters

Name Type Description Notes

Request Body Properties

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

Domains

DomainsAddDomain()

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

postSendersRequestBody := *pingram.NewPostSendersRequestBody("Sender_example") // PostSendersRequestBody
resp, _, err := client.DomainsAPI.DomainsAddDomain(ctx).PostSendersRequestBody(postSendersRequestBody).Execute()
if err != nil {
// handle error
}
// resp is []GetSendersResponseInner

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
sender string (required)

DomainsDeleteDomain()

Remove a sender domain from the account.

sender := // Sender domain (URL encoded)
resp, _, err := client.DomainsAPI.DomainsDeleteDomain(ctx, sender).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
sender string Sender domain (URL encoded)
Name Type Description Notes
———–– ———–– ———–– ———––

DomainsListDomains()

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

resp, _, err := client.DomainsAPI.DomainsListDomains(ctx).Execute()
if err != nil {
// handle error
}
// resp is []GetSendersResponseInner

Parameters

This endpoint does not need any parameter.

DomainsStartDomainVerification()

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

sender := // Sender domain (URL encoded)
resp, _, err := client.DomainsAPI.DomainsStartDomainVerification(ctx, sender).Execute()
if err != nil {
// handle error
}
// resp is []GetSendersResponseInner

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
sender string Sender domain (URL encoded)
Name Type Description Notes
———–– ———–– ———–– ———––

Email

EmailDeleteSuppressions()

Start removing all email suppressions of the given reason (retryable or bounces) for users in the environment. Returns immediately after the job is queued — suppressions are not yet cleared when this response is received. Large removals are processed in the background in batches.

reason := // Suppression reason to clear (retryable | bounces)
resp, _, err := client.EmailAPI.EmailDeleteSuppressions(ctx, reason).Execute()
if err != nil {
// handle error
}
// resp is MessageResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
reason string Suppression reason to clear (retryable bounces)
Name Type Description Notes
———–– ———–– ———–– ———––

EmailSend()

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.

sendEmailRequest := *pingram.NewSendEmailRequest("Type_example", "To_example", "Subject_example", "Html_example") // SendEmailRequest
resp, _, err := client.EmailAPI.EmailSend(ctx).SendEmailRequest(sendEmailRequest).Execute()
if err != nil {
// handle error
}
// resp is SendEmailApiResponse

Parameters

Name Type Description Notes

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.

Environments

EnvironmentsListEnvironments()

Get all environments for the authenticated account

resp, _, err := client.EnvironmentsAPI.EnvironmentsListEnvironments(ctx).Execute()
if err != nil {
// handle error
}
// resp is []GetEnvironmentsResponseInner

Parameters

This endpoint does not need any parameter.

EnvironmentsUpdateEnvironment()

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

clientId := // Environment client ID
environmentPatchRequest := *pingram.NewEnvironmentPatchRequest() // EnvironmentPatchRequest
resp, _, err := client.EnvironmentsAPI.EnvironmentsUpdateEnvironment(ctx, clientId).EnvironmentPatchRequest(environmentPatchRequest).Execute()
if err != nil {
// handle error
}
// resp is Environment

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
clientId string Environment client ID
Name Type Description Notes
———–– ———–– ———–– ———––

Request Body Properties

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

Logs

LogsGetLogRetention()

Get log retention period in days for the account

resp, _, err := client.LogsAPI.LogsGetLogRetention(ctx).Execute()
if err != nil {
// handle error
}
// resp is LogsRetentionResponse

Parameters

This endpoint does not need any parameter.

LogsGetLogs()

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

limit := float32(8.14) // float32 (optional)
cursor := "cursor_example" // string (optional)
resp, _, err := client.LogsAPI.LogsGetLogs(ctx).Limit(limit).Cursor(cursor).Execute()
if err != nil {
// handle error
}
// resp is GetLogsResponse

Parameters

Name Type Description Notes
limit float32 Maximum number of logs to return (default
cursor string Pagination cursor for next page

LogsGetLogsByTrackingIds()

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

trackingIds := // Comma-separated tracking IDs (URL encoded)
resp, _, err := client.LogsAPI.LogsGetLogsByTrackingIds(ctx, trackingIds).Execute()
if err != nil {
// handle error
}
// resp is LogsGetResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
trackingIds string Comma-separated tracking IDs (URL encoded)
Name Type Description Notes
———–– ———–– ———–– ———––

LogsGetLogsQueryResult()

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

queryId := // Query ID returned by Start Log Query
resp, _, err := client.LogsAPI.LogsGetLogsQueryResult(ctx, queryId).Execute()
if err != nil {
// handle error
}
// resp is LogsQueryResultResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
queryId string Query ID returned by Start Log Query
Name Type Description Notes
———–– ———–– ———–– ———––

LogsStartLogsQuery()

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

logQueryPostBody := *pingram.NewLogQueryPostBody() // LogQueryPostBody
resp, _, err := client.LogsAPI.LogsStartLogsQuery(ctx).LogQueryPostBody(logQueryPostBody).Execute()
if err != nil {
// handle error
}
// resp is LogsQueryResponse

Parameters

Name Type Description Notes

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” | “voice” | “web_push” | “mobile_push” | “slack”)[]
notificationFilter string[]

LogsTailLogs()

Get last 100 logs from the stream

resp, _, err := client.LogsAPI.LogsTailLogs(ctx).Execute()
if err != nil {
// handle error
}
// resp is LogsTailResponse

Parameters

This endpoint does not need any parameter.

Numbers

NumbersList()

List active phone numbers registered for the account, including voice agent binding state.

resp, _, err := client.NumbersAPI.NumbersList(ctx).Execute()
if err != nil {
// handle error
}
// resp is ListPhoneNumbersResponse

Parameters

This endpoint does not need any parameter.

NumbersListReleased()

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.

resp, _, err := client.NumbersAPI.NumbersListReleased(ctx).Execute()
if err != nil {
// handle error
}
// resp is ListReleasedPhoneNumbersResponse

Parameters

This endpoint does not need any parameter.

NumbersOrderNumber()

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).

orderPhoneNumberRequest := *pingram.NewOrderPhoneNumberRequest("PhoneNumber_example") // OrderPhoneNumberRequest
resp, _, err := client.NumbersAPI.NumbersOrderNumber(ctx).OrderPhoneNumberRequest(orderPhoneNumberRequest).Execute()
if err != nil {
// handle error
}
// resp is OrderPhoneNumberResponse

Parameters

Name Type Description Notes

Request Body Properties

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

NumbersReleaseNumber()

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

phoneNumber := // E.164 phone number to release
resp, _, err := client.NumbersAPI.NumbersReleaseNumber(ctx, phoneNumber).Execute()
if err != nil {
// handle error
}
// resp is ReleasePhoneNumberResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
phoneNumber string E.164 phone number to release
Name Type Description Notes
———–– ———–– ———–– ———––

NumbersSearchAvailable()

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

countryCode := "countryCode_example" // string
features := "features_example" // string (optional)
areaCode := "areaCode_example" // string (optional)
limit := float32(8.14) // float32 (optional)
resp, _, err := client.NumbersAPI.NumbersSearchAvailable(ctx).CountryCode(countryCode).Features(features).AreaCode(areaCode).Limit(limit).Execute()
if err != nil {
// handle error
}
// resp is SearchAvailablePhoneNumbersResponse

Parameters

Name Type Description Notes
countryCode string ISO 3166-1 alpha-2 country code (e.g., US, CA)
features string Comma-separated
areaCode string National destination / area code filter
limit float32 Max results (default 10, max 50)

Profile

ProfileAcceptInvite()

Accept a team invitation using a token

acceptInviteRequest := *pingram.NewAcceptInviteRequest("Token_example") // AcceptInviteRequest
resp, _, err := client.ProfileAPI.ProfileAcceptInvite(ctx).AcceptInviteRequest(acceptInviteRequest).Execute()
if err != nil {
// handle error
}
// resp is AcceptInviteResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
token string (required)

ProfileChangeEmail()

Change the email address of the authenticated user

changeEmailRequest := *pingram.NewChangeEmailRequest("NewEmail_example") // ChangeEmailRequest
resp, _, err := client.ProfileAPI.ProfileChangeEmail(ctx).ChangeEmailRequest(changeEmailRequest).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
newEmail string (required)

ProfileDeleteAccount()

Permanently delete the authenticated user’s account

deleteAccountRequest := *pingram.NewDeleteAccountRequest() // DeleteAccountRequest
resp, _, err := client.ProfileAPI.ProfileDeleteAccount(ctx).DeleteAccountRequest(deleteAccountRequest).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
reason string

ProfileDisableMfa()

Disable MFA for the authenticated user

type_ := // MFA type (e.g. SOFTWARE_TOKEN_MFA)
resp, _, err := client.ProfileAPI.ProfileDisableMfa(ctx, type_).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
type_ string MFA type (e.g. SOFTWARE_TOKEN_MFA)
Name Type Description Notes
———–– ———–– ———–– ———––

ProfileGetMfaStatus()

Get MFA status for the authenticated user

resp, _, err := client.ProfileAPI.ProfileGetMfaStatus(ctx).Execute()
if err != nil {
// handle error
}
// resp is MFAStatusResponse

Parameters

This endpoint does not need any parameter.

ProfileSetupMfa()

Start TOTP MFA setup and return QR code data

mFASetupRequest := *pingram.NewMFASetupRequest("Type_example") // MFASetupRequest
resp, _, err := client.ProfileAPI.ProfileSetupMfa(ctx).MFASetupRequest(mFASetupRequest).Execute()
if err != nil {
// handle error
}
// resp is MFASetupResponse

Parameters

Name Type Description Notes

Request Body Properties

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

ProfileVerifyMfa()

Verify TOTP code and enable MFA

mFAVerifyRequest := *pingram.NewMFAVerifyRequest("Type_example", "Code_example", "Session_example") // MFAVerifyRequest
resp, _, err := client.ProfileAPI.ProfileVerifyMfa(ctx).MFAVerifyRequest(mFAVerifyRequest).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes

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)

Registrations

RegistrationsCreateUs10dlcBrand()

Create a new 10DLC brand registration. Sets brandStatus to pending_review; Pingram handles carrier submission after review.

tenDlcBrandCreateRequest := *pingram.NewTenDlcBrandCreateRequest("ScenarioId_example", "BusinessType_example", "DisplayName_example", "Website_example", "Country_example", "Street_example", "City_example", "State_example", "PostalCode_example", "ComplianceContactEmail_example", "ComplianceContactPhone_example") // TenDlcBrandCreateRequest
resp, _, err := client.RegistrationsAPI.RegistrationsCreateUs10dlcBrand(ctx).TenDlcBrandCreateRequest(tenDlcBrandCreateRequest).Execute()
if err != nil {
// handle error
}
// resp is TenDlcBrandRegistration

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
scenarioId “own_brand” | “client_brand” (required) Who the 10DLC brand is registered for. - own_brand: personal or company project - client_brand: agency or contractor
businessType “PRIVATE_PROFIT” | “SOLE_PROPRIETOR” | “PUBLIC_PROFIT” | “NON_PROFIT” | “GOVERNMENT” (required) Legal entity type for a 10DLC brand. - PRIVATE_PROFIT: private for-profit (LLC, corp, etc.) - SOLE_PROPRIETOR: sole proprietorship - PUBLIC_PROFIT: publicly traded for-profit - NON_PROFIT: non-profit - GOVERNMENT: government
legalName string Official registered legal business name. For SOLE_PROPRIETOR, optional DBA or trade name (defaults to firstName and lastName).
displayName string (required) Public brand name shown to recipients and carriers. Use the name customers recognize (your DBA or trade name). For companies with no DBA, use the same value as legalName. For SOLE_PROPRIETOR, this is the brand you send as — not the individual’s legal name (set firstName and lastName for that). If the sole proprietor has no DBA, use first and last name.
firstName string Legal first name of the sole proprietor. Required when businessType is SOLE_PROPRIETOR.
lastName string Legal last name of the sole proprietor. Required when businessType is SOLE_PROPRIETOR.
taxId string For US companies (country US): 9-digit EIN (Employer Identification Number). For Canada (country CA): 9-digit BN (Business Number). For other countries: national business tax identifier. Required except when businessType is SOLE_PROPRIETOR.
website string (required) Public website for the brand. Include a scheme (https://) or a domain; https:// is prepended when omitted. Carriers expect a working site with privacy policy and terms.
country string (required) ISO 3166-1 alpha-2 country of incorporation (for example US or CA).
street string (required) Street address that matches official tax registration.
city string (required) City that matches official tax registration.
state string (required) State (US) or province (CA) that matches official tax registration.
postalCode string (required) ZIP code (US) or postal code (CA) that matches official tax registration.
complianceContactEmail string (required) Email for the 10DLC compliance contact. Used for carrier and registration follow-up.
complianceContactPhone string (required) Phone number for the 10DLC compliance contact. E.164 preferred; national numbers are normalized using country.

RegistrationsGetUs10dlcBrand()

Get the 10DLC brand registration for the authenticated account. Returns null when no registration exists yet.

resp, _, err := client.RegistrationsAPI.RegistrationsGetUs10dlcBrand(ctx).Execute()
if err != nil {
// handle error
}
// resp is TenDlcBrandRegistration

Parameters

This endpoint does not need any parameter.

RegistrationsGetUs10dlcCampaign()

Get the 10DLC campaign registration for the authenticated account. Returns null when no brand registration exists yet.

resp, _, err := client.RegistrationsAPI.RegistrationsGetUs10dlcCampaign(ctx).Execute()
if err != nil {
// handle error
}
// resp is TenDlcCampaignRegistration

Parameters

This endpoint does not need any parameter.

RegistrationsUpdateUs10dlcBrand()

Update an existing 10DLC brand registration. Business fields are editable before carrier submission; workflow status is managed by Pingram.

tenDlcBrandUpdateRequest := *pingram.NewTenDlcBrandUpdateRequest() // TenDlcBrandUpdateRequest
resp, _, err := client.RegistrationsAPI.RegistrationsUpdateUs10dlcBrand(ctx).TenDlcBrandUpdateRequest(tenDlcBrandUpdateRequest).Execute()
if err != nil {
// handle error
}
// resp is TenDlcBrandRegistration

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
scenarioId “own_brand” | “client_brand” Who the 10DLC brand is registered for. - own_brand: personal or company project - client_brand: agency or contractor
businessType “PRIVATE_PROFIT” | “SOLE_PROPRIETOR” | “PUBLIC_PROFIT” | “NON_PROFIT” | “GOVERNMENT” Legal entity type for a 10DLC brand. - PRIVATE_PROFIT: private for-profit (LLC, corp, etc.) - SOLE_PROPRIETOR: sole proprietorship - PUBLIC_PROFIT: publicly traded for-profit - NON_PROFIT: non-profit - GOVERNMENT: government
legalName string Official registered legal business name. For SOLE_PROPRIETOR, optional DBA or trade name (defaults to firstName and lastName).
displayName string Public brand name shown to recipients and carriers. Use the name customers recognize (your DBA or trade name). For SOLE_PROPRIETOR, this is the brand you send as — not the individual’s legal name. Omit to keep the existing value. If you change legalName and omit displayName, displayName is reset to the new legalName.
firstName string Legal first name of the sole proprietor. Required when businessType is SOLE_PROPRIETOR.
lastName string Legal last name of the sole proprietor. Required when businessType is SOLE_PROPRIETOR.
taxId string For US companies (country US): 9-digit EIN (Employer Identification Number). For Canada (country CA): 9-digit BN (Business Number). For other countries: national business tax identifier. Required except when businessType is SOLE_PROPRIETOR.
website string Public website for the brand. Include a scheme (https://) or a domain; https:// is prepended when omitted. Carriers expect a working site with privacy policy and terms.
country string ISO 3166-1 alpha-2 country of incorporation (for example US or CA).
street string Street address that matches official tax registration.
city string City that matches official tax registration.
state string State (US) or province (CA) that matches official tax registration.
postalCode string ZIP code (US) or postal code (CA) that matches official tax registration.
complianceContactEmail string Email for the 10DLC compliance contact. Used for carrier and registration follow-up.
complianceContactPhone string Phone number for the 10DLC compliance contact. E.164 preferred; national numbers are normalized using country.

RegistrationsUpdateUs10dlcCampaign()

Update an existing 10DLC campaign registration. Campaign fields are editable before carrier submission; workflow status is managed by Pingram.

tenDlcCampaignUpdateRequest := *pingram.NewTenDlcCampaignUpdateRequest() // TenDlcCampaignUpdateRequest
resp, _, err := client.RegistrationsAPI.RegistrationsUpdateUs10dlcCampaign(ctx).TenDlcCampaignUpdateRequest(tenDlcCampaignUpdateRequest).Execute()
if err != nil {
// handle error
}
// resp is TenDlcCampaignRegistration

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
campaignDescription string Summary of what this campaign sends and why, including audience and typical message content. Required before carrier submission.
campaignSample1 string Example SMS that represents actual campaign traffic. Required before carrier submission. Should match the use case and typically identify the brand and include STOP/HELP language.
campaignSample2 string Second example SMS. Required before carrier submission. Required for MARKETING and MIXED use cases.
campaignSample3 string Optional third example SMS.
campaignSample4 string Optional fourth example SMS.
campaignMessageFlow string How recipients opt in (for example website form, checkout, or keyword). Describe the call-to-action and where consent is collected. Required before carrier submission.
campaignOptinKeywords string Extra opt-in keywords as a comma-separated list. START is always included.
campaignOptinMessage string Auto-reply sent when a recipient opts in. Required before carrier submission. Should confirm the subscription, mention message frequency, and include STOP and HELP instructions.
campaignOptoutKeywords string Extra opt-out keywords as a comma-separated list. STOP is always included.
campaignOptoutMessage string Auto-reply sent when a recipient opts out. Required before carrier submission. Should confirm they will receive no further messages.
campaignHelpKeywords string Extra help keywords as a comma-separated list. HELP is always included.
campaignHelpMessage string Auto-reply sent when a recipient texts a help keyword. Required before carrier submission. Should include a support contact (email and/or phone).
campaignEmbeddedLink boolean Whether campaign messages include URLs.
campaignEmbeddedLinkUrl string Sample URL that appears in messages. Provide when campaignEmbeddedLink is true.
campaignEmbeddedPhone boolean Whether campaign messages include phone numbers.
campaignAgeGated boolean Whether campaign content is age-restricted (18+).
campaignDirectLending boolean Whether the campaign relates to direct lending or loan products.
campaignPrivacyPolicyLink string Public URL of the privacy policy that covers this SMS program.
campaignTermsAndConditionsLink string Public URL of the terms and conditions that cover this SMS program.
campaignUsecase string 10DLC campaign use case submitted to carriers. Required before carrier submission. One of 2FA, ACCOUNT_NOTIFICATION, CUSTOMER_CARE, DELIVERY_NOTIFICATION, FRAUD_ALERT, MARKETING, MIXED, POLLING_VOTING, PUBLIC_SERVICE_ANNOUNCEMENT, or SECURITY_ALERT. For MIXED, append comma-separated sub-use cases after MIXED (sub-use cases cannot include MIXED), for example MIXED,2FA,ACCOUNT_NOTIFICATION.

Sender

SenderDeleteSchedule()

Delete (unschedule) an already scheduled notification

trackingId := // The tracking ID of the scheduled notification
resp, _, err := client.SenderAPI.SenderDeleteSchedule(ctx, trackingId).Execute()
if err != nil {
// handle error
}
// resp is MessageResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
trackingId string The tracking ID of the scheduled notification
Name Type Description Notes
———–– ———–– ———–– ———––

SenderUpdateSchedule()

Update the body or schedule of an already scheduled notification.

trackingId := // The tracking ID of the scheduled notification
senderPostBody := *pingram.NewSenderPostBody() // SenderPostBody
resp, _, err := client.SenderAPI.SenderUpdateSchedule(ctx, trackingId).SenderPostBody(senderPostBody).Execute()
if err != nil {
// handle error
}
// resp is MessageResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
trackingId string The tracking ID of the scheduled notification
Name Type Description Notes
———–– ———–– ———–– ———––

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” | “VOICE” | “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.
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.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.

Sms

SmsSend()

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

sendSmsRequest := *pingram.NewSendSmsRequest("Type_example", "To_example") // SendSmsRequest
resp, _, err := client.SmsAPI.SmsSend(ctx).SendSmsRequest(sendSmsRequest).Execute()
if err != nil {
// handle error
}
// resp is SendSmsResponse

Parameters

Name Type Description Notes

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.

Templates

TemplatesCreateTemplate()

Create a new template for a notification

notificationId := // Notification ID
channel := // Channel type
templatePostRequest := *pingram.NewTemplatePostRequest("TemplateId_example") // TemplatePostRequest
resp, _, err := client.TemplatesAPI.TemplatesCreateTemplate(ctx, notificationId, channel).TemplatePostRequest(templatePostRequest).Execute()
if err != nil {
// handle error
}
// resp is Template

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string Notification ID
channel string Channel type
Name Type Description Notes
———–– ———–– ———–– ———––

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.

TemplatesDeleteTemplate()

Delete a template

notificationId := // Notification ID
channel := // Channel type
templateId := // Template ID
_, err := client.TemplatesAPI.TemplatesDeleteTemplate(ctx, notificationId, channel, templateId).Execute()
if err != nil {
// handle error
}

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string Notification ID
channel string Channel type
templateId string Template ID
Name Type Description Notes
———–– ———–– ———–– ———––

TemplatesGetTemplate()

Get a single template by ID

notificationId := // Notification ID
channel := // Channel type
templateId := // Template ID
resp, _, err := client.TemplatesAPI.TemplatesGetTemplate(ctx, notificationId, channel, templateId).Execute()
if err != nil {
// handle error
}
// resp is GetTemplatesResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string Notification ID
channel string Channel type
templateId string Template ID
Name Type Description Notes
———–– ———–– ———–– ———––

TemplatesListTemplates()

List all templates for a notification and channel

notificationId := // Notification ID
channel := // Channel type
resp, _, err := client.TemplatesAPI.TemplatesListTemplates(ctx, notificationId, channel).Execute()
if err != nil {
// handle error
}
// resp is []GetTemplatesListResponseInner

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string Notification ID
channel string Channel type
Name Type Description Notes
———–– ———–– ———–– ———––

TemplatesSetDefaultTemplate()

Set a template as default for specific delivery modes

notificationId := // Notification ID
channel := // Channel type
setDefaultTemplateRequest := *pingram.NewSetDefaultTemplateRequest("TemplateId_example", []string{"Modes_example"}) // SetDefaultTemplateRequest
resp, _, err := client.TemplatesAPI.TemplatesSetDefaultTemplate(ctx, notificationId, channel).SetDefaultTemplateRequest(setDefaultTemplateRequest).Execute()
if err != nil {
// handle error
}
// resp is Template

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string Notification ID
channel string Channel type
Name Type Description Notes
———–– ———–– ———–– ———––

Request Body Properties

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

TemplatesUpdateTemplate()

Update a template’s properties

notificationId := // Notification ID
channel := // Channel type
templateId := // Template ID
templatePatchRequest := *pingram.NewTemplatePatchRequest() // TemplatePatchRequest
resp, _, err := client.TemplatesAPI.TemplatesUpdateTemplate(ctx, notificationId, channel, templateId).TemplatePatchRequest(templatePatchRequest).Execute()
if err != nil {
// handle error
}
// resp is Template

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string Notification ID
channel string Channel type
templateId string Template ID
Name Type Description Notes
———–– ———–– ———–– ———––

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.

Types

TypesCreateNotificationType()

Create a new notification

notificationCreateRequest := *pingram.NewNotificationCreateRequest("NotificationId_example", "Title_example", []string{"Channels_example"}) // NotificationCreateRequest
resp, _, err := client.TypesAPI.TypesCreateNotificationType(ctx).NotificationCreateRequest(notificationCreateRequest).Execute()
if err != nil {
// handle error
}
// resp is Notification

Parameters

Name Type Description Notes

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.VOICE object
options.VOICE.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.VOICE.off object
options.VOICE.off.enabled boolean (required)
options.VOICE.instant object
options.VOICE.instant.enabled boolean (required)
options.VOICE.hourly object
options.VOICE.hourly.enabled boolean (required)
options.VOICE.daily object
options.VOICE.daily.enabled boolean (required)
options.VOICE.daily.hour string
options.VOICE.weekly object
options.VOICE.weekly.enabled boolean (required)
options.VOICE.weekly.hour string
options.VOICE.weekly.day string
options.VOICE.monthly object
options.VOICE.monthly.enabled boolean (required)
options.VOICE.monthly.hour string
options.VOICE.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”

TypesDeleteNotificationType()

Delete a notification

notificationId := // The notification ID
_, err := client.TypesAPI.TypesDeleteNotificationType(ctx, notificationId).Execute()
if err != nil {
// handle error
}

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string The notification ID
Name Type Description Notes
———–– ———–– ———–– ———––

TypesGetNotificationType()

Get a specific notification by ID

notificationId := // The notification ID
resp, _, err := client.TypesAPI.TypesGetNotificationType(ctx, notificationId).Execute()
if err != nil {
// handle error
}
// resp is []GetNotificationsResponseInner

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string The notification ID
Name Type Description Notes
———–– ———–– ———–– ———––

TypesListNotificationTypes()

Get all notifications for an account with their templates

resp, _, err := client.TypesAPI.TypesListNotificationTypes(ctx).Execute()
if err != nil {
// handle error
}
// resp is []GetNotificationsResponseInner

Parameters

This endpoint does not need any parameter.

TypesUpdateNotificationType()

Update a notification’s settings

notificationId := // The notification ID
notificationPatchRequest := *pingram.NewNotificationPatchRequest() // NotificationPatchRequest
resp, _, err := client.TypesAPI.TypesUpdateNotificationType(ctx, notificationId).NotificationPatchRequest(notificationPatchRequest).Execute()
if err != nil {
// handle error
}
// resp is Notification

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
notificationId string The notification ID
Name Type Description Notes
———–– ———–– ———–– ———––

Request Body Properties

Name Type Description
title string
channels (“EMAIL” | “INAPP_WEB” | “SMS” | “CALL” | “VOICE” | “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.VOICE object
options.VOICE.defaultDeliveryOption “off” | “instant” | “hourly” | “daily” | “weekly” | “monthly” (required)
options.VOICE.off object
options.VOICE.off.enabled boolean (required)
options.VOICE.instant object
options.VOICE.instant.enabled boolean (required)
options.VOICE.hourly object
options.VOICE.hourly.enabled boolean (required)
options.VOICE.daily object
options.VOICE.daily.enabled boolean (required)
options.VOICE.daily.hour string
options.VOICE.weekly object
options.VOICE.weekly.enabled boolean (required)
options.VOICE.weekly.hour string
options.VOICE.weekly.day string
options.VOICE.monthly object
options.VOICE.monthly.enabled boolean (required)
options.VOICE.monthly.hour string
options.VOICE.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”

User

UserGetAccountMetadata()

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

resp, _, err := client.UserAPI.UserGetAccountMetadata(ctx).Execute()
if err != nil {
// handle error
}
// resp is GetAccountMetadataResponse

Parameters

This endpoint does not need any parameter.

UserGetInAppNotifications()

Get in-app notifications for a user

before := "before_example" // string (optional)
count := float32(8.14) // float32 (optional)
resp, _, err := client.UserAPI.UserGetInAppNotifications(ctx).Before(before).Count(count).Execute()
if err != nil {
// handle error
}
// resp is GetInappNotificationsResponse

Parameters

Name Type Description Notes
before string Timestamp or ISO date to fetch notifications before
count float32 Number of notifications to return (default 10)

UserGetInAppUnreadCount()

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

resp, _, err := client.UserAPI.UserGetInAppUnreadCount(ctx).Execute()
if err != nil {
// handle error
}
// resp is InappUnreadCountResponse

Parameters

This endpoint does not need any parameter.

UserGetUser()

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

userId := // User ID
resp, _, err := client.UserAPI.UserGetUser(ctx, userId).Execute()
if err != nil {
// handle error
}
// resp is User

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
userId string User ID
Name Type Description Notes
———–– ———–– ———–– ———––

UserIdentify()

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

userId := // User ID
postUserRequest := *pingram.NewPostUserRequest() // PostUserRequest
resp, _, err := client.UserAPI.UserIdentify(ctx, userId).PostUserRequest(postUserRequest).Execute()
if err != nil {
// handle error
}
// resp is User

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
userId string User ID
Name Type Description Notes
———–– ———–– ———–– ———––

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[]

UserMarkInAppNotificationsAsSeen()

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

inAppNotificationUnreadClearRequest := *pingram.NewInAppNotificationUnreadClearRequest() // InAppNotificationUnreadClearRequest
resp, _, err := client.UserAPI.UserMarkInAppNotificationsAsSeen(ctx).InAppNotificationUnreadClearRequest(inAppNotificationUnreadClearRequest).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
notificationId string
trackingId string

UserUpdateInAppNotificationStatus()

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

inAppNotificationPatchRequest := *pingram.NewInAppNotificationPatchRequest([]string{"TrackingIds_example"}) // InAppNotificationPatchRequest
resp, _, err := client.UserAPI.UserUpdateInAppNotificationStatus(ctx).InAppNotificationPatchRequest(inAppNotificationPatchRequest).Execute()
if err != nil {
// handle error
}
// resp is SuccessResponse

Parameters

Name Type Description Notes

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)

Users

UsersDeleteUser()

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

userId := // User ID
envId := "envId_example" // string (optional)
resp, _, err := client.UsersAPI.UsersDeleteUser(ctx, userId).EnvId(envId).Execute()
if err != nil {
// handle error
}
// resp is DeleteUserResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
userId string User ID
Name Type Description Notes
———–– ———–– ———–– ———––

envId | string | Environment ID (required when using JWT auth) |

UsersListUsers()

Get all users for an environment with pagination support

limit := float32(8.14) // float32
nextToken := "nextToken_example" // string
envId := "envId_example" // string (optional)
resp, _, err := client.UsersAPI.UsersListUsers(ctx).Limit(limit).NextToken(nextToken).EnvId(envId).Execute()
if err != nil {
// handle error
}
// resp is GetUsersResponse

Parameters

Name Type Description Notes
limit float32 Maximum number of users to return (default
nextToken string Pagination token for next page
envId string Environment ID (required when using JWT auth)

UsersRemoveUserFromSuppression()

Remove user suppression status for a specific channel

userId := // User ID
channel := // Channel type (EMAIL)
envId := "envId_example" // string (optional)
resp, _, err := client.UsersAPI.UsersRemoveUserFromSuppression(ctx, userId, channel).EnvId(envId).Execute()
if err != nil {
// handle error
}
// resp is UserSuppressionDeleteResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
userId string User ID
channel string Channel type (EMAIL)
Name Type Description Notes
———–– ———–– ———–– ———––

envId | string | Environment ID (required when using JWT auth) |

Voice

VoiceBindNumber()

Bind a phone number to a deployed agent for inbound routing

agentId := // Agent id
bindNumberRequest := *pingram.NewBindNumberRequest("PhoneNumber_example") // BindNumberRequest
resp, _, err := client.VoiceAPI.VoiceBindNumber(ctx, agentId).BindNumberRequest(bindNumberRequest).Execute()
if err != nil {
// handle error
}
// resp is BindNumberResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
agentId string Agent id
Name Type Description Notes
———–– ———–– ———–– ———––

Request Body Properties

Name Type Description
phoneNumber string (required)

VoiceCall()

Place an outbound call with an inline agent spec (ephemeral)

voiceCallRequest := *pingram.NewVoiceCallRequest("PhoneNumber_example", *pingram.NewBindNumberResponseAgentSpec("Name_example", "Instructions_example", *pingram.NewBindNumberResponseAgentSpecInbound("FirstAction_example", "Greeting_example"), *pingram.NewBindNumberResponseAgentSpecOutbound("FirstAction_example", "Opener_example", "VoicemailAction_example"), pingram.BindNumberResponse_agent_spec_model{Chained: pingram.NewChained("Mode_example", "Llm_example", "Stt_example", "Tts_example", "VoiceId_example", "Language_example", float32(123), float32(123), float32(123))}, []pingram.BindNumberResponseAgentSpecToolsInner{pingram.BindNumberResponse_agent_spec_tools_inner{Custom: pingram.NewCustom("Type_example", "Name_example", "Description_example", map[string]interface{}{"key": interface{}(123)})}}, []pingram.BindNumberResponseAgentSpecVariablesInner{*pingram.NewBindNumberResponseAgentSpecVariablesInner("Name_example")}, *pingram.NewBindNumberResponseAgentSpecConversation("TurnDetection_example", float32(123), false, float32(123), float32(123), float32(123)), *pingram.NewBindNumberResponseAgentSpecCompliance(false))) // VoiceCallRequest
resp, _, err := client.VoiceAPI.VoiceCall(ctx).VoiceCallRequest(voiceCallRequest).Execute()
if err != nil {
// handle error
}
// resp is VoiceCallResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
phoneNumber string (required)
spec object (required)
spec.name string (required)
spec.instructions string (required)
spec.inbound object (required)
spec.inbound.firstAction “speak” | “wait” (required)
spec.inbound.greeting string (required)
spec.outbound object (required)
spec.outbound.firstAction “speak” | “wait” (required)
spec.outbound.opener string (required)
spec.outbound.voicemailAction “hangup” | “message” | “continue” (required)
spec.outbound.voicemailMessage string
spec.model object | object (required) Speech pipeline. Prefer s2s mode (e.g. openai:gpt-realtime with voice marin).
spec.model.mode “chained” (required)
spec.model.llm string (required) ‘provider:model’, e.g. ‘openai:gpt-4o’
spec.model.stt string (required) ‘provider:model’, e.g. ‘deepgram:nova-3’
spec.model.tts string (required) ‘provider:model’, e.g. ‘elevenlabs:eleven_multilingual_v2’
spec.model.voiceId string (required) Provider-native voice id for the selected TTS provider (e.g. ElevenLabs UUID, OpenAI alloy).
spec.model.language string (required)
spec.model.speechSpeed number (required)
spec.model.temperature number (required)
spec.model.maxTokens number (required)
spec.tools (object | object | object | object | object)[] (required)
spec.variables object[] (required)
spec.variables[].name string (required)
spec.variables[].description string
spec.variables[].defaultValue string
spec.conversation object (required)
spec.conversation.turnDetection “semantic” | “vad” (required)
spec.conversation.minEndOfTurnSilenceMs number (required)
spec.conversation.allowInterruptions boolean (required)
spec.conversation.minInterruptionDurationMs number (required)
spec.conversation.silenceTimeoutSeconds number (required)
spec.conversation.maxCallLengthSeconds number (required)
spec.conversation.agentCanEndCall boolean When true (default), the agent may invoke the built-in end_call action.
spec.compliance object (required)
spec.compliance.recordingEnabled boolean (required)
variables Record<string, string> Optional per-call {{variable}} overrides.
agentId string Saved agent id when testing from the dashboard playground.

VoiceCreateAgent()

Deploy a voice agent (persist spec for production routing)

createVoiceAgentRequest := *pingram.NewCreateVoiceAgentRequest(*pingram.NewBindNumberResponseAgentSpec("Name_example", "Instructions_example", *pingram.NewBindNumberResponseAgentSpecInbound("FirstAction_example", "Greeting_example"), *pingram.NewBindNumberResponseAgentSpecOutbound("FirstAction_example", "Opener_example", "VoicemailAction_example"), pingram.BindNumberResponse_agent_spec_model{Chained: pingram.NewChained("Mode_example", "Llm_example", "Stt_example", "Tts_example", "VoiceId_example", "Language_example", float32(123), float32(123), float32(123))}, []pingram.BindNumberResponseAgentSpecToolsInner{pingram.BindNumberResponse_agent_spec_tools_inner{Custom: pingram.NewCustom("Type_example", "Name_example", "Description_example", map[string]interface{}{"key": interface{}(123)})}}, []pingram.BindNumberResponseAgentSpecVariablesInner{*pingram.NewBindNumberResponseAgentSpecVariablesInner("Name_example")}, *pingram.NewBindNumberResponseAgentSpecConversation("TurnDetection_example", float32(123), false, float32(123), float32(123), float32(123)), *pingram.NewBindNumberResponseAgentSpecCompliance(false))) // CreateVoiceAgentRequest
resp, _, err := client.VoiceAPI.VoiceCreateAgent(ctx).CreateVoiceAgentRequest(createVoiceAgentRequest).Execute()
if err != nil {
// handle error
}
// resp is CreateVoiceAgentResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
spec object (required)
spec.name string (required)
spec.instructions string (required)
spec.inbound object (required)
spec.inbound.firstAction “speak” | “wait” (required)
spec.inbound.greeting string (required)
spec.outbound object (required)
spec.outbound.firstAction “speak” | “wait” (required)
spec.outbound.opener string (required)
spec.outbound.voicemailAction “hangup” | “message” | “continue” (required)
spec.outbound.voicemailMessage string
spec.model object | object (required) Speech pipeline. Prefer s2s mode (e.g. openai:gpt-realtime with voice marin).
spec.model.mode “chained” (required)
spec.model.llm string (required) ‘provider:model’, e.g. ‘openai:gpt-4o’
spec.model.stt string (required) ‘provider:model’, e.g. ‘deepgram:nova-3’
spec.model.tts string (required) ‘provider:model’, e.g. ‘elevenlabs:eleven_multilingual_v2’
spec.model.voiceId string (required) Provider-native voice id for the selected TTS provider (e.g. ElevenLabs UUID, OpenAI alloy).
spec.model.language string (required)
spec.model.speechSpeed number (required)
spec.model.temperature number (required)
spec.model.maxTokens number (required)
spec.tools (object | object | object | object | object)[] (required)
spec.variables object[] (required)
spec.variables[].name string (required)
spec.variables[].description string
spec.variables[].defaultValue string
spec.conversation object (required)
spec.conversation.turnDetection “semantic” | “vad” (required)
spec.conversation.minEndOfTurnSilenceMs number (required)
spec.conversation.allowInterruptions boolean (required)
spec.conversation.minInterruptionDurationMs number (required)
spec.conversation.silenceTimeoutSeconds number (required)
spec.conversation.maxCallLengthSeconds number (required)
spec.conversation.agentCanEndCall boolean When true (default), the agent may invoke the built-in end_call action.
spec.compliance object (required)
spec.compliance.recordingEnabled boolean (required)

VoiceCreateBrowserCall()

Place an ephemeral browser playground call with an inline agent spec

voiceBrowserCallRequest := *pingram.NewVoiceBrowserCallRequest(*pingram.NewBindNumberResponseAgentSpec("Name_example", "Instructions_example", *pingram.NewBindNumberResponseAgentSpecInbound("FirstAction_example", "Greeting_example"), *pingram.NewBindNumberResponseAgentSpecOutbound("FirstAction_example", "Opener_example", "VoicemailAction_example"), pingram.BindNumberResponse_agent_spec_model{Chained: pingram.NewChained("Mode_example", "Llm_example", "Stt_example", "Tts_example", "VoiceId_example", "Language_example", float32(123), float32(123), float32(123))}, []pingram.BindNumberResponseAgentSpecToolsInner{pingram.BindNumberResponse_agent_spec_tools_inner{Custom: pingram.NewCustom("Type_example", "Name_example", "Description_example", map[string]interface{}{"key": interface{}(123)})}}, []pingram.BindNumberResponseAgentSpecVariablesInner{*pingram.NewBindNumberResponseAgentSpecVariablesInner("Name_example")}, *pingram.NewBindNumberResponseAgentSpecConversation("TurnDetection_example", float32(123), false, float32(123), float32(123), float32(123)), *pingram.NewBindNumberResponseAgentSpecCompliance(false))) // VoiceBrowserCallRequest
resp, _, err := client.VoiceAPI.VoiceCreateBrowserCall(ctx).VoiceBrowserCallRequest(voiceBrowserCallRequest).Execute()
if err != nil {
// handle error
}
// resp is VoiceBrowserCallResponse

Parameters

Name Type Description Notes

Request Body Properties

Name Type Description
spec object (required)
spec.name string (required)
spec.instructions string (required)
spec.inbound object (required)
spec.inbound.firstAction “speak” | “wait” (required)
spec.inbound.greeting string (required)
spec.outbound object (required)
spec.outbound.firstAction “speak” | “wait” (required)
spec.outbound.opener string (required)
spec.outbound.voicemailAction “hangup” | “message” | “continue” (required)
spec.outbound.voicemailMessage string
spec.model object | object (required) Speech pipeline. Prefer s2s mode (e.g. openai:gpt-realtime with voice marin).
spec.model.mode “chained” (required)
spec.model.llm string (required) ‘provider:model’, e.g. ‘openai:gpt-4o’
spec.model.stt string (required) ‘provider:model’, e.g. ‘deepgram:nova-3’
spec.model.tts string (required) ‘provider:model’, e.g. ‘elevenlabs:eleven_multilingual_v2’
spec.model.voiceId string (required) Provider-native voice id for the selected TTS provider (e.g. ElevenLabs UUID, OpenAI alloy).
spec.model.language string (required)
spec.model.speechSpeed number (required)
spec.model.temperature number (required)
spec.model.maxTokens number (required)
spec.tools (object | object | object | object | object)[] (required)
spec.variables object[] (required)
spec.variables[].name string (required)
spec.variables[].description string
spec.variables[].defaultValue string
spec.conversation object (required)
spec.conversation.turnDetection “semantic” | “vad” (required)
spec.conversation.minEndOfTurnSilenceMs number (required)
spec.conversation.allowInterruptions boolean (required)
spec.conversation.minInterruptionDurationMs number (required)
spec.conversation.silenceTimeoutSeconds number (required)
spec.conversation.maxCallLengthSeconds number (required)
spec.conversation.agentCanEndCall boolean When true (default), the agent may invoke the built-in end_call action.
spec.compliance object (required)
spec.compliance.recordingEnabled boolean (required)
variables Record<string, string> Optional per-call {{variable}} overrides for browser playground.
agentId string Saved agent id when testing from the dashboard playground.

VoiceDeleteAgent()

Remove a deployed voice agent and unbind its numbers

agentId := // Agent id
resp, _, err := client.VoiceAPI.VoiceDeleteAgent(ctx, agentId).Execute()
if err != nil {
// handle error
}
// resp is DeleteVoiceAgentResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
agentId string Agent id
Name Type Description Notes
———–– ———–– ———–– ———––

VoiceGetAgent()

Get a deployed voice agent

agentId := // Agent id
resp, _, err := client.VoiceAPI.VoiceGetAgent(ctx, agentId).Execute()
if err != nil {
// handle error
}
// resp is GetVoiceAgentResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
agentId string Agent id
Name Type Description Notes
———–– ———–– ———–– ———––

VoiceGetCall()

Get a call with transcript timeline and recording playback URL

trackingId := // Call tracking id
resp, _, err := client.VoiceAPI.VoiceGetCall(ctx, trackingId).Execute()
if err != nil {
// handle error
}
// resp is GetVoiceCallResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
trackingId string Call tracking id
Name Type Description Notes
———–– ———–– ———–– ———––

VoiceListAgents()

List deployed voice agents for the account

resp, _, err := client.VoiceAPI.VoiceListAgents(ctx).Execute()
if err != nil {
// handle error
}
// resp is ListVoiceAgentsResponse

Parameters

This endpoint does not need any parameter.

VoiceListCalls()

List recent calls newest-first (30-day retention)

agentId := "agentId_example" // string (optional)
limit := float32(8.14) // float32 (optional)
cursor := "cursor_example" // string (optional)
resp, _, err := client.VoiceAPI.VoiceListCalls(ctx).AgentId(agentId).Limit(limit).Cursor(cursor).Execute()
if err != nil {
// handle error
}
// resp is ListVoiceCallsResponse

Parameters

Name Type Description Notes
agentId string Only calls handled by this agent
limit float32 Page size (default 25, max 100)
cursor string Pagination cursor from a previous response

VoiceUnbindNumber()

Unbind a phone number from a deployed agent

agentId := // Agent id
phoneNumber := // E.164 phone number
resp, _, err := client.VoiceAPI.VoiceUnbindNumber(ctx, agentId, phoneNumber).Execute()
if err != nil {
// handle error
}
// resp is UnbindNumberResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
agentId string Agent id
phoneNumber string E.164 phone number
Name Type Description Notes
———–– ———–– ———–– ———––

VoiceUpdateAgent()

Publish changes to a deployed voice agent

agentId := // Agent id
updateVoiceAgentRequest := *pingram.NewUpdateVoiceAgentRequest(*pingram.NewBindNumberResponseAgentSpec("Name_example", "Instructions_example", *pingram.NewBindNumberResponseAgentSpecInbound("FirstAction_example", "Greeting_example"), *pingram.NewBindNumberResponseAgentSpecOutbound("FirstAction_example", "Opener_example", "VoicemailAction_example"), pingram.BindNumberResponse_agent_spec_model{Chained: pingram.NewChained("Mode_example", "Llm_example", "Stt_example", "Tts_example", "VoiceId_example", "Language_example", float32(123), float32(123), float32(123))}, []pingram.BindNumberResponseAgentSpecToolsInner{pingram.BindNumberResponse_agent_spec_tools_inner{Custom: pingram.NewCustom("Type_example", "Name_example", "Description_example", map[string]interface{}{"key": interface{}(123)})}}, []pingram.BindNumberResponseAgentSpecVariablesInner{*pingram.NewBindNumberResponseAgentSpecVariablesInner("Name_example")}, *pingram.NewBindNumberResponseAgentSpecConversation("TurnDetection_example", float32(123), false, float32(123), float32(123), float32(123)), *pingram.NewBindNumberResponseAgentSpecCompliance(false))) // UpdateVoiceAgentRequest
resp, _, err := client.VoiceAPI.VoiceUpdateAgent(ctx, agentId).UpdateVoiceAgentRequest(updateVoiceAgentRequest).Execute()
if err != nil {
// handle error
}
// resp is UpdateVoiceAgentResponse

Parameters

Name Type Description Notes
ctx context.Context context for authentication, logging, cancellation, deadlines, tracing, etc.
agentId string Agent id
Name Type Description Notes
———–– ———–– ———–– ———––

Request Body Properties

Name Type Description
spec object (required)
spec.name string (required)
spec.instructions string (required)
spec.inbound object (required)
spec.inbound.firstAction “speak” | “wait” (required)
spec.inbound.greeting string (required)
spec.outbound object (required)
spec.outbound.firstAction “speak” | “wait” (required)
spec.outbound.opener string (required)
spec.outbound.voicemailAction “hangup” | “message” | “continue” (required)
spec.outbound.voicemailMessage string
spec.model object | object (required) Speech pipeline. Prefer s2s mode (e.g. openai:gpt-realtime with voice marin).
spec.model.mode “chained” (required)
spec.model.llm string (required) ‘provider:model’, e.g. ‘openai:gpt-4o’
spec.model.stt string (required) ‘provider:model’, e.g. ‘deepgram:nova-3’
spec.model.tts string (required) ‘provider:model’, e.g. ‘elevenlabs:eleven_multilingual_v2’
spec.model.voiceId string (required) Provider-native voice id for the selected TTS provider (e.g. ElevenLabs UUID, OpenAI alloy).
spec.model.language string (required)
spec.model.speechSpeed number (required)
spec.model.temperature number (required)
spec.model.maxTokens number (required)
spec.tools (object | object | object | object | object)[] (required)
spec.variables object[] (required)
spec.variables[].name string (required)
spec.variables[].description string
spec.variables[].defaultValue string
spec.conversation object (required)
spec.conversation.turnDetection “semantic” | “vad” (required)
spec.conversation.minEndOfTurnSilenceMs number (required)
spec.conversation.allowInterruptions boolean (required)
spec.conversation.minInterruptionDurationMs number (required)
spec.conversation.silenceTimeoutSeconds number (required)
spec.conversation.maxCallLengthSeconds number (required)
spec.conversation.agentCanEndCall boolean When true (default), the agent may invoke the built-in end_call action.
spec.compliance object (required)
spec.compliance.recordingEnabled boolean (required)