Skip to main content

Watched Leads API

Manage user watch lists for tracking specific leads and monitoring their engagement over time.

POST /leads/{leadID}/watch

Add a lead to the authenticated user's watch list.

Request

ParameterTypeRequiredDescription
leadIDstringYesLead identifier (path parameter)
predictionstringNoOptional prediction about lead outcome
prediction_notesstringNoNotes explaining the prediction

Request Body

{
"prediction": "will_convert",
"prediction_notes": "Strong engagement on pricing page + demo request"
}

Response

201 Created

{
"watch_id": "watch_abc123",
"lead_id": "ld_123",
"message": "Lead added to watch list"
}

Example

curl -X POST "https://api.leadvibe.com/leads/ld_123/watch" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"prediction": "will_convert",
"prediction_notes": "High buying intent based on recent activity"
}'

Common Errors

StatusMeaningSolution
400Bad RequestLead ID is required
401UnauthorizedCheck authentication token
404Not FoundLead does not exist or not accessible

DELETE /leads/{leadID}/watch

Remove a lead from the authenticated user's watch list.

Request

ParameterTypeRequiredDescription
leadIDstringYesLead identifier (path parameter)

Response

204 No Content

Successfully removed from watch list.

Example

curl -X DELETE "https://api.leadvibe.com/leads/ld_123/watch" \
-H "Authorization: Bearer <token>"

Common Errors

StatusMeaningSolution
401UnauthorizedCheck authentication token
404Not FoundLead not in watch list or doesn't exist

GET /watched-leads

Retrieve the authenticated user's complete watch list with current scores and score changes.

Request

No parameters required. Returns all leads watched by the authenticated user.

Response

200 OK

{
"watched_leads": [
{
"watch_id": "watch_abc123",
"lead_id": "ld_123",
"prediction": "will_convert",
"prediction_notes": "Strong engagement signals",
"watched_at": "2025-01-15T10:00:00Z",
"outcome": "pending",
"outcome_at": null,
"current_score": 75,
"score_at_watch": 60,
"score_delta": 15
},
{
"watch_id": "watch_def456",
"lead_id": "ld_456",
"prediction": "high_value",
"prediction_notes": "Enterprise account, multiple touchpoints",
"watched_at": "2025-01-14T15:30:00Z",
"outcome": "pending",
"outcome_at": null,
"current_score": 92,
"score_at_watch": 85,
"score_delta": 7
}
],
"count": 2
}

Response Fields

FieldTypeDescription
watch_idstringUnique watch record identifier
lead_idstringLead identifier
predictionstringOptional prediction about outcome
prediction_notesstringOptional notes explaining prediction
watched_attimestampWhen lead was added to watch list
outcomestringOutcome status: "pending", "won", "lost"
outcome_attimestampWhen outcome was recorded (null if pending)
current_scoreintegerLead's current score
score_at_watchintegerScore when lead was added to watch list
score_deltaintegerChange in score since watching (current - at_watch)

Example

curl -X GET "https://api.leadvibe.com/watched-leads" \
-H "Authorization: Bearer <token>"

Common Errors

StatusMeaningSolution
401UnauthorizedCheck authentication token
500Server ErrorContact support if persists

GET /watched-leads/stats

Get prediction accuracy statistics for the authenticated user.

Request

No parameters required.

Response

200 OK

{
"total_watched": 25,
"total_predictions": 20,
"correct_predictions": 15,
"pending_outcomes": 8,
"accuracy_percent": 75.0
}

Response Fields

FieldTypeDescription
total_watchedintegerTotal number of leads ever watched
total_predictionsintegerNumber of watches with predictions
correct_predictionsintegerPredictions that came true (outcome = "won")
pending_outcomesintegerLeads still pending outcome
accuracy_percentnumberPercentage of correct predictions (correct / total * 100)

Example

curl -X GET "https://api.leadvibe.com/watched-leads/stats" \
-H "Authorization: Bearer <token>"

Common Errors

StatusMeaningSolution
401UnauthorizedCheck authentication token
500Server ErrorContact support if persists

Use Cases

Track High-Value Prospects

Watch leads that match your ideal customer profile to monitor engagement trends.

# Watch a lead
curl -X POST "https://api.leadvibe.com/leads/ld_123/watch" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"prediction": "will_convert",
"prediction_notes": "Perfect ICP match + high engagement"
}'

# Check score changes later
curl -X GET "https://api.leadvibe.com/watched-leads" \
-H "Authorization: Bearer <token>"

Monitor Prediction Accuracy

Track how well your lead qualification intuition performs over time.

# Get accuracy stats
curl -X GET "https://api.leadvibe.com/watched-leads/stats" \
-H "Authorization: Bearer <token>"

Clean Up Watch List

Remove leads that have converted or gone cold.

# Remove lead from watch list
curl -X DELETE "https://api.leadvibe.com/leads/ld_123/watch" \
-H "Authorization: Bearer <token>"

Notes

  • Watch lists are personal and private to each user
  • Score snapshots are captured hourly for all leads
  • Score delta is calculated using the nearest snapshot to watch time
  • Predictions are optional but help track qualification accuracy
  • Outcome tracking (won/lost) is currently manual (future enhancement)
  • Watch data is OU-scoped like all lead data