44 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.
Add stamp
loyalty.add_stampwriteconfirm
Award stamps or points, automatically issuing every crossed recurring reward and once-per-card milestone. A configured chance bonus may be issued. Changes the customer's real balance and wallet; may start configured loyalty workflows. Retried operation keys do not award twice.
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
card_id
string (uuid)
required
Loyalty card ID in the active account.
amount
integer
optional
Positive stamps or integer points to award. Default 1; at most 1,000 rewards may be issued in one action. Default: 1
location_id
string (uuid)
optional
Optional active location in this card's program, used for attribution.
reason
string
optional
Staff note recorded permanently on the card's history.
idempotency_key
string
required
Unique caller-generated operation key. Reuse the same key when retrying the same action; use a new key for a different transaction.
Over MCP the same operation is the tool loyalty_add_stamp at https://app.chirply.io/api/mcp, same bearer token, same input.
Adjust balance
loyalty.adjust_balancewriteconfirmadmin only
Make an audited correction to a customer's stamp or point balance. A reason is required. Positive adjustments can issue goals and milestones; chance bonuses are excluded. Negative adjustments cannot make the balance negative or revoke an already issued reward. Customer wallets update.
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
card_id
string (uuid)
required
Loyalty card ID in the active account.
amount
integer
required
Signed nonzero balance correction.
reason
string
required
Required explanation, retained permanently in the card history.
location_id
string (uuid)
optional
Optional active location in this card's program, used for attribution.
idempotency_key
string
required
Unique caller-generated operation key. Reuse the same key when retrying the same action; use a new key for a different transaction.
Over MCP the same operation is the tool loyalty_adjust_balance at https://app.chirply.io/api/mcp, same bearer token, same input.
View loyalty analytics
loyalty.analyticsread
Read complete server-aggregated enrollment, earning, redemption, location, staff and daily analytics for the selected period. Counts are calculated in the database and are not truncated to a sample of members.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Loyalty program ID in the active account.
days
integer
optional
Days of earning, redemption and daily activity to summarize. Card and available-reward totals are current. Default: 30
Over MCP the same operation is the tool loyalty_analytics at https://app.chirply.io/api/mcp, same bearer token, same input.
Verify Poster receipt
loyalty.award_poster_receiptwriteconfirm
Fetch one receipt directly from this program's connected Poster merchant, verify paid/closed state, allowed location and age, then award the configured credit once. A receipt cannot earn on another card or program in the same account. Changes customer balance and wallet and may trigger configured workflows; staff must verify the receipt belongs to this customer.
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
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
card_id
string (uuid)
required
Customer card in the connection's program.
receipt_id
string
required
Poster transaction ID printed or looked up by authorized checkout staff. This is not a fiscal QR URL.
Over MCP the same operation is the tool loyalty_campaign_delivery at https://app.chirply.io/api/mcp, same bearer token, same input.
Cancel campaign
loyalty.cancel_campaignwriteconfirmadmin only
Cancel a draft, schedule or sending wallet campaign. Unsent jobs are skipped after the worker rechecks cancellation; a provider request already in flight may still deliver and cannot be recalled.
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 loyalty_cancel_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Configure Poster webhook
loyalty.configure_poster_webhookwriteconfirmadmin only
Enable automatic receipt earning from a signed Poster developer-app webhook. After saving, register the returned URL for transaction events in Poster and install that app in the connected merchant account. A verified Poster customer-to-card mapping is also required. Future paid receipts can change real balances and customer wallets.
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
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
app_secret
string (or null)
required
Poster developer application's secret, encrypted at rest. null disables automatic webhook earning without disconnecting staff receipt verification.
Over MCP the same operation is the tool loyalty_configure_poster_webhook at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect Poster
loyalty.connect_posterwriteconfirmadmin only
Verify and save encrypted Poster credentials plus eligible locations and earning rules. Staff can then award once per server-verified paid receipt. This changes future earning configuration and sends no messages.
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
program_id
string (uuid)
required
Loyalty program ID in the active account.
token
string
required
Poster merchant API access token. Encrypted at rest and never returned by reads.
spot_ids
string[]
required
Explicit allowed Poster spot IDs. At least one required; all must exist in this merchant account.
award_amount
integer
optional
Stamps or points awarded per qualifying receipt, independent of its total. Default 1. Default: 1
max_age_days
integer
optional
Maximum age of a paid receipt in days. Default 7, maximum 30. Default: 7
Over MCP the same operation is the tool loyalty_connect_poster at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect Telegram bot
loyalty.connect_telegramwriteconfirmadmin only
Verify a BotFather token and register Chirply's authenticated webhook for this program. The bot replies to customers who initiate private /start, /card or /stop commands. It sends no campaign or test messages during setup. Replacing an existing webhook moves that bot's incoming updates to Chirply.
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
program_id
string (uuid)
required
Loyalty program ID in the active account.
bot_token
string
required
Bot token issued by Telegram BotFather. Encrypted and never returned.
replace_existing_webhook
boolean
optional
Explicitly replace another service's webhook for this bot. Default false; connecting otherwise refuses an occupied webhook. Default: false
Over MCP the same operation is the tool loyalty_connect_telegram at https://app.chirply.io/api/mcp, same bearer token, same input.
Create redeem codes
loyalty.create_codeswriteconfirmadmin only
Generate one-use receipt codes that award the configured amount when a customer applies one to a card in this program. Possession authorizes the award. Raw codes are returned once; save them securely for printing. Each code expires and can be consumed only once.
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
program_id
string (uuid)
required
Loyalty program ID in the active account.
count
integer
required
Number of one-use codes, from 1 to 200.
amount
integer
required
Stamps or points each code grants.
expires_at
string (date-time)
required
Expiry as an ISO 8601 timestamp with timezone. Must be in the future.
location_id
string (uuid)
optional
Optional active location in this card's program, used for attribution.
Over MCP the same operation is the tool loyalty_create_codes at https://app.chirply.io/api/mcp, same bearer token, same input.
Create email draft
loyalty.create_email_draftwriteadmin only
Create an email broadcast DRAFT for a snapshot of loyalty members linked to verified CRM contacts with email addresses. Anonymous card emails are excluded. Requires Campaigns access as well as Loyalty. Wallet marketing consent is separate from email permissions; the existing broadcast composer applies email suppression and consent checks before a later authorized send. No email is sent or scheduled, and an empty audience creates no draft.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
required
Loyalty program ID in the active account.
name
string
required
Name of the draft to open in the standard email broadcast composer.
segment
object
optional
Snapshot selection for a draft email broadcast. Only staff-linked CRM identities are included.
Loyalty audience among linked CRM contacts with email addresses. Wallet promotional consent is separate; email eligibility is checked by the broadcast composer. Default: "all"
segment.inactive_days
integer
optional
For lapsed audience, days since the customer's last earning activity. Default: 30
segment.minimum_earned
integer
optional
For frequent audience, minimum lifetime stamps or points earned. Default: 10
Over MCP the same operation is the tool loyalty_create_email_draft at https://app.chirply.io/api/mcp, same bearer token, same input.
Create checkout QR
loyalty.create_kioskwriteconfirmadmin only
Create a temporary, one-use checkout QR that authorizes a single stamps or points award to one card. Display it only after a qualifying purchase; generate a fresh QR for the next customer. Returns its secret token, URL and expiry.
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
program_id
string (uuid)
required
Loyalty program ID in the active account.
location_id
string (uuid)
optional
Optional active location in this card's program, used for attribution.
amount
integer
optional
Amount awarded by this checkout QR. Default 1. Default: 1
valid_minutes
integer
optional
Minutes until the checkout QR expires. Default 5, maximum 60. Default: 5
Over MCP the same operation is the tool loyalty_create_kiosk at https://app.chirply.io/api/mcp, same bearer token, same input.
Create loyalty program
loyalty.create_programwriteadmin only
Create a draft branded stamp or points program. Enrollment stays closed until the program is made active. No customer messages are sent.
Parameters
Field
Type
Required
Description
name
string
required
Customer-visible loyalty program name.
description
string
optional
Short explanation shown on the enrollment page. Default: ""
kind
"stamps" | "points"
optional
Whether the card counts visits as stamps or collects integer points. Default: "stamps"
rules
object
optional
Earning and reward rules. Cards retain their enrollment version; changes apply to new cards. Default: {"goal":7,"reward_title":"Free reward","reward_valid_days":90,"card_valid_days":null,"earn_amount":1,"redemption_mode":"staff","milestones":[],"bonus_probability":0,"bonus_title":"Bonus reward","birthday_reward":"","winback_days":30}
rules.goal
integer
optional
Stamps or points needed for each recurring reward. Default 7. Default: 7
rules.reward_title
string
optional
What the customer receives each time the goal is reached. Default: "Free reward"
rules.reward_valid_days
integer
optional
Days after earning a reward before it expires. Default 90. Default: 90
rules.card_valid_days
integer (or null)
optional
Days after enrollment before the card expires; null means no expiry. Default: null
rules.earn_amount
integer
optional
Default stamps or points awarded for one visit or transaction. Default: 1
rules.redemption_mode
"staff" | "customer"
optional
staff requires a signed-in team member to redeem; customer also allows the card holder to confirm redemption. Default: "staff"
rules.milestones
object[]
optional
Optional additional lifetime milestones, up to 20. Default: []
rules.milestones[].threshold
integer
required
Lifetime earned stamps or points required, once per card.
rules.milestones[].title
string
required
Milestone reward title.
rules.bonus_probability
number
optional
Chance of an extra reward per earn transaction: 0 disables it, 0.1 means 10%. Staff adjustments cannot trigger it. Default: 0
rules.bonus_title
string
optional
Title of the chance-based bonus reward. Default: "Bonus reward"
rules.birthday_reward
string
optional
Reward granted once a year on a provided birthday; empty disables birthday rewards. Default: ""
rules.winback_days
integer
optional
Days since activity to consider a customer lapsed. Default 30. Default: 30
brand
object
optional
Public card appearance. Default: {"background":"#0f172a","foreground":"#ffffff","logo_url":"","stamp_icon":"star","hero_url":"","stamp_shape":"circle","layout":"classic"}
Card text color. Default #ffffff. Default: "#ffffff"
brand.logo_url
string (uri) | ""
optional
Public HTTPS logo image URL, or empty for the gift icon. Upload PNG with assets.upload; the designer prepares a 150×150 PNG for both wallets. Default: ""
brand.stamp_icon
"star" | "coffee" | "heart" | "gift" | "check"
optional
Symbol used for earned stamps. Default: "star"
brand.accent
string
optional
Earned stamp and points progress color on the web card. Omit to use the text color.
brand.hero_url
string (uri) | ""
optional
Public HTTPS banner artwork URL, or empty. Use assets.upload for a PNG up to 2 MiB; the designer crops to 1125×369. Appears on web, Apple strip and Google hero. Default: ""
brand.stamp_shape
"circle" | "rounded"
optional
Web stamp tile shape; circle by default. Wallet providers display a numeric balance. Default: "circle"
brand.layout
"classic" | "centered"
optional
Web card header alignment; classic is left aligned, centered stacks the logo above the title. Wallet layouts are controlled by the provider. Default: "classic"
terms
string
optional
Customer-facing reward eligibility and redemption terms. Default: ""
timezone
string
optional
IANA timezone used for birthday rewards and reporting; default America/Chicago. Default: "America/Chicago"
Over MCP the same operation is the tool loyalty_create_program at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect loyalty integration
loyalty.disconnect_integrationwriteconfirmadmin only
Disable this account's saved connection. Telegram also removes the bot webhook and stored chat links. Existing earned credit and receipt replay protection remain recorded. No customer messages are sent.
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
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
Over MCP the same operation is the tool loyalty_disconnect_integration at https://app.chirply.io/api/mcp, same bearer token, same input.
Issue card
loyalty.enroll_cardwriteconfirm
Issue a new loyalty card with optional contact details and separately recorded wallet marketing consent. A supplied CRM contact must belong to this account. Existing contact/program cards are returned with token:null; new cards return their secret link once. This sends no email or SMS.
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
program_id
string (uuid)
required
Loyalty program ID in the active account.
contact_id
string (uuid)
optional
Optional existing CRM contact. Omit for anonymous enrollment; supplied contact details never prove identity.
display_name
string
optional
Optional name displayed on the card. Default: ""
email
string (email) (or null)
optional
Optional email. This alone does not grant marketing consent or prove identity.
phone
string (or null)
optional
Optional phone number, including country code where available.
birthday
string (or null)
optional
Optional birth date as YYYY-MM-DD, used for birthday reward eligibility.
marketing_consent
boolean
optional
Separate affirmative consent to wallet marketing messages. Default false; enrollment works without this consent. Default: false
Over MCP the same operation is the tool loyalty_enroll_card at https://app.chirply.io/api/mcp, same bearer token, same input.
Export members
loyalty.export_cardsreadadmin only
Export this account's loyalty members and optional contact details as formula-safe CSV. Returns up to 10,000 records with total and truncated flags; use list_cards pagination for larger exports. Export contains personal data and no card bearer tokens.
Over MCP the same operation is the tool loyalty_export_cards at https://app.chirply.io/api/mcp, same bearer token, same input.
View loyalty card
loyalty.get_cardread
Read a loyalty card, its enrollment rules, latest 200 rewards and latest 100 permanent history entries. Use list_rewards or list_history for older entries. Returns no bearer credential.
Over MCP the same operation is the tool loyalty_get_program at https://app.chirply.io/api/mcp, same bearer token, same input.
Grant voucher
loyalty.grant_rewardwriteconfirmadmin only
Issue a manual reward voucher with its own redemption permission and optional secure code. This creates a real customer entitlement and updates their wallet; it does not send email or SMS. A protected voucher returns redeem_code on this issuance receipt only; save it securely. Defaults to the card's configured reward lifetime.
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
card_id
string (uuid)
required
Loyalty card ID in the active account.
title
string
required
Customer-visible voucher entitlement, such as Free dessert.
expires_at
string (date-time)
optional
Expiry as an ISO 8601 timestamp with timezone. Must be in the future.
redemption_mode
"staff" | "customer"
optional
Optional override for this voucher: staff requires a team member; customer also permits holder redemption. Omit to inherit the card's rules.
require_code
boolean
optional
Require a secure code for redemption, including staff redemption. The generated code is returned on issuance, never on the public card. Default false. Default: false
reason
string
optional
Staff note recorded permanently on the card's history.
idempotency_key
string
required
Unique caller-generated operation key. Reuse the same key when retrying the same action; use a new key for a different transaction.
Over MCP the same operation is the tool loyalty_grant_reward at https://app.chirply.io/api/mcp, same bearer token, same input.
Check Poster account
loyalty.inspect_posterreadadmin only
Read the authenticated Poster merchant name, currency and available spot IDs. Uses the supplied token for read-only provider API requests and saves nothing.
Parameters
Field
Type
Required
Description
token
string
required
Poster merchant API access token. Encrypted at rest and never returned by reads.
Over MCP the same operation is the tool loyalty_inspect_poster at https://app.chirply.io/api/mcp, same bearer token, same input.
Link CRM contact
loyalty.link_contactwriteconfirmadmin only
Link a loyalty card to a verified existing CRM contact in the same account. Requires staff identity verification; supplied email alone is insufficient. Future loyalty events appear on that contact's timeline and may start workflows. One card per contact per program is enforced.
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
card_id
string (uuid)
required
Loyalty card ID in the active account.
contact_id
string (uuid)
required
CRM contact whose identity staff have verified; must belong to the current account.
Over MCP the same operation is the tool loyalty_link_contact at https://app.chirply.io/api/mcp, same bearer token, same input.
Link Poster customer
loyalty.link_poster_customerwriteconfirmadmin only
Verify that a Poster client ID exists in the connected merchant account and associate it with an existing loyalty card. Staff must confirm these are the same person. Future signed paid-receipt webhooks for that customer automatically award this card; email similarity alone is insufficient.
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
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
card_id
string (uuid)
required
Existing card in this Poster connection's loyalty program.
client_id
string
required
Existing Poster customer/client ID, confirmed by staff.
identity_verified
true
required
Explicit staff attestation that the Poster customer and loyalty card holder are the same person.
note
string
required
Saved verification note, such as Customer confirmed their card at checkout. Do not include identity document numbers.
Over MCP the same operation is the tool loyalty_link_poster_customer at https://app.chirply.io/api/mcp, same bearer token, same input.
List wallet campaigns
loyalty.list_campaignsreadadmin only
List saved drafts, schedules and delivery totals for this account's wallet campaigns. queued_count is audience size; delivered_count counts provider acknowledgment, not a guarantee the customer saw a notification.
Over MCP the same operation is the tool loyalty_list_campaigns at https://app.chirply.io/api/mcp, same bearer token, same input.
List loyalty members
loyalty.list_cardsread
List loyalty cards in this account, including optional contact details, consent, balances and activity dates. Filter by program or contact and search name, email or phone. No messages are sent.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
program_id
string (uuid)
optional
Loyalty program ID in the active account.
contact_id
string (uuid)
optional
Only cards linked to this existing CRM contact.
search
string
optional
Search customer name, email address or phone number.
Over MCP the same operation is the tool loyalty_list_cards at https://app.chirply.io/api/mcp, same bearer token, same input.
List redeem codes
loyalty.list_codesreadadmin only
Read previously issued receipt-code metadata and whether each was consumed, expired or revoked. Secret codes are shown only when created and cannot be recovered from this list.
Over MCP the same operation is the tool loyalty_list_codes at https://app.chirply.io/api/mcp, same bearer token, same input.
View card history
loyalty.list_historyread
Read the card's immutable earning, adjustments, redemption and consent history with pagination. Includes actor and location attribution. No customer messages are sent.
Over MCP the same operation is the tool loyalty_list_history at https://app.chirply.io/api/mcp, same bearer token, same input.
List checkout QRs
loyalty.list_kiosksreadadmin only
Read issued checkout QR metadata, expiry, consumption and revocation. Secret tokens are returned only when created. A checkout QR authorizes one transaction only.
Over MCP the same operation is the tool loyalty_list_kiosks at https://app.chirply.io/api/mcp, same bearer token, same input.
List locations
loyalty.list_locationsread
Read the program's locations, coordinates and active status. Coordinates can make installed wallet passes relevant near a business; display is controlled by the wallet provider.
Over MCP the same operation is the tool loyalty_list_locations at https://app.chirply.io/api/mcp, same bearer token, same input.
View Poster customer links
loyalty.list_poster_customersread
Read explicitly verified Poster customer-to-card mappings in this account, including verification notes and staff attribution. This never searches or merges identities by email.
Parameters
Field
Type
Required
Description
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
card_id
string (uuid)
optional
Optional card filter.
limit
integer
optional
Maximum mappings to return. Default 50. Default: 50
Over MCP the same operation is the tool loyalty_list_programs at https://app.chirply.io/api/mcp, same bearer token, same input.
List rewards
loyalty.list_rewardsread
Read all reward vouchers on a card with pagination, including redeemed and expired records. Expiry is evaluated from expires_at; the stored status records whether it was redeemed. Secret redemption codes are never returned by this read.
Over MCP the same operation is the tool loyalty_list_rewards at https://app.chirply.io/api/mcp, same bearer token, same input.
Find card
loyalty.lookup_cardread
Look up a scanned loyalty card QR value, card web URL or card UUID in the current account. The authenticated caller's account boundary applies even when a valid token belongs elsewhere.
Parameters
Field
Type
Required
Description
code
string
required
Scanned card UUID, opaque card token or complete /l/card/... URL.
Over MCP the same operation is the tool loyalty_lookup_card at https://app.chirply.io/api/mcp, same bearer token, same input.
View Poster webhook history
loyalty.poster_webhook_eventsreadadmin only
Read the latest 100 authenticated Poster webhook results, including awarded, skipped and retryable failure details. Retained for 90 days; permanent credit history remains on the loyalty card.
Parameters
Field
Type
Required
Description
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
Over MCP the same operation is the tool loyalty_poster_webhook_events at https://app.chirply.io/api/mcp, same bearer token, same input.
Redeem reward
loyalty.redeem_rewardwriteconfirm
Permanently mark an available, unexpired reward redeemed. Staff should provide the promised goods or service only after this succeeds. Concurrent attempts cannot redeem it twice. Updates the customer wallet and can start configured workflows.
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
card_id
string (uuid)
required
Loyalty card ID in the active account.
reward_id
string (uuid)
required
Available reward belonging to this card.
redemption_code
string
optional
Secure voucher code, required only when this reward has requires_code=true.
location_id
string (uuid)
optional
Optional active location in this card's program, used for attribution.
idempotency_key
string
required
Unique caller-generated operation key. Reuse the same key when retrying the same action; use a new key for a different transaction.
Over MCP the same operation is the tool loyalty_redeem_reward at https://app.chirply.io/api/mcp, same bearer token, same input.
Revoke redeem code
loyalty.revoke_codewriteconfirmadmin only
Revoke an unused receipt code so possession no longer authorizes a new award. Existing completed earning transactions remain in history.
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
code_id
string (uuid)
required
Code metadata ID returned by list_codes, not the secret code itself.
Over MCP the same operation is the tool loyalty_revoke_code at https://app.chirply.io/api/mcp, same bearer token, same input.
Revoke checkout QR
loyalty.revoke_kioskwriteconfirmadmin only
Revoke a checkout QR before consumption. This does not reverse stamps that have already been granted.
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
kiosk_id
string (uuid)
required
Checkout QR record ID returned at creation or by list_kiosks.
Over MCP the same operation is the tool loyalty_revoke_kiosk at https://app.chirply.io/api/mcp, same bearer token, same input.
Save campaign draft
loyalty.save_campaignwriteadmin only
Create or update a draft wallet campaign with audience rules and an optional future schedule. Saving never enables or sends the campaign; use Send campaign to authorize delivery. Only customers who gave wallet marketing consent are eligible.
Parameters
Field
Type
Required
Description
campaign_id
string (uuid)
optional
Wallet campaign ID in the active account.
program_id
string (uuid)
required
Loyalty program ID in the active account.
title
string
required
Campaign name and notification title.
message
string
required
Customer-visible wallet message, up to 500 characters.
segment
object
optional
Campaign audience rules evaluated when the scheduled send begins.
Over MCP the same operation is the tool loyalty_save_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Save loyalty location
loyalty.save_locationwriteadmin only
Create or update a program location used for staff attribution and wallet relevance. An inactive location cannot receive new stamps. This changes customer-visible location metadata and sends no campaign.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
required
Loyalty program ID in the active account.
location_id
string (uuid)
optional
Existing location ID; omit to add a location.
name
string
required
Location name shown to staff and customers.
address
string
optional
Street address, optional. Default: ""
latitude
number (or null)
optional
Latitude in decimal degrees, or null to clear.
longitude
number (or null)
optional
Longitude in decimal degrees, or null to clear.
active
boolean
optional
Whether staff can attribute new transactions to this location. Default true. Default: true
Over MCP the same operation is the tool loyalty_save_location at https://app.chirply.io/api/mcp, same bearer token, same input.
Send campaign
loyalty.send_campaignwriteconfirmadmin only
Enable a saved draft for real wallet message delivery, immediately or at its saved schedule. The audience is evaluated at send time among consented, active, unexpired cards. Provider limits, installed wallets and notification preferences apply; this sends no email or SMS.
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 loyalty_send_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Change card status
loyalty.set_card_statuswriteconfirmadmin only
Block or reactivate a card. A blocked card cannot earn or redeem and is excluded from new wallet campaigns. History and previously earned rewards remain recorded. Customer wallets update.
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
card_id
string (uuid)
required
Loyalty card ID in the active account.
status
"active" | "blocked"
required
active allows normal use; blocked suspends earning, redemption and campaign eligibility.
Over MCP the same operation is the tool loyalty_set_card_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Unlink Poster customer
loyalty.unlink_poster_customerwriteconfirmadmin only
Remove the verified customer mapping so future POS webhooks stop awarding its card. An already committed award remains recorded; a transaction already in flight may finish before unlinking completes.
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
integration_id
string (uuid)
required
Saved loyalty integration ID in the active account.
Over MCP the same operation is the tool loyalty_unlink_poster_customer at https://app.chirply.io/api/mcp, same bearer token, same input.
Save program
loyalty.update_programwriteconfirmadmin only
Update branding, terms and reward rules or activate, pause or archive a program. Active opens public enrollment and earning. Rule changes create a version for NEW cards; existing cards retain enrolled rules. Branding updates become visible to customers.
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
name
string
optional
Customer-visible loyalty program name.
description
string
optional
Short explanation shown on the enrollment page.
kind
"stamps" | "points"
optional
Whether the card counts visits as stamps or collects integer points.
rules
object
optional
Earning and reward rules. Cards retain their enrollment version; changes apply to new cards.
rules.goal
integer
optional
Stamps or points needed for each recurring reward. Default 7. Default: 7
rules.reward_title
string
optional
What the customer receives each time the goal is reached. Default: "Free reward"
rules.reward_valid_days
integer
optional
Days after earning a reward before it expires. Default 90. Default: 90
rules.card_valid_days
integer (or null)
optional
Days after enrollment before the card expires; null means no expiry. Default: null
rules.earn_amount
integer
optional
Default stamps or points awarded for one visit or transaction. Default: 1
rules.redemption_mode
"staff" | "customer"
optional
staff requires a signed-in team member to redeem; customer also allows the card holder to confirm redemption. Default: "staff"
rules.milestones
object[]
optional
Optional additional lifetime milestones, up to 20. Default: []
rules.milestones[].threshold
integer
required
Lifetime earned stamps or points required, once per card.
rules.milestones[].title
string
required
Milestone reward title.
rules.bonus_probability
number
optional
Chance of an extra reward per earn transaction: 0 disables it, 0.1 means 10%. Staff adjustments cannot trigger it. Default: 0
rules.bonus_title
string
optional
Title of the chance-based bonus reward. Default: "Bonus reward"
rules.birthday_reward
string
optional
Reward granted once a year on a provided birthday; empty disables birthday rewards. Default: ""
rules.winback_days
integer
optional
Days since activity to consider a customer lapsed. Default 30. Default: 30
Card text color. Default #ffffff. Default: "#ffffff"
brand.logo_url
string (uri) | ""
optional
Public HTTPS logo image URL, or empty for the gift icon. Upload PNG with assets.upload; the designer prepares a 150×150 PNG for both wallets. Default: ""
brand.stamp_icon
"star" | "coffee" | "heart" | "gift" | "check"
optional
Symbol used for earned stamps. Default: "star"
brand.accent
string
optional
Earned stamp and points progress color on the web card. Omit to use the text color.
brand.hero_url
string (uri) | ""
optional
Public HTTPS banner artwork URL, or empty. Use assets.upload for a PNG up to 2 MiB; the designer crops to 1125×369. Appears on web, Apple strip and Google hero. Default: ""
brand.stamp_shape
"circle" | "rounded"
optional
Web stamp tile shape; circle by default. Wallet providers display a numeric balance. Default: "circle"
brand.layout
"classic" | "centered"
optional
Web card header alignment; classic is left aligned, centered stacks the logo above the title. Wallet layouts are controlled by the provider. Default: "classic"
terms
string
optional
Customer-facing reward eligibility and redemption terms.
timezone
string
optional
IANA timezone used for birthday rewards and reporting; default America/Chicago.
program_id
string (uuid)
required
Program to update in the active account.
status
"draft" | "active" | "paused" | "archived"
optional
active opens enrollment and earning; paused or archived closes those actions, preserving redemption history.
expected_version
integer
optional
Optional optimistic concurrency version returned by get_program; refuses an overwritten edit.
Over MCP the same operation is the tool loyalty_update_program at https://app.chirply.io/api/mcp, same bearer token, same input.
View wallet setup
loyalty.wallet_readinessread
Read Apple Wallet and Google Wallet configuration readiness, required setup and provider limitations. Returns no private credentials and does not claim publishing approval or install a pass.