← All action domains

Firstpromoter

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

Stop a FirstPromoter import

firstpromoter.cancel_importwriteconfirmadmin only

Stop the import that is currently running. Everything it already brought across STAYS — stopping does not undo an import, and there is no action that does. Starting a new import later resumes from a clean read rather than from where this one stopped.

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

FieldTypeRequiredDescription
import_idstring (uuid)optionalThe import to stop. Omit for the one currently running.

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.cancel_import \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "import_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool firstpromoter_cancel_import at https://app.chirply.io/api/mcp, same bearer token, same input.

FirstPromoter import progress

firstpromoter.get_importread

How far a FirstPromoter import has got: which stage it is on, the percentage complete, how many records have come across and how many need a human to look at them. Omit the import id for the one currently running. Reads only — this does NOT push the import forward.

Parameters

FieldTypeRequiredDescription
import_idstring (uuid)optionalThe import to report on. Omit for the one currently running, if any.

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.get_import \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "import_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool firstpromoter_get_import at https://app.chirply.io/api/mcp, same bearer token, same input.

Import from FirstPromoter

firstpromoter.importwriteconfirmadmin only

Bring the connected FirstPromoter account across: its campaigns become affiliate programs here, its promoters become affiliates (keeping their FirstPromoter referral codes so links they have already published still work), and their referred customers, commission ledger and payout history come with them. THIS WRITES REAL MONEY RECORDS — imported commissions appear as amounts this account owes its affiliates, and imported payouts appear in its payment history. Safe to run more than once: it updates what it brought last time rather than duplicating it. Imported programs are created PAUSED and nothing is attributed to anybody until tracking is switched over separately. Returns immediately; the import continues in the background.

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

FieldTypeRequiredDescription
include_referralsbooleanoptionalBring the referred leads and customers across. Default: true
include_commissionsbooleanoptionalBring the commission ledger across. Turning this off means the affiliates arrive owed nothing here, whatever FirstPromoter says they are owed. Default: true
include_payoutsbooleanoptionalBring the history of payouts already made across, so past payments are not repeated by mistake. Default: true
currencystringoptionalISO 4217 currency for the imported money, lowercase. FirstPromoter reports amounts in minor units without naming a currency, so this says which one they are in. Default: "usd"

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.import \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "include_referrals": true,
    "include_commissions": true
  }'
Test with your API key

Over MCP the same operation is the tool firstpromoter_import at https://app.chirply.io/api/mcp, same bearer token, same input.

List import issues

firstpromoter.list_import_issuesread

Everything a FirstPromoter import could NOT bring across exactly as it was, one entry each, with the FirstPromoter id so it can be looked up on their side. Read this before switching tracking over: each entry is either money that has not moved (a reward paid in credits rather than cash, a commission whose promoter could not be matched) or a referral code that will not resolve to the person who published it.

Parameters

FieldTypeRequiredDescription
import_idstring (uuid)optionalThe import to read issues for. Omit for the most recent one.
limitintegeroptionalHow many issues to return, newest first. Default: 100

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.list_import_issues \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "import_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "limit": 100
  }'
Test with your API key

Over MCP the same operation is the tool firstpromoter_list_import_issues at https://app.chirply.io/api/mcp, same bearer token, same input.

Preview a FirstPromoter import

firstpromoter.previewwriteadmin only

Read the connected FirstPromoter account and count what an import WOULD bring across — campaigns, affiliates, referred customers, commissions and payouts. Writes nothing to this account and changes nothing in FirstPromoter. Spends a little of the FirstPromoter account's own API quota. Returns immediately; the preview keeps running in the background, so poll firstpromoter.get_import for the result.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.preview \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool firstpromoter_preview at https://app.chirply.io/api/mcp, same bearer token, same input.

Hourly FirstPromoter refresh

firstpromoter.set_hourly_refreshwriteadmin only

Turn the automatic hourly read of FirstPromoter on or off, so the roster and ledger shown here stay in step with theirs. Each refresh spends a little of the FirstPromoter account's own API quota. It cannot be switched on once tracking has moved to this account: a refresh then would write FirstPromoter's older figures over commission earned here since.

Parameters

FieldTypeRequiredDescription
enabledbooleanrequiredTrue to refresh every hour, false to refresh only on request.

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.set_hourly_refresh \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true
  }'
Test with your API key

Over MCP the same operation is the tool firstpromoter_set_hourly_refresh at https://app.chirply.io/api/mcp, same bearer token, same input.

Choose who tracks affiliates

firstpromoter.set_tracking_ownerwriteconfirmadmin only

Decide which system records affiliate clicks and signups from now on. Set to `this_account` and this account's own website tracking script starts attributing referrals — including every link already published with a FirstPromoter referral code, because the import kept those codes — and FirstPromoter is no longer needed for tracking. Set to `firstpromoter` to hand it back. THIS DECIDES WHO GETS PAID FOR EVERY FUTURE SALE. Only one system attributes at a time, on purpose: two would credit the same sale twice and pay the affiliate twice. Switching to `this_account` requires a completed import first, because the referral codes that keep published links working are created BY the import. Nothing is deleted either way, and it can be switched back.

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

FieldTypeRequiredDescription
owner"this_account" | "firstpromoter"required`this_account` to track here and stop needing FirstPromoter; `firstpromoter` to hand tracking back to them.

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.set_tracking_owner \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "owner": "this_account"
  }'
Test with your API key

Over MCP the same operation is the tool firstpromoter_set_tracking_owner at https://app.chirply.io/api/mcp, same bearer token, same input.

FirstPromoter status

firstpromoter.statusread

Whether FirstPromoter is connected to this account, which system is currently recording affiliate clicks and signups (FirstPromoter, or this account's own tracking), when this account last read FirstPromoter, whether an import is running right now, and the last few imports with what each one brought across. Reads only — nothing is imported or changed.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/firstpromoter.status \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool firstpromoter_status at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=firstpromoter — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.