Quickstart

Send lead data to one endpoint and get a Recovery Score, priority, and next-best action. You can be live in under a minute.

1. Get an API key

Create a free account and generate a key from the dashboard. Keys look like stx_live_... or stx_test_... and are shown only once.

New here? Create a free API key — the Free plan includes 250 leads and 50 requests per month.

2. Make your first request

Send a single lead as JSON. Only status and lead_age_days are required — the score adapts to whatever additional fields you provide.

cURL
curl https://crossstax.dev/api/v1/leads/recovery \
  -H "Authorization: Bearer stx_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "industry": "roofing",
    "status": "estimate_sent",
    "lead_age_days": 28,
    "last_contact_days": 19,
    "estimate_value": 12000,
    "explicit_rejection": false
  }'

3. Read the response

Every response is structured JSON with an explainable breakdown:

200 OK
{
  "request_id": "req_a1b2c3d4",
  "lead_id": null,
  "recovery_score": 88,
  "priority": "high",
  "recommended_action": "follow_up",
  "recommended_channel": "phone",
  "recommended_timing": "today",
  "reason": "Driven by a high-value estimate and an open high-value estimate. This is a strong recovery opportunity.",
  "suggested_message": "Call script: Reference the estimate sent to {{first_name}}...",
  "confidence": 0.84,
  "factors": [
    { "factor": "estimate_value", "impact": "positive", "score_effect": 18 }
  ],
  "scoring_version": "1.0.0"
}
  • recovery_score — an explainable 0–100 heuristic
  • priorityhigh, medium, or low
  • recommended_action, recommended_channel, and recommended_timing
  • factors — the exact contributions behind the score

Node.js example

fetch
const res = await fetch("https://crossstax.dev/api/v1/leads/recovery", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CROSSSTAX_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    industry: "roofing",
    status: "estimate_sent",
    lead_age_days: 28,
    estimate_value: 12000,
  }),
})
const data = await res.json()
console.log(data.recovery_score, data.priority)
The Recovery Score is an explainable, deterministic heuristic — not a statistically proven probability of conversion. See Recovery Scores.