Node reference
SendGrid
SendGrid node reference - all 231 operations, the credential it needs, and a worked example.
Twilio SendGrid v3 API (Transactional messaging). 231 operations: mail send, batches and scheduled sends; transactional templates and versions; designs; marketing contacts, custom fields, lists and segments; Single Sends and marketing stats; senders and verified senders; unsubscribe groups, suppressions, bounces, blocks, spam reports and invalid emails; stats; email activity and logs; email validation; engagement quality; event webhooks, Inbound Parse and security policies; sender authentication, link branding and reverse DNS; IP management; subusers.
Credential: SendGrid API key - see Credentials.
Each operation below lists the scope it needs. Scopes are ticked on the API key when it is created at Settings > API Keys. SendGrid offers three key kinds and only one of them is configurable: Full Access carries every scope below, Restricted Access lets you tick scopes individually, and Billing Access carries only the billing scopes and therefore 403s on every operation this node has. A key's scopes are FIXED after creation for Full and Billing keys; a Restricted key can be edited later from the same screen, which is why Restricted is the right kind for a workflow. Two failure modes are not a missing scope. A 401 is the key itself - revoked, or pasted without the SG. prefix intact. A 403 on an operation whose scope you have ticked is almost always the DATA RESIDENCY axis instead: an EU-residency account answers on api.eu.sendgrid.com, and a key issued there fails against the US host indistinguishably from a permission error - check the node's Region field before re-minting anything. Note also that Marketing Campaigns, Email Activity and Email Validation are US-host-only endpoints regardless of that field. Subuser keys are a third axis: a key minted on a subuser cannot reach the parent account's subusers.*, ips.* or whitelabel.* endpoints at all, whatever is ticked. If a run fails with a permission error, the node names the missing scope in the error - grant it and re-run; you do not need to rebuild the workflow.
| Operation | What it does | Scope |
|---|
sendEmail | Send email | mail.send |
sendWithTemplate | Send with dynamic template | mail.send |
sendTestMarketingEmail | Send test marketing email | marketing.read |
createMailBatch | Create batch ID | mail.batch.create |
getMailBatch | Validate batch ID | mail.batch.read |
| Operation | What it does | Scope |
|---|
cancelScheduledSend | Cancel or pause a scheduled send | user.scheduled_sends.create |
listScheduledSends | List cancelled / paused sends | user.scheduled_sends.read |
getScheduledSend | Get scheduled send status | user.scheduled_sends.read |
updateScheduledSend | Update scheduled send status | user.scheduled_sends.update |
deleteScheduledSend | Remove cancel / pause | user.scheduled_sends.delete |
| Operation | What it does | Scope |
|---|
createTemplate | Create template | templates.create |
listTemplates | List templates | templates.read |
getTemplate | Get template | templates.read |
updateTemplate | Rename template | templates.update |
deleteTemplate | Delete template | templates.delete |
duplicateTemplate | Duplicate template | templates.create |
| Operation | What it does | Scope |
|---|
createTemplateVersion | Create template version | templates.versions.create |
getTemplateVersion | Get template version | templates.versions.read |
updateTemplateVersion | Update template version | templates.versions.update |
deleteTemplateVersion | Delete template version | templates.versions.delete |
activateTemplateVersion | Activate template version | templates.versions.activate.create |
| Operation | What it does | Scope |
|---|
createDesign | Create design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
listDesigns | List designs | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
getDesign | Get design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
updateDesign | Update design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
deleteDesign | Delete design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
duplicateDesign | Duplicate design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
listPreBuiltDesigns | List pre-built designs | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
getPreBuiltDesign | Get pre-built design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
duplicatePreBuiltDesign | Duplicate pre-built design | (no scope of its own — the Designs API sits on the Email Marketing plane, so a key with marketing.read or Full Access covers it) |
| Operation | What it does | Scope |
|---|
upsertContact | Add / update marketing contact | marketing.read |
listContacts | List contacts (sample) | marketing.read |
getContact | Get contact by ID | marketing.read |
getContactCount | Get total contact count | marketing.read |
deleteContacts | Delete contacts | marketing.read |
batchGetContacts | Get contacts by IDs | marketing.read |
searchContacts | Search contacts (SGQL) | marketing.read |
searchContactsByEmail | Get contacts by email | marketing.read |
searchContactsByIdentifier | Get contacts by identifier | marketing.read |
deleteContactIdentifier | Delete a contact identifier | marketing.read |
exportContacts | Export contacts | marketing.read |
listContactExports | List contact exports | marketing.read |
getContactExport | Get contact export status | marketing.read |
importContacts | Import contacts (CSV) | marketing.read |
getContactImport | Get contact import status | marketing.read |
| Operation | What it does | Scope |
|---|
createCustomField | Create custom field | marketing.read |
listCustomFields | List custom fields | marketing.read |
updateCustomField | Rename custom field | marketing.read |
deleteCustomField | Delete custom field | marketing.read |
| Operation | What it does | Scope |
|---|
createList | Create list | marketing.read |
listLists | List all lists | marketing.read |
getList | Get list | marketing.read |
updateList | Rename list | marketing.read |
deleteList | Delete list | marketing.read |
removeContactsFromList | Remove contacts from list | marketing.read |
getListContactCount | Get list contact count | marketing.read |
| Operation | What it does | Scope |
|---|
createSegment | Create segment | marketing.read |
listSegments | List segments | marketing.read |
getSegment | Get segment | marketing.read |
updateSegment | Update segment | marketing.read |
deleteSegment | Delete segment | marketing.read |
refreshSegment | Refresh segment | marketing.read |
| Operation | What it does | Scope |
|---|
createSingleSend | Create Single Send | marketing.read |
listSingleSends | List Single Sends | marketing.read |
getSingleSend | Get Single Send | marketing.read |
updateSingleSend | Update Single Send | marketing.read |
deleteSingleSend | Delete Single Send | marketing.read |
bulkDeleteSingleSends | Bulk delete Single Sends | marketing.read |
duplicateSingleSend | Duplicate Single Send | marketing.read |
triggerSingleSend | Schedule / send Single Send now | marketing.read |
unscheduleSingleSend | Unschedule Single Send | marketing.read |
listSingleSendCategories | List Single Send categories | marketing.read |
searchSingleSends | Search Single Sends | marketing.read |
| Operation | What it does | Scope |
|---|
listSingleSendStats | All Single Send stats | marketing.read |
getSingleSendStats | Single Send stats | marketing.read |
getSingleSendLinkStats | Single Send link stats | marketing.read |
exportSingleSendStats | Export Single Send stats (CSV) | marketing.read |
listAutomationStats | All Automation stats | marketing.read |
getAutomationStats | Automation stats | marketing.read |
getAutomationLinkStats | Automation link stats | marketing.read |
exportAutomationStats | Export Automation stats (CSV) | marketing.read |
| Operation | What it does | Scope |
|---|
createSender | Create sender identity | marketing.read |
listSenders | List sender identities | marketing.read |
getSender | Get sender identity | marketing.read |
updateSender | Update sender identity | marketing.read |
deleteSender | Delete sender identity | marketing.read |
resendSenderVerification | Resend sender verification | marketing.read |
| Operation | What it does | Scope |
|---|
createVerifiedSender | Create verified sender request | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
listVerifiedSenders | List verified senders | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
updateVerifiedSender | Update verified sender | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
deleteVerifiedSender | Delete verified sender | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
resendVerifiedSender | Resend verification email | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
verifyVerifiedSender | Complete verification (token) | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
getVerifiedSenderSteps | Verification steps completed | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
listVerifiedSenderDomains | Domain warn list | (no scope of its own — Sender Verification is not on SendGrid's permission page; a Full Access key covers it) |
| Operation | What it does | Scope |
|---|
createUnsubscribeGroup | Create unsubscribe group | asm.groups.create |
listUnsubscribeGroups | List unsubscribe groups | asm.groups.read |
getUnsubscribeGroup | Get unsubscribe group | asm.groups.read |
updateUnsubscribeGroup | Update unsubscribe group | asm.groups.update |
deleteUnsubscribeGroup | Delete unsubscribe group | asm.groups.delete |
| Operation | What it does | Scope |
|---|
addSuppression | Add suppression to group | (the ASM Groups and Suppressions permissions together — SendGrid publishes no separate token for group suppressions) |
listGroupSuppressions | List suppressions in a group | (the ASM Groups and Suppressions permissions together — SendGrid publishes no separate token for group suppressions) |
searchGroupSuppressions | Search suppressions in a group | (the ASM Groups and Suppressions permissions together — SendGrid publishes no separate token for group suppressions) |
removeSuppression | Remove suppression from group | (the ASM Groups and Suppressions permissions together — SendGrid publishes no separate token for group suppressions) |
listAllSuppressions | List all group suppressions | (the ASM Groups and Suppressions permissions together — SendGrid publishes no separate token for group suppressions) |
getSuppressionGroupsForEmail | Groups an address is unsubscribed from | (the ASM Groups and Suppressions permissions together — SendGrid publishes no separate token for group suppressions) |
addGlobalSuppression | Add global suppression | suppression.unsubscribes.create |
getGlobalSuppression | Get global suppression | suppression.unsubscribes.read |
removeGlobalSuppression | Remove global suppression | suppression.unsubscribes.delete |
listGlobalSuppressions | List global suppressions | suppression.unsubscribes.read |
| Operation | What it does | Scope |
|---|
listBounces | List bounces | suppression.bounces.read |
getBounce | Get bounce | suppression.bounces.read |
deleteBounces | Delete bounces | suppression.bounces.delete |
deleteBounce | Delete one bounce | suppression.bounces.delete |
listBounceClassifications | Bounce classification totals | suppression.bounces.read |
getBounceClassification | Bounces for one classification | suppression.bounces.read |
listBlocks | List blocks | suppression.blocks.read |
getBlock | Get block | suppression.blocks.read |
deleteBlocks | Delete blocks | suppression.blocks.delete |
deleteBlock | Delete one block | suppression.blocks.delete |
| Operation | What it does | Scope |
|---|
listSpamReports | List spam reports | suppression.spam_reports.read |
getSpamReport | Get spam report | suppression.spam_reports.read |
deleteSpamReports | Delete spam reports | suppression.spam_reports.delete |
deleteSpamReport | Delete one spam report | suppression.spam_reports.delete |
listInvalidEmails | List invalid emails | suppression.invalid_emails.read |
getInvalidEmail | Get invalid email | suppression.invalid_emails.read |
deleteInvalidEmails | Delete invalid emails | suppression.invalid_emails.delete |
deleteInvalidEmail | Delete one invalid email | suppression.invalid_emails.delete |
| Operation | What it does | Scope |
|---|
getGlobalStats | Global email stats | stats.read |
listCategories | List categories | categories.read |
getCategoryStats | Category stats | categories.stats.read |
getCategoryStatSums | Category stat sums | categories.stats.sums.read |
getBrowserStats | Stats by browser | browsers.stats.read |
getClientStats | Stats by email client | clients.stats.read |
getClientTypeStats | Stats for one client type | (clients.stats.read plus the per-type token — clients.desktop.stats.read, clients.phone.stats.read, clients.tablet.stats.read or clients.webmail.stats.read, matching the client type you query) |
getDeviceStats | Stats by device | devices.stats.read |
getGeoStats | Stats by country / region | geo.stats.read |
getMailboxProviderStats | Stats by mailbox provider | mailbox_providers.stats.read |
| Operation | What it does | Scope |
|---|
searchMessages | Search email activity | email_activity.read |
getMessage | Get message activity | email_activity.read |
requestMessagesCsv | Request activity CSV | email_activity.read |
getMessagesCsv | Download activity CSV | email_activity.read |
filterEmailLogs | Filter email logs | (no scope of its own — the Email Logs API is documented as plain API-key auth; email_activity.read or a Full Access key is the safe grant) |
getEmailLog | Get email log for a message | (no scope of its own — the Email Logs API is documented as plain API-key auth; email_activity.read or a Full Access key is the safe grant) |
| Operation | What it does | Scope |
|---|
validateEmail | Validate an email address | (a dedicated Email Address Validation key — validation is EXCLUDED from Full Access and is a Pro or Premier feature, so it must be its own key) |
requestBulkValidationUpload | Request bulk validation upload URL | (a dedicated Email Address Validation key — validation is EXCLUDED from Full Access and is a Pro or Premier feature, so it must be its own key) |
listBulkValidationJobs | List bulk validation jobs | (a dedicated Email Address Validation key — validation is EXCLUDED from Full Access and is a Pro or Premier feature, so it must be its own key) |
getBulkValidationJob | Get bulk validation job | (a dedicated Email Address Validation key — validation is EXCLUDED from Full Access and is a Pro or Premier feature, so it must be its own key) |
| Operation | What it does | Scope |
|---|
getEngagementQualityScores | Engagement quality scores | (no scope of its own — the Engagement Quality API is account-level; a Full Access key covers it) |
getSubuserEngagementQualityScores | Subuser engagement quality scores | (no scope of its own — the Engagement Quality API is account-level; a Full Access key covers it) |
eraseRecipientData | Erase recipient email data | (no scope of its own — the Recipients Data Erasure API is not on SendGrid's permission page; a Full Access key covers it) |
| Operation | What it does | Scope |
|---|
createEventWebhook | Create Event Webhook | user.webhooks.event.settings.update |
listEventWebhooks | List Event Webhooks | user.webhooks.event.settings.read |
getEventWebhook | Get Event Webhook | user.webhooks.event.settings.read |
updateEventWebhook | Update Event Webhook | user.webhooks.event.settings.update |
deleteEventWebhook | Delete Event Webhook | user.webhooks.event.settings.update |
testEventWebhook | Test Event Webhook | user.webhooks.event.test.create |
getSignedEventWebhookKey | Get signing public key | user.webhooks.event.settings.read |
toggleSignedEventWebhook | Toggle signature verification | user.webhooks.event.settings.update |
| Operation | What it does | Scope |
|---|
createParseSetting | Create parse setting | user.webhooks.parse.settings.create |
listParseSettings | List parse settings | user.webhooks.parse.settings.read |
getParseSetting | Get parse setting | user.webhooks.parse.settings.read |
updateParseSetting | Update parse setting | user.webhooks.parse.settings.update |
deleteParseSetting | Delete parse setting | user.webhooks.parse.settings.delete |
getParseStats | Inbound Parse stats | user.webhooks.parse.stats.read |
| Operation | What it does | Scope |
|---|
createWebhookSecurityPolicy | Create security policy | (no scope of its own — webhook security policies are not on SendGrid's permission page; the Event Webhook permissions or a Full Access key cover them) |
listWebhookSecurityPolicies | List security policies | (no scope of its own — webhook security policies are not on SendGrid's permission page; the Event Webhook permissions or a Full Access key cover them) |
getWebhookSecurityPolicy | Get security policy | (no scope of its own — webhook security policies are not on SendGrid's permission page; the Event Webhook permissions or a Full Access key cover them) |
updateWebhookSecurityPolicy | Update security policy | (no scope of its own — webhook security policies are not on SendGrid's permission page; the Event Webhook permissions or a Full Access key cover them) |
deleteWebhookSecurityPolicy | Delete security policy | (no scope of its own — webhook security policies are not on SendGrid's permission page; the Event Webhook permissions or a Full Access key cover them) |
| Operation | What it does | Scope |
|---|
authenticateDomain | Authenticate a domain | whitelabel.create |
listAuthenticatedDomains | List authenticated domains | whitelabel.read |
getAuthenticatedDomain | Get authenticated domain | whitelabel.read |
updateAuthenticatedDomain | Update authenticated domain | whitelabel.update |
deleteAuthenticatedDomain | Delete authenticated domain | whitelabel.delete |
validateAuthenticatedDomain | Validate authenticated domain | whitelabel.update |
getDefaultAuthenticatedDomain | Get default authenticated domain | whitelabel.read |
addIpToAuthenticatedDomain | Add IP to authenticated domain | whitelabel.update |
removeIpFromAuthenticatedDomain | Remove IP from authenticated domain | whitelabel.update |
associateDomainWithSubuser | Associate domain with subuser | whitelabel.update |
associateDomainWithSubusers | Associate domain with subuser (multi) | whitelabel.update |
disassociateDomainFromSubuser | Disassociate domain from subuser | whitelabel.update |
getSubuserAuthenticatedDomain | Get a subuser's domain | whitelabel.read |
listSubuserAuthenticatedDomains | List a subuser's domains | whitelabel.read |
disassociateSubuserAuthenticatedDomain | Disassociate a subuser's domain | whitelabel.update |
emailDnsRecords | Email DNS records to a co-worker | whitelabel.read |
| Operation | What it does | Scope |
|---|
createBrandedLink | Create branded link | whitelabel.create |
listBrandedLinks | List branded links | whitelabel.read |
getBrandedLink | Get branded link | whitelabel.read |
updateBrandedLink | Update branded link | whitelabel.update |
deleteBrandedLink | Delete branded link | whitelabel.delete |
validateBrandedLink | Validate branded link | whitelabel.update |
getDefaultBrandedLink | Get default branded link | whitelabel.read |
associateBrandedLinkWithSubuser | Associate branded link with subuser | whitelabel.update |
getSubuserBrandedLink | Get a subuser's branded link | whitelabel.read |
disassociateBrandedLinkFromSubuser | Disassociate a subuser's branded link | whitelabel.update |
| Operation | What it does | Scope |
|---|
setUpReverseDns | Set up reverse DNS | whitelabel.create |
listReverseDns | List reverse DNS records | whitelabel.read |
getReverseDns | Get reverse DNS record | whitelabel.read |
deleteReverseDns | Delete reverse DNS record | whitelabel.delete |
validateReverseDns | Validate reverse DNS record | whitelabel.update |
| Operation | What it does | Scope |
|---|
addIps | Add IP addresses | (no ips.create token exists — adding IPs to an account is a billing action, so it needs a Full Access or Billing key) |
listIps | List IP addresses | ips.read |
getIp | Get IP address | ips.read |
listAssignedIps | List assigned IPs | ips.assigned.read |
getRemainingIps | Get remaining IP count | ips.read |
createIpPool | Create IP pool | ips.pools.create |
listIpPools | List IP pools | ips.pools.read |
getIpPool | Get IP pool | ips.pools.read |
updateIpPool | Rename IP pool | ips.pools.update |
deleteIpPool | Delete IP pool | ips.pools.delete |
addIpToPool | Add IP to pool | ips.pools.ips.create |
removeIpFromPool | Remove IP from pool | ips.pools.ips.delete |
startIpWarmup | Start IP warmup | ips.warmup.create |
listWarmupIps | List warming IPs | ips.warmup.read |
getWarmupIp | Get IP warmup status | ips.warmup.read |
stopIpWarmup | Stop IP warmup | ips.warmup.delete |
| Operation | What it does | Scope |
|---|
createSubuser | Create subuser | subusers.create |
listSubusers | List subusers | subusers.read |
updateSubuser | Enable / disable subuser | subusers.update |
deleteSubuser | Delete subuser | subusers.delete |
updateSubuserWebsiteAccess | Toggle subuser website access | subusers.update |
getSubuserCredits | Get subuser credits | subusers.credits.read |
updateSubuserCredits | Update subuser credits | subusers.credits.update |
updateSubuserRemainingCredits | Update remaining credits | subusers.credits.remaining.update |
updateSubuserIps | Update subuser IPs | subusers.update |
listSubuserReputations | Subuser reputations | subusers.reputations.read |
getSubuserStats | Subuser stats | subusers.stats.read |
getSubuserMonthlyStats | One subuser's monthly stats | subusers.stats.monthly.read |
getSubusersMonthlyStats | All subusers' monthly stats | subusers.stats.monthly.read |
getSubuserStatSums | Subuser stat sums | subusers.stats.sums.read |