39 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 an affiliate
affiliate_program.add_affiliatewriteadmin only
Recruit an affiliate by hand (they normally join through the program's public signup link). Mints their referral code, portal link, and default tracked link. The result includes their portal URL — a private bearer link to send to that person, and only that person.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
required
The program to add them to.
name
string
required
The affiliate's name — also seeds their referral code.
email
string (email)
optional
Their email. One signup per email per program.
contact_id
string (uuid)
optional
Link them to an existing CRM contact.
parent_affiliate_id
string (uuid)
optional
The affiliate who recruited them (their tier-2 upline), by id.
parent_code
string
optional
The recruiting affiliate's referral code — an alternative to parent_affiliate_id.
status
"pending" | "active" | "paused" | "banned"
optional
Override the program's auto-approval: e.g. 'active' to approve immediately or 'pending' to hold.
override_reward_percent
number
optional
A personal rate replacing the program percent for this affiliate's future referrals.
paypal_email
string (email)
optional
Where their payouts go by default.
notes
string
optional
Private notes about this affiliate (never shown to them).
Over MCP the same operation is the tool affiliate_program_add_affiliate at https://app.chirply.io/api/mcp, same bearer token, same input.
Add a referral
affiliate_program.add_referralwriteadmin only
Manually credit a person to an affiliate — for deals that arrived outside the tracked links (a phone call, a conference). Snapshots the program's current reward terms onto the referral; when this person later pays, those terms decide the commission. First touch wins: if the person is already a referral, the existing attribution is returned unchanged.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
required
The program the referral belongs to.
affiliate_id
string (uuid)
optional
The affiliate to credit, by id.
affiliate_code
string
optional
The affiliate to credit, by referral code — an alternative to affiliate_id.
email
string (email)
optional
The referred person's email — how later payments find them.
name
string
optional
The referred person's name.
contact_id
string (uuid)
optional
Link to an existing CRM contact.
stripe_customer_id
string
optional
Their Stripe customer id, so Stripe payments attribute automatically.
stripe_subscription_id
string
optional
Their Stripe subscription id, for renewal attribution.
Over MCP the same operation is the tool affiliate_program_approve_commission at https://app.chirply.io/api/mcp, same bearer token, same input.
Archive program
affiliate_program.archive_programwriteconfirmadmin only
Archive a program: its signup page and referral links stop working and no new clicks, referrals, or commissions are tracked. Existing referrals keep their snapshots and commission already earned STAYS OWED — archiving stops future tracking, it does not void money. There is no unarchive in the UI, so treat this as final.
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 affiliate_program_archive_program at https://app.chirply.io/api/mcp, same bearer token, same input.
Ban affiliate
affiliate_program.ban_affiliatewriteconfirmadmin only
Ban an affiliate — an outward-facing action against a real person: their portal login stops working immediately, their links stop earning, and they can't be paid out while banned. Use for fraud or terms violations; use 'Pause affiliate' for anything temporary.
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 affiliate_program_ban_affiliate at https://app.chirply.io/api/mcp, same bearer token, same input.
Cancel contest
affiliate_program.cancel_contestwriteconfirmadmin only
Call off a draft or active contest as if it never happened: no winners are computed, no prizes are owed, and it disappears from every affiliate's portal. Affiliates who were competing lose the contest they were told about — an outward-facing disappointment — and there is no undo.
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 affiliate_program_cancel_contest at https://app.chirply.io/api/mcp, same bearer token, same input.
Cancel payout
affiliate_program.cancel_payoutwriteadmin only
Call off a payout that hasn't been sent yet: the commissions it claimed return to 'approved' and the affiliate's payable balance is restored. A payout already marked paid can't be canceled.
Over MCP the same operation is the tool affiliate_program_cancel_payout at https://app.chirply.io/api/mcp, same bearer token, same input.
New contest
affiliate_program.create_contestwriteadmin only
Create an affiliate contest as a DRAFT — a time-boxed competition with a metric, a window, and prizes by rank. Drafts are invisible to affiliates and cost nothing until you start them (affiliate_program.start_contest); the prizes are your own commitment to deliver, outside Chirply. Ties share a rank and every affiliate tied at a prized rank wins that prize.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
The program the contest runs inside. Optional when the account runs exactly one program.
name
string
required
The contest's name, e.g. 'March Madness'.
description
string
optional
Plain-English pitch shown to affiliates on their leaderboard page.
Over MCP the same operation is the tool affiliate_program_create_contest at https://app.chirply.io/api/mcp, same bearer token, same input.
Pay an affiliate
affiliate_program.create_payoutwriteconfirmadmin only
Create a payout for an affiliate's approved commission — a COMMITMENT TO PAY REAL MONEY to a real person. Claims their approved commissions (oldest first, whole rows only, up to the optional cap) and marks them paid. The money itself moves outside Chirply (PayPal, bank transfer); mark the payout paid once it's sent, or cancel it to release the balance.
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
affiliate_id
string (uuid)
required
Who to pay.
amount_cents
integer
optional
Cap in cents. Omit to pay their full approved balance. A payout always covers whole commissions, so the actual amount may be lower.
method
"paypal" | "stripe" | "bank" | "manual" | "other"
required
How the money will be sent: paypal, stripe, bank, manual, or other. paypal and stripe can then be sent automatically with affiliate_program.send_payout; the rest you send yourself and mark paid.
destination
string
optional
PayPal email or bank reference. Defaults to the affiliate's saved PayPal email.
Over MCP the same operation is the tool affiliate_program_create_payout at https://app.chirply.io/api/mcp, same bearer token, same input.
Create program
affiliate_program.create_programwriteconfirmadmin only
Create an affiliate program (a campaign) for this account's own products: the offer (percent or flat per sale, one-time or recurring, optionally a multi-level ladder up to 10 levels deep), cookie window, approval and payout settings. THIS COMMITS REAL MONEY: the account owes the stated commission on every referred sale from the moment it exists, its signup URL is publicly live immediately, and commission rates are never backdated — so an over-generous rate cannot be corrected on referrals already captured under it.
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
required
The program's name, e.g. 'Acme Partner Program'.
terms
string
optional
Plain-English terms shown verbatim to affiliates on the join page.
reward_kind
"percent" | "flat"
optional
How the reward is computed: a percent of each sale, or a flat amount per sale. Default: "percent"
reward_percent
number
optional
Percent of each referred payment the affiliate earns (percent programs). Default 20.
reward_flat_cents
integer
optional
Flat reward per sale, in cents (flat programs).
tiers
object[]
optional
The full commission ladder, level 1 first (up to 10 levels). Level 1 pays the affiliate who referred the customer; level 2 pays the affiliate who recruited THEM; level N pays the person N-1 recruitment steps up the chain. When given, this ladder IS the deal — the single-rate and tier-2 fields are ignored.
tiers[].percent
number
optional
This level's share of each referred payment, as a percent (0–100). Give percent OR flat_cents, not both.
tiers[].flat_cents
integer
optional
This level's fixed reward per sale, in cents (5000 = $50.00). When both are somehow set, flat_cents wins.
currency
string
optional
ISO currency code for flat rewards and payouts, e.g. 'usd'. Default usd.
recurring
boolean
optional
True (default) pays on renewals too; false pays on the first sale only.
duration_months
integer (or null)
optional
How many months recurring commission runs from the first sale. Null (default) = for life.
tier2_enabled
boolean
optional
Also pay a second-tier reward to the affiliate who recruited the referring affiliate. Default off.
tier2_percent
number (or null)
optional
Tier-2 percent of each referred payment (percent programs with tier 2 on).
tier2_flat_cents
integer (or null)
optional
Tier-2 flat reward per sale, in cents (flat programs with tier 2 on).
cookie_days
integer
optional
How many days a click keeps crediting the affiliate. Default 90.
auto_approve_affiliates
boolean
optional
True (default) activates new signups instantly; false holds them pending your approval.
auto_approve_commissions
boolean
optional
True approves commissions automatically once their hold clears; false (default) waits for you to approve each one.
hold_days
integer
optional
Days a new commission waits (refund window) before it can be approved. Default 30.
Over MCP the same operation is the tool affiliate_program_create_program at https://app.chirply.io/api/mcp, same bearer token, same input.
Email affiliates
affiliate_program.email_affiliateswriteconfirmadmin only
Queues a personalized email to every affiliate matching the chosen campaigns and statuses. This is REAL email to real people, sent from this account's own verified sending address and billed to its own Mailgun/Resend account. Subject and body support {{merge_fields}} and are rendered per affiliate, so each person gets their own referral link, code and balance. Affiliates who unsubscribed are skipped and the account's unsubscribe footer is added; affiliates with no email address are skipped too. The send runs as a background job so it can be paced, watched, paused or resumed, and start_at schedules it for later instead of sending now. Call affiliate_program.preview_email_audience first to see how many people that is.
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
subject
string
required
The subject line. Supports merge fields, e.g. {{campaign}}.
body
string
required
The message, as plain text. Blank lines become paragraphs and bare URLs become links. Supports merge fields such as {{first_name}} and {{referral_link}} - affiliate_program.preview_email_audience lists them all.
program_ids
array of (string (uuid))
optional
Only affiliates on these campaigns. Omit for every campaign.
statuses
array of ("pending" | "active" | "paused" | "banned")
optional
Which affiliate statuses to email. Defaults to active only, the people actually promoting. Default: ["active"]
email_identity_id
string (uuid)
optional
Send from this account's sending address with this id. Omit to use the account default.
email_pool_id
string (uuid)
optional
Send through an email pool instead of one address, rotating least-used-first. Wins over email_identity_id. The pool's warmup allowance caps how much goes out per day.
start_at
string (date-time) (or null)
optional
When this should START, as an ISO 8601 timestamp with a timezone (e.g. 2026-08-20T14:00:00Z). Omit or null to start immediately. A time in the past starts immediately. The job waits in the account's Jobs list until then and can be rescheduled or canceled before it starts.
per_minute
integer (or null)
optional
Cap on items sent per minute. null removes the per-minute cap.
per_hour
integer (or null)
optional
Cap on items sent per hour. null removes the per-hour cap.
per_day
integer (or null)
optional
Cap on items sent per day. null removes the per-day cap.
Over MCP the same operation is the tool affiliate_program_email_affiliates at https://app.chirply.io/api/mcp, same bearer token, same input.
End contest & announce winners
affiliate_program.end_contestwriteconfirmadmin only
End an active contest NOW and FREEZE the final standings as its winners, with prizes attached by rank — affiliates see the result on their portals immediately. This is permanent: an announced result never changes, even if more sales land later, and the prizes you promised are now owed to real people. Ending before the scheduled close counts only what happened up to this moment.
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 affiliate_program_end_contest at https://app.chirply.io/api/mcp, same bearer token, same input.
Open an affiliate
affiliate_program.get_affiliateread
Fetch one affiliate with everything a manager sees: profile and status, their shareable referral link(s), their private portal URL (a bearer link — anyone holding it sees their dashboard, so share it only with the affiliate themself), and their commission balance.
Over MCP the same operation is the tool affiliate_program_get_affiliate at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a contest
affiliate_program.get_contestread
Fetch one contest with its full setup (metric, window, prizes) and its standings: LIVE standings computed over the contest window while it's a draft or active, or the FROZEN winners once it has ended. Names here are the affiliates' real names — this is a manager surface; the affiliates' own portals show peers masked.
Over MCP the same operation is the tool affiliate_program_get_contest at https://app.chirply.io/api/mcp, same bearer token, same input.
Leaderboard
affiliate_program.get_leaderboardread
The always-on affiliate leaderboard for a program — top active affiliates ranked by a metric over the last 30 days or all time, ties sharing a rank. Names here are real (this is a manager surface); on the affiliates' own portals every peer appears masked as first name + last initial. Affiliates who chose 'Hide me from the leaderboard' are left off this board too — it's a display surface, unlike contest standings which always count everyone.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Which program's board. Optional when the account runs exactly one program.
Over MCP the same operation is the tool affiliate_program_get_leaderboard at https://app.chirply.io/api/mcp, same bearer token, same input.
Payout rails
affiliate_program.get_payout_railsread
Check whether this account can pay affiliates automatically, and (optionally) where one affiliate stands: is PayPal connected, is Stripe connected, and for a given affiliate their saved payout method, PayPal email, and Stripe Connect onboarding status (none / onboarding / active / restricted — payouts only flow once it's active). The readiness card on the payouts page walks through the same prerequisites, including the one thing this can't verify from here: Stripe Connect must also be enabled on your own Stripe dashboard.
Parameters
Field
Type
Required
Description
affiliate_id
string (uuid)
optional
Also report this affiliate's saved method and per-rail readiness.
Over MCP the same operation is the tool affiliate_program_get_payout_rails at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a program
affiliate_program.get_programread
Fetch one affiliate program with all of its settings — reward terms, tier-2 terms, cookie window, approval switches, hold days, minimum payout — plus its public signup URL.
Over MCP the same operation is the tool affiliate_program_get_program at https://app.chirply.io/api/mcp, same bearer token, same input.
Get signup link
affiliate_program.get_signup_linkread
The public 'become an affiliate' URL for a program — the link to share anywhere you recruit affiliates. Anyone who opens it can apply to join the program (auto-approved if the program is set that way), so treat it as public.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Which program's signup link. Optional when the account runs exactly one program.
Over MCP the same operation is the tool affiliate_program_get_signup_link at https://app.chirply.io/api/mcp, same bearer token, same input.
List affiliates
affiliate_program.list_affiliatesread
List the affiliates recruited into this account's program(s) — name, email, referral code, status, and custom rate — filterable by program and status, searchable by name, email, or code. Portal tokens are never included in lists; open one affiliate to get their portal link.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Only affiliates in this program.
status
"pending" | "active" | "paused" | "banned"
optional
Only affiliates in this status (pending = awaiting approval, banned = removed).
query
string
optional
Text to match against name, email, or referral code.
limit
integer
optional
Max rows to return (1–500), newest first. Default: 50
Over MCP the same operation is the tool affiliate_program_list_affiliates at https://app.chirply.io/api/mcp, same bearer token, same input.
List commissions
affiliate_program.list_commissionsread
List the commission ledger — one row per tier per referred payment, with amount, status, and when it clears its hold. Pending + approved rows are real money the account owes its affiliates. Filterable by program, affiliate, and status.
Only commissions in this status (pending = in the hold window, approved = cleared for payout, paid = inside a payout, reversed = clawed back on refund, rejected = refused).
limit
integer
optional
Max rows to return (1–500), newest first. Default: 50
Over MCP the same operation is the tool affiliate_program_list_commissions at https://app.chirply.io/api/mcp, same bearer token, same input.
List contests
affiliate_program.list_contestsread
List this account's affiliate contests — time-boxed competitions ('most new customers this month wins $500') with live standings on every affiliate's portal. Each row includes its status (draft = not visible yet, active = live and counting, ended = winners frozen, canceled = never happened), metric, window, and prizes.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Only contests in this program.
status
"draft" | "active" | "ended" | "canceled"
optional
Only contests in this status (draft = not visible to affiliates yet, active = running, ended = winners announced, canceled = called off).
limit
integer
optional
Max contests to return (1–200), newest first. Default: 50
Over MCP the same operation is the tool affiliate_program_list_contests at https://app.chirply.io/api/mcp, same bearer token, same input.
List payouts
affiliate_program.list_payoutsread
List payouts to affiliates — amount, method, destination, and status. A pending payout has claimed its commissions but the money hasn't been sent yet. Filterable by affiliate, program, and status.
Over MCP the same operation is the tool affiliate_program_list_payouts at https://app.chirply.io/api/mcp, same bearer token, same input.
List programs
affiliate_program.list_programsread
List this account's affiliate programs — the offers it runs (reward terms, cookie window, approval and payout settings) — each with its public signup URL.
Parameters
Field
Type
Required
Description
include_archived
boolean
optional
Also include archived programs, which no longer track new activity. Default: false
Over MCP the same operation is the tool affiliate_program_list_programs at https://app.chirply.io/api/mcp, same bearer token, same input.
List referrals
affiliate_program.list_referralsread
List the people affiliates have referred — leads and customers — with the reward terms snapshot each referral locked in at capture time. Filterable by program, affiliate, and status.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Only referrals in this program.
affiliate_id
string (uuid)
optional
Only referrals credited to this affiliate.
status
"lead" | "customer" | "churned" | "rejected"
optional
Only referrals in this status (lead = hasn't paid yet, customer = has paid, churned = cancelled, rejected = disowned).
limit
integer
optional
Max rows to return (1–500), newest first. Default: 50
Over MCP the same operation is the tool affiliate_program_list_referrals at https://app.chirply.io/api/mcp, same bearer token, same input.
Mark payout paid
affiliate_program.mark_payout_paidwriteconfirmadmin only
Confirm the money actually left — the PayPal send or bank transfer happened. Stamps who processed it and when, and settles the affiliate's balance so those commissions are never queued for payment again. It does not move money itself, which is exactly the risk: marking a payout paid that was never sent quietly writes off what the account still owes a real person, and there is no un-mark.
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 affiliate_program_mark_payout_paid at https://app.chirply.io/api/mcp, same bearer token, same input.
Affiliate program overview
affiliate_program.overviewread
Headline numbers for this account's own affiliate program (the program it runs for its products, not Chirply's): affiliate counts by status, clicks, referrals, referred customers, commission totals by status, and the top-earning affiliates. Optionally narrowed to one program or a start date.
Parameters
Field
Type
Required
Description
program_id
string (uuid)
optional
Only this program's numbers. Omit for all programs combined.
since
string (date-time)
optional
Only count activity on or after this ISO 8601 timestamp.
Over MCP the same operation is the tool affiliate_program_overview at https://app.chirply.io/api/mcp, same bearer token, same input.
Pause affiliate
affiliate_program.pause_affiliatewriteadmin only
Pause an affiliate: new clicks on their links stop earning attribution until they're approved again. Their existing referrals and earned commission are untouched.
Over MCP the same operation is the tool affiliate_program_pause_affiliate at https://app.chirply.io/api/mcp, same bearer token, same input.
Preview who an affiliate email would reach
affiliate_program.preview_email_audienceread
Counts the affiliates a broadcast would go to, without sending anything: how many match the chosen campaigns and statuses, and how many of those actually have an email address on file. The second number is the real send size, because affiliates with no address are skipped. Also lists the merge fields an affiliate email can fill. Run this before affiliate_program.email_affiliates to see exactly what that call would do.
Parameters
Field
Type
Required
Description
program_ids
array of (string (uuid))
optional
Only affiliates on these campaigns. Omit for every campaign.
statuses
array of ("pending" | "active" | "paused" | "banned")
optional
Which affiliate statuses to include. Defaults to active only, the people actually promoting. Default: ["active"]
Over MCP the same operation is the tool affiliate_program_preview_email_audience at https://app.chirply.io/api/mcp, same bearer token, same input.
Record a sale
affiliate_program.record_salewriteconfirmadmin only
Record a referred payment by hand and write the commission it earns — REAL MONEY the account then owes its affiliate(s), one ledger row per tier, at the terms snapshot on the referral. Use for sales that happened outside connected Stripe. Supply external_ref to make retries safe: the same reference is never recorded 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
amount_cents
integer
required
What the customer paid, in cents — commission is computed from this.
currency
string
optional
ISO currency code. Defaults to the program's.
referral_id
string (uuid)
optional
The referral this payment belongs to, when known.
stripe_customer_id
string
optional
Find the referral by Stripe customer instead.
stripe_subscription_id
string
optional
Find the referral by Stripe subscription instead.
email
string (email)
optional
Find the referral by the customer's email instead.
program_id
string (uuid)
optional
Narrows an email match when the account runs several programs.
kind
"sale" | "renewal" | "bonus" | "adjustment"
optional
What kind of payment this is. Omit to infer: first payment = sale, later = renewal.
external_ref
string
optional
Your idempotency key — an invoice or order id. Strongly recommended; the same reference is only ever recorded once.
Over MCP the same operation is the tool affiliate_program_record_sale at https://app.chirply.io/api/mcp, same bearer token, same input.
Reject commission
affiliate_program.reject_commissionwriteconfirmadmin only
Refuse a pending or approved commission (fraud, dispute, self-referral) — the affiliate permanently loses this money from their balance. Already-paid commissions can't be rejected.
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 affiliate_program_reject_commission at https://app.chirply.io/api/mcp, same bearer token, same input.
Send payout
affiliate_program.send_payoutwriteconfirmadmin only
Send a pending payout down its rail RIGHT NOW — this moves real money from your own PayPal or Stripe account to the affiliate immediately. The rail is the affiliate's saved payout method unless you override it: 'paypal' sends a PayPal payout from your connected PayPal (settles within minutes), 'stripe' transfers out of your own Stripe balance into the affiliate's Stripe account instantly, and 'manual' just records that you already sent the money yourself. If the provider refuses, the payout is marked failed and the claimed commissions are released back to the affiliate's balance so nothing is silently swallowed.
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
payout_id
string (uuid)
required
The pending payout to send (create one with affiliate_program.create_payout).
method
"paypal" | "stripe" | "manual"
optional
Override the affiliate's saved payout method for this send only — e.g. pay by Stripe once while their bouncing PayPal address gets fixed. Omit to use their saved method.
Over MCP the same operation is the tool affiliate_program_send_payout at https://app.chirply.io/api/mcp, same bearer token, same input.
Special deal
affiliate_program.set_affiliate_dealwriteconfirmadmin only
Give one affiliate a personal deal that replaces the campaign's standard terms — their own multi-level commission ladder, and/or their own recurring window. THIS CHANGES WHAT A REAL PERSON EARNS on referrals they capture FROM NOW ON, and never touches the past: every referral already captured keeps the terms it locked in, so a deal set by mistake cannot be reversed for anything captured while it stood. Pass null for a field to clear it back to the campaign's terms (an affiliate with no overrides simply follows the campaign, so raising the campaign later raises them too).
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
affiliate_id
string (uuid)
required
The affiliate whose personal deal to set.
override_tiers
object[] (or null)
optional
A personal commission ladder replacing the campaign's ENTIRE ladder for this person's future referrals (level 1 first, up to 10 levels). Null clears it — they go back to the campaign's ladder.
override_tiers[].percent
number
optional
This level's share of each referred payment, as a percent (0–100). Give percent OR flat_cents, not both.
override_tiers[].flat_cents
integer
optional
This level's fixed reward per sale, in cents (5000 = $50.00). When both are somehow set, flat_cents wins.
override_recurring
boolean (or null)
optional
Personally pay them on renewals too (true) or on the first sale only (false), regardless of the campaign setting. Null clears back to the campaign's setting.
override_duration_months
integer (or null)
optional
Personally how many months their recurring commission runs from each referral's first sale (1–120). Null clears back to the campaign's window.
Over MCP the same operation is the tool affiliate_program_set_affiliate_deal at https://app.chirply.io/api/mcp, same bearer token, same input.
Set custom rate
affiliate_program.set_affiliate_ratewriteconfirmadmin only
Give one affiliate a personal commission percent that replaces the program's percent, or clear it back to the program rate. THIS CHANGES WHAT A REAL PERSON IS PAID. It applies to referrals they capture FROM NOW ON — existing referrals keep the terms they locked in, because rates are never backdated, so neither a raise nor a cut can be undone for anything captured while it stood.
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
affiliate_id
string (uuid)
required
The affiliate whose rate to set.
percent
number (or null)
required
Their personal percent per referred payment. Null clears the override back to the program rate.
Over MCP the same operation is the tool affiliate_program_set_affiliate_rate at https://app.chirply.io/api/mcp, same bearer token, same input.
Set payout method
affiliate_program.set_payout_methodwriteconfirmadmin only
Save how an affiliate gets paid from now on: 'paypal' (automatic PayPal payout to their saved email), 'stripe' (automatic transfer to the Stripe account they set up from their portal), or 'manual' (a human sends the money and marks it paid). THIS DECIDES WHERE REAL MONEY GOES — affiliate_program.send_payout follows whatever is stored here — and it overwrites the previous setting with no record of it. Changes future sends only; payouts already on their way are untouched.
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
affiliate_id
string (uuid)
required
The affiliate whose payout method to set.
method
"paypal" | "stripe" | "manual"
required
How their payouts go out: paypal (needs their PayPal email on file), stripe (needs their Stripe onboarding finished), or manual.
Over MCP the same operation is the tool affiliate_program_set_payout_method at https://app.chirply.io/api/mcp, same bearer token, same input.
Start contest
affiliate_program.start_contestwriteconfirmadmin only
Take a draft contest live: it appears on every affiliate's portal leaderboard page and the standings start counting over its window. This is OUTWARD-FACING and it PROMISES A PRIZE — every ACTIVE affiliate is entered automatically, including ones who hide themselves from the always-on leaderboard, and they will see the contest and its stated reward. Starting one by accident commits the account to it in front of everybody.
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 affiliate_program_start_contest at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit affiliate details
affiliate_program.update_affiliatewriteconfirmadmin only
Update one affiliate's payout email, private notes, or personal commission rate — mirroring the 'Payout details & notes' editor on their detail page. paypal_email is where affiliate_program.create_payout defaults their payout to when no destination is given, so a wrong address bounces the payment or pays a stranger; confirm it with the affiliate before saving. notes are private and never shown to the affiliate. override_reward_percent does the same job as affiliate_program.set_affiliate_rate (kept working for compatibility) — it applies to referrals they capture FROM NOW ON, never to ones already snapshot. Omitted fields are left alone; pass null to clear paypal_email, notes, or override_reward_percent back to unset.
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
affiliate_id
string (uuid)
required
The affiliate to edit.
paypal_email
string (email) (or null)
optional
Where their payouts default to. Null clears it — confirm the address with the affiliate before setting it.
notes
string (or null)
optional
Private notes about this affiliate, never shown to them. Null clears them.
override_reward_percent
number (or null)
optional
Their personal commission percent, replacing the program's percent for FUTURE referrals only. Null clears it back to the program rate. Same field affiliate_program.set_affiliate_rate writes — use either.
Over MCP the same operation is the tool affiliate_program_update_affiliate at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit contest
affiliate_program.update_contestwriteadmin only
Update a draft or active contest's setup — name, description, metric, window, or prizes. Omitted fields are left alone. An ended or canceled contest can't be edited: a result that has been announced is history.
Over MCP the same operation is the tool affiliate_program_update_contest at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit program
affiliate_program.update_programwriteconfirmadmin only
Update a program's settings — name, terms, reward (including the multi-level ladder), cookie window, approval switches, hold days, minimum payout, destination URL, or pause/resume it. Omitted fields are left alone. THIS CHANGES WHAT THE WORKSPACE OWES on every sale from now on, and the public signup and terms pages change with it. Rate changes apply to NEW referrals only — every existing referral keeps the terms it was captured under, so a rate raised by mistake cannot be walked back on referrals captured in the meantime.
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
The program to edit.
name
string
optional
New name.
status
"active" | "paused"
optional
Set 'paused' to stop new clicks and signups without archiving; 'active' to resume.
terms
string (or null)
optional
Plain-English terms shown to affiliates.
reward_kind
"percent" | "flat"
optional
Percent of sale, or flat per sale.
reward_percent
number
optional
Percent of each referred payment.
reward_flat_cents
integer
optional
Flat reward per sale, in cents.
tiers
object[]
optional
The full commission ladder, level 1 first (up to 10 levels). Level 1 pays the affiliate who referred the customer; level 2 pays the affiliate who recruited THEM; level N pays the person N-1 recruitment steps up the chain. When given, this ladder IS the deal — the single-rate and tier-2 fields are ignored.
tiers[].percent
number
optional
This level's share of each referred payment, as a percent (0–100). Give percent OR flat_cents, not both.
tiers[].flat_cents
integer
optional
This level's fixed reward per sale, in cents (5000 = $50.00). When both are somehow set, flat_cents wins.
currency
string
optional
ISO currency code, e.g. 'usd'.
recurring
boolean
optional
Pay on renewals too, or first sale only.
duration_months
integer (or null)
optional
Months the recurring window runs. Null = for life.
tier2_enabled
boolean
optional
Pay a second tier to the recruiting affiliate.
tier2_percent
number (or null)
optional
Tier-2 percent.
tier2_flat_cents
integer (or null)
optional
Tier-2 flat cents.
cookie_days
integer
optional
Days a click keeps crediting the affiliate.
auto_approve_affiliates
boolean
optional
Activate new signups instantly.
auto_approve_commissions
boolean
optional
Approve commissions automatically once their hold clears.