API
Scoring API Reference
Overview
The Conturs Scoring API calculates lead quality scores based on configurable weights.
Property | Value |
|---|---|
Base URL | https://api.conturs.com |
Protocol | HTTP / JSON |
Auth | API Key in request body |
Content-Type |
|
Authentication
Every request to POST /leads must include api_key and email in the JSON body.
Get your API key from Dashboard → API at conturs.com.
Endpoints
GET /health
Returns the service health status. No authentication required.
Response 200 OK
Field | Type | Description |
|---|---|---|
| string | Always "healthy" |
| string | Always "scoring-service" |
POST /leads
Score a batch of leads against your personalized ICP model. Send one or more leads and receive a score (0–100) with a full factor breakdown for each.
Request Body
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Your Conturs API key |
| string | Yes | Your account email |
| Lead[] | Yes | Array of lead objects (min 1) |
| string | No | Optional client identifier override |
Lead Object
Field | Type | Required | Example | Description |
|---|---|---|---|---|
| string | Yes |
| Lead email address. Used as identifier. |
| string | No |
| First name. Contributes to profile completeness. |
| string | No |
| Last name. Contributes to profile completeness. |
| string | No |
| Company name. Contributes to profile completeness. |
| string | No |
| Job title. Evaluated for seniority level. |
| string | No |
| Company industry. |
| string | No |
| Phone number. Presence adds to score. |
| string | No |
| Pipeline status. See values below. |
| string | No |
| Deal stage. See values below. |
| number | No |
| Deal value in USD. Scored up to $100k. |
| integer | No |
| Number of meetings booked. |
| integer | No |
| Number of calls completed. |
| integer | No |
| Number of email replies received. |
| integer | No |
| Number of completed tasks. |
| string | No |
| Last activity date. ISO 8601 or Unix ms. |
| string | No |
| Lead creation date. ISO 8601 or Unix ms. |
Lead Status Values
Value | Factor Score |
|---|---|
| 1.0 |
| 0.7 |
| 0.5 |
| 0.3 |
| 0.2 |
| 0.1 |
other | 0.3 |
empty | 0.2 |
Deal Stage Values
Value | Factor Score |
|---|---|
| 1.0 |
| 0.85 |
| 0.75 |
| 0.6 |
| 0.5 |
| 0.4 |
| 0.1 |
other | 0.2 |
empty | 0.0 |
Job Title Seniority Mapping
Keywords in title | Factor Score |
|---|---|
ceo, founder, owner, president, chief | 1.0 |
vp, director | 0.8 |
head, manager, lead | 0.6 |
senior, sr | 0.4 |
other title | 0.3 |
no title | 0.0 |
Response 200 OK
Field | Type | Description |
|---|---|---|
| LeadScore[] | Array of scored leads |
| string | Weight source: similar_clients, industry_prior, or default |
| string | Your client identifier from config |
LeadScore Object
Field | Type | Description |
|---|---|---|
| string | Lead identifier (matches request) |
| integer | Score 0–100 |
| string | Human-readable label |
| Factor[] | Breakdown of scoring factors |
Factor Object
Field | Type | Description |
|---|---|---|
| string | Factor name (e.g. deal_stage, job_title_seniority) |
| float | How important this factor is (from config) |
| float | Lead's normalized value (0.0–1.0) |
| float | value x weight — actual contribution |
Score Labels
Range | Label | Recommended Action |
|---|---|---|
80–100 | Hot Lead | Route to AE immediately |
60–79 | Warm Lead | SDR outreach sequence |
40–59 | Cool Lead | Nurture if signals positive |
0–39 | Cold Lead | Marketing drip only |
All 13 Scoring Factors
Each lead is evaluated across 13 factors. Weights are personalized for your business.
# | Factor | What it measures | Score logic |
|---|---|---|---|
1 |
| Current deal stage | Mapped value (see table above) |
2 |
| Deal value | min(1.0, amount/100000 + 0.3) |
3 |
| Pipeline status | Mapped value (see table above) |
4 |
| Recency of sales activity | 3d: 1.0, 7d: 0.8, 14d: 0.6, 30d: 0.4, 60d: 0.2, 60d+: 0.05 |
5 |
| Meetings booked | 3+: 1.0, 1+: 0.7, 0: 0.0 |
6 |
| Calls completed | 5+: 1.0, 2+: 0.6, 1: 0.4, 0: 0.0 |
7 |
| Email replies | 5+: 1.0, 2+: 0.7, 1: 0.5, 0: 0.0 |
8 |
| Tasks completed | min(1.0, count/5) |
9 |
| Lead freshness | 7d: 1.0, 30d: 0.7, 90d: 0.4, 90d+: 0.2 |
10 |
| Job title seniority | Keyword matching (see table above) |
11 |
| Valid email | Has @: 1.0, Invalid: 0.0 |
12 |
| Data completeness | Filled fields / 7 |
13 |
| Has phone number | Present: 1.0, Empty: 0.0 |
Score Calculation Formula
1. For each factor: contribution = value x weight
2. Normalize: normalized = total_contributions / total_weights_used
3. Completeness multiplier: 0.5 + 0.5 x (weights_used / weights_available)
4. Final: score = clamp(normalized x multiplier x 100, 0, 100) rounded to integer
Examples
Minimal Request
Full Request
Full Response
Error Responses
Status | Error Message | Cause |
|---|---|---|
400 | Invalid request body: {details} | Malformed JSON in request |
400 | No leads provided | Empty leads array |
401 | api_key and email required | Missing api_key or email field |
401 | Invalid API key | API key rejected |
405 | Method not allowed | Non-POST request to /leads |
500 | Failed to fetch scoring config | Config API unavailable |
Date Format Support
Format | Example |
|---|---|
Unix milliseconds | "1645564800000" |
RFC 3339 / ISO 8601 | "2026-02-22T12:00:00Z" |
Date only (dash) | "2026-02-22" |
Date only (slash) | "2026/02/22" |
