Public REST/JSON reference
Churn Risk API
Before an account churns, it goes quiet — login frequency drops, support volume spikes, invoice cycles lengthen. This API ingests billing/support/usage signals from your stack, scores any account 0–100 on those signals, returns the top three drivers, and recommends a CSM playbook (outreach / account review / executive escalation / self-serve campaign). Track interventions, measure outcomes, prove retention impact. Part of the Logic Igniter SaaS Growth & Retention bundle.
Access boundary
These examples describe public API calls only. Use the service output to review, score, summarize, analyze, or recommend; do not treat the API reference as permission for an assistant to write, send, publish, charge, schedule, notify, delete, or modify records.
Base URL
https://api.logicigniter.comAuth
Authorization: Bearer YOUR_API_KEYVersion
OpenAPI 3.0.3 · 1.0.0Operations rendered
16
Response models rendered
24
/api/v1/churnrisk/healthService liveness
Liveness probe — returns 200 if the service is reachable.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/health" \ -H "Accept: application/json"
Responses
200Service healthy
/api/v1/churnrisk/customersList customers
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/customers" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of customers
401ErrorMissing or invalid API key.
/api/v1/churnrisk/customersProvision a customer
Idempotent customer provision.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request body (required)
Schema: CreateCustomerRequest
Sample JSON payload for evaluation.
{
"email": "[email protected]",
"name": "Example Inc."
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/churnrisk/customers" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","name":"Example Inc."}'/api/v1/churnrisk/customers/{id}Get a customer by id
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/customers/:id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/churnrisk/customers/{id}Update a customer
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request body (required)
Schema: UpdateCustomerRequest
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X PUT "https://api.logicigniter.com/api/v1/churnrisk/customers/:id" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/churnrisk/accounts/{account_id}/riskGet risk for one account
Returns the composite churn-risk score (0–100) plus per-source sub-scores (billing/support/usage), the resulting tier, and when the score was last computed.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/risk" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
200AccountRiskAccount risk
401ErrorMissing or invalid API key.
402ErrorEndpoint requires an active subscription. Free tier covers signal listing for up to 50 accounts; paid plans unlock unlimited scoring, recalculation, playbook recommendations, and intervention tracking.
404ErrorAccount not found or never scored
/api/v1/churnrisk/risk-scoresList scored accounts
Workspace-wide list of scored accounts. Optionally filter to a single tier — most useful when wiring a `WATCH+AT_RISK+CRITICAL` queue into your CSM playbook.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
tier_filter | query | RiskTier | |
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/risk-scores" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of account risks
401ErrorMissing or invalid API key.
/api/v1/churnrisk/accounts/{account_id}/risk-trendRisk score trend for an account
Time-series of the account's composite score and tier. Useful for showing whether an intervention moved the needle.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/risk-trend" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/churnrisk/accounts/{account_id}/recalculateForce a recalculation
Trigger an immediate re-score for an account using the latest signals. Useful right after a known signal change (e.g. just resolved a support escalation).
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/recalculate" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/churnrisk/accounts/{account_id}/signalsList all raw signals for an account
Paginated stream of every individual signal recorded for the account — useful for audit trails and debugging the score.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) | |
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/signals" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/churnrisk/accounts/{account_id}/signals/billingBilling signals for an account
Aggregated billing-source signals: downgrades, failed payments, current MRR (cents), upcoming renewal date.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/signals/billing" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/churnrisk/accounts/{account_id}/signals/supportSupport signals for an account
Aggregated support-source signals: ticket volume in the last 30 days, average satisfaction (CSAT), escalation count.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/signals/support" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/churnrisk/accounts/{account_id}/signals/usageUsage signals for an account
Aggregated usage-source signals: 30-day login count, feature breadth percentage, session-duration trend.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/signals/usage" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/churnrisk/accounts/{account_id}/playbookRecommended playbook for an account
Returns the best next-action playbook (CSM outreach / account review / executive escalation / self-serve campaign) plus a description and a checklist of action items.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/playbook" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
200PlaybookRecommended playbook
401ErrorMissing or invalid API key.
402ErrorEndpoint requires an active subscription. Free tier covers signal listing for up to 50 accounts; paid plans unlock unlimited scoring, recalculation, playbook recommendations, and intervention tracking.
404ErrorAccount not found
/api/v1/churnrisk/accounts/{account_id}/interventionsRecord an intervention
Log that you've executed a playbook against an account. Returns an intervention id used for outcome lookup later.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
account_idrequired | path | string (uuid) |
Request body (required)
Schema: InterventionRequest
Sample JSON payload for evaluation.
{
"playbook_type": "PLAYBOOK_TYPE_CSM_OUTREACH"
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/churnrisk/accounts/:account_id/interventions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"playbook_type":"PLAYBOOK_TYPE_CSM_OUTREACH"}'Responses
Intervention recorded
400ErrorInvalid playbook_type
401ErrorMissing or invalid API key.
402ErrorEndpoint requires an active subscription. Free tier covers signal listing for up to 50 accounts; paid plans unlock unlimited scoring, recalculation, playbook recommendations, and intervention tracking.
404ErrorAccount not found
/api/v1/churnrisk/interventions/{intervention_id}/outcomeOutcome of a recorded intervention
Compares the score-before with the score-after the intervention and returns an outcome label (IMPROVED / DECLINED / UNCHANGED / PENDING).
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
intervention_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/churnrisk/interventions/:intervention_id/outcome" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Data models
Error
| Field | Type | Notes |
|---|---|---|
errorrequired | string |
RiskTier
PlaybookType
OutcomeType
SignalSource
SignalType
AccountRisk
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
account_id | string (uuid) | |
name | string | |
composite_score | number (double) | |
billing_score | number (double) | |
support_score | number (double) | |
usage_score | number (double) | |
tier | RiskTier | |
scored_at | string (date-time) |
RiskScoresResponse
| Field | Type | Notes |
|---|---|---|
items | array<AccountRisk> | |
next_page_token | string | |
total_count | integer |
RiskDataPoint
| Field | Type | Notes |
|---|---|---|
score | number (double) | |
tier | RiskTier | |
recorded_at | string (date-time) |
RiskTrend
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
account_id | string (uuid) | |
points | array<RiskDataPoint> |
RecalculateResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
new_score | number (double) | |
new_tier | RiskTier |
RiskSignal
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
account_id | string (uuid) | |
signal_source | SignalSource | |
signal_type | SignalType | |
signal_value | number (double) | |
recorded_at | string (date-time) |
SignalsResponse
| Field | Type | Notes |
|---|---|---|
items | array<RiskSignal> | |
next_page_token | string | |
total_count | integer |
BillingSignals
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
has_downgrade | boolean | |
has_failed_payment | boolean | |
mrr_cents | integer (int64) | |
renewal_date | string (date-time) |
SupportSignals
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
ticket_count_30d | integer | |
avg_satisfaction | number (double) | |
escalations | integer |
UsageSignals
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
login_count_30d | integer | |
feature_breadth_pct | number (double) | |
session_duration_trend | number (double) |
Playbook
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
playbook_type | PlaybookType | |
description | string | |
action_items | array<string> |
InterventionRequest
| Field | Type | Notes |
|---|---|---|
playbook_typerequired | PlaybookType |
InterventionResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
success | boolean | |
executed_at | string (date-time) |
InterventionOutcome
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
score_before | number (double) | |
score_after | number (double) | |
outcome | OutcomeType |
CreateCustomerRequest
| Field | Type | Notes |
|---|---|---|
emailrequired | string (email) | |
namerequired | string |
UpdateCustomerRequest
| Field | Type | Notes |
|---|---|---|
email | string (email) | |
name | string |
Customer
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
email | string (email) | |
name | string | |
created_at | string (date-time) |
CustomersResponse
| Field | Type | Notes |
|---|---|---|
items | array<Customer> | |
next_page_token | string | |
total_count | integer |

