6 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
View email preferences
email_policy.getread
Read the account's unsubscribe-link and double-opt-in preferences (whether it is on, when it started sending — `activeSince`, null means switched on but not sending yet — which channels require confirmation, and the confirmation email copy), its org-wide daily email sending limit, and the automatic reputation slow-down thresholds. Changes nothing and sends no email.
Over MCP the same operation is the tool email_policy_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Get the opt-out page link
email_policy.get_opt_out_linkread
Return this account's public opt-out page URL — the address behind the "Unsubscribe or update email preferences" footer that Chirply appends to one-off, automated, API and transactional email, and the one to use in a website or privacy-policy link. Anyone may open it without signing in and stop this account's messages to an address they enter; it can never restart them. Reads configuration only: opens nothing, sends nothing, and changes no contact's consent. Also reports whether the footer is currently switched on, because the link works either way but is only ATTACHED to outgoing mail when it is. Broadcasts do not use this URL — they carry a signed one-click link scoped to the individual recipient.
Parameters
Field
Type
Required
Description
address
string
optional
Pre-fill the form with this email address or phone number, as the per-recipient footer link does. Only pre-fills the field — submitting the form is still the recipient's action, and passing an address here opts nobody out.
Over MCP the same operation is the tool email_policy_get_opt_out_link at https://app.chirply.io/api/mcp, same bearer token, same input.
Latest confirmations
email_policy.list_confirmationsread
List this account's double opt-in confirmations: how many addresses are held off marketing email awaiting a click, how many are queued, how many could not be sent (with the reason), how many have confirmed, and the most recent requests with their status. Read only; sends nothing.
Parameters
Field
Type
Required
Description
status
"all" | "failed" | "queued" | "sent"
optional
Which open requests to list: 'failed' (could not be sent), 'queued' (waiting to go out), 'sent' (waiting for the click) or 'all' (default).
limit
integer
optional
How many recent requests to return, newest first (default 25, max 100).
Over MCP the same operation is the tool email_policy_list_confirmations at https://app.chirply.io/api/mcp, same bearer token, same input.
Resend confirmation
email_policy.resend_confirmationwriteconfirmadmin only
Immediately send one address a NEW double opt-in confirmation email (a real email from the account's own sending address, with a fresh link; the old link stops working). Follows the rule of the channel the address arrived through: always refused for an address that bounced or reported spam, already confirmed, is no longer held, or was sent one in the last two minutes; refused for any other opt-out recorded after the person's request (or, for API/import/teammate channels, any opt-out at all). Use after fixing a sending problem.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
email
string
optional
The held email address to send the confirmation to. Give this or contact_id.
contact_id
string (uuid)
optional
A contact whose email address is held awaiting confirmation. Used when email is not given.
Over MCP the same operation is the tool email_policy_resend_confirmation at https://app.chirply.io/api/mcp, same bearer token, same input.
Retry all that failed
email_policy.retry_failed_confirmationswriteconfirmadmin only
Queue every double opt-in confirmation that could not be sent (for example because the account had no working sending address) to go out again. The minute dispatcher then sends them as real emails from the account's own sending address, about 20 a minute; each address is re-checked first, and any no longer held awaiting confirmation (unsubscribed, bounced, complained or allowed by a teammate meanwhile) is skipped.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool email_policy_retry_failed_confirmations at https://app.chirply.io/api/mcp, same bearer token, same input.
Save settings
email_policy.updatewriteconfirmadmin only
Update whether account opt-out links are appended to email, double opt-in (whether it is on, which channels require confirmation, and the confirmation email copy), the org-wide daily email sending limit, and the automatic slow-down thresholds for senders whose bounce/complaint rates spike. Sends nothing at the moment of saving, BUT switching double opt-in on (or saving it on) STARTS it: from then on every address arriving through a selected channel is held off marketing email and sent a real confirmation email from the account's own sending address — for imports and API/hand-added contacts that is every new contact with an email. Switching it off stops new holds and cancels unsent queued confirmations; addresses already held stay held until they confirm or a teammate allows email on the contact. A daily limit changes when bulk campaigns pause, and throttle thresholds change how fast struggling senders may send.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
include_unsubscribe_link
boolean
required
Append the account opt-out link to one-off, automated, API, and transactional email. Broadcasts always retain their signed compliance link.
double_opt_in_enabled
boolean
required
Whether addresses arriving through the selected channels must confirm by email before they get marketing email. true starts sending confirmations immediately for new arrivals.
api
boolean
required
API, MCP and Copilot: every NEW contact created with an email through them is held and sent a confirmation, unless the address has any opt-out on file.
tracking
boolean
required
Auto-captured from websites: ONLY a captured website form whose visitor ticked an email opt-in checkbox (marked data-email-optin or named newsletter/subscribe/email_opt_in/marketing_consent, not pre-ticked), or whose site code reports emailOptIn, is held and sent a confirmation — including past an earlier opt-out, which the hold replaces (never past a bounce or spam complaint). Ordinary captured enquiries never are.
imports
boolean
required
CSV and file imports: every NEW contact with an email in the file is held and queued a confirmation, unless the address has any opt-out on file. Matched existing contacts are untouched.
manual
boolean
required
Added by teammates: every NEW contact a teammate adds with an email is held and sent a confirmation, unless the address has any opt-out on file.
forms
boolean
optional
Form consent questions: ticking a consent question set to allow emails holds the address and sends a confirmation instead of granting immediately — including past an earlier opt-out, which the hold replaces (never past a bounce or spam complaint). An unticked box still records a no. Omit to keep the current value.
launch_store
boolean
optional
Reseller website signups (agency accounts with a launch store): a buyer who ticks "Email me setup tips and reminders about this offer." on the agency's reseller website or trial/paid signup funnel is held off marketing email and sent a confirmation from the agency's own sending address; the store's setup-tip emails start only after they click it. Their checkout, account invitation and billing emails are unaffected. An unticked box sends nothing. Omit to keep the current value.
webhooks
boolean
optional
Automation webhooks: a webhook request that its owner set up to carry email consent (automations.update_webhook_settings consent_mode) and that says the person ticked the opt-in holds the address and sends a confirmation instead of granting immediately — including past an earlier opt-out, which the hold replaces (never past a bounce or spam complaint). Other webhook requests send nothing. Omit to keep the current value.
subject
string
required
Subject line of the confirmation email.
message
string
required
Message displayed above the confirmation button.
daily_send_limit
integer (or null)
optional
Most emails the account may send per UTC day, across every sending address. Null removes the limit; omit to keep the current value. Bulk campaigns pause at the limit and resume the next day — one-to-one and transactional email is never blocked, but still counts toward the total.
auto_throttle_enabled
boolean
optional
Automatically cap a sending address at a small daily volume when its trailing bounce or complaint rate spikes. Slows bulk campaign sending only; one-to-one email always goes out. Omit to keep the current value.
throttle_bounce_rate_pct
number
optional
Slow a sender down when its trailing bounce rate exceeds this percentage (default 5). Omit to keep the current value.
throttle_complaint_rate_pct
number
optional
Slow a sender down when its trailing spam-complaint rate exceeds this percentage (default 0.3). Omit to keep the current value.
throttle_min_sends
integer
optional
Never judge a sender before it has sent at least this many emails in the window (default 50). Omit to keep the current value.
throttle_lookback_days
integer
optional
How many trailing UTC days of sends/bounces/complaints to judge on (default 3). Omit to keep the current value.
throttled_daily_cap
integer
optional
Bulk emails per day a slowed-down sender is capped at until its rates recover (default 50). Omit to keep the current value.