API Reference

The LeadSleuth public API gives read-only access to your leads, dossiers and ICPs. All endpoints return JSON over HTTPS. Base URL: https://leads.zalize.com/api/v1

Authentication

Pass your API key as a Bearer token. Create keys in Settings → API — each key is read-only, scoped to your own data, and its plaintext is shown exactly once at creation.

curl https://leads.zalize.com/api/v1/leads \
  -H "Authorization: Bearer lsk_your_api_key"

Rate limits

Each key may make up to 60 requests per minute. Exceeding the limit returns HTTP 429 with a Retry-After header.

GET /api/v1/leads

List your leads, newest first. Optional query parameters:

  • statusnew, contacted, replied or not_fit
  • min_intent — integer 0–100
  • page and per_page — pagination (per_page max 100, default 50)
curl "https://leads.zalize.com/api/v1/leads?status=new&min_intent=70" \
  -H "Authorization: Bearer lsk_your_api_key"
{
  "data": [
    {
      "id": "…", "person_name": "…", "handle": "…",
      "platform": "reddit", "signal_url": "…", "signal_quote": "…",
      "signal_type": "ask_reco", "intent_score": 82, "fit_score": 74,
      "status": "new", "created_at": "2026-08-01T10:00:00Z"
    }
  ],
  "pagination": { "page": 1, "per_page": 50, "total": 1, "total_pages": 1 }
}

GET /api/v1/leads/:id

Fetch a single lead, including its latest dossier (identity, career, ICP match, contact paths) when one exists.

curl https://leads.zalize.com/api/v1/leads/LEAD_ID \
  -H "Authorization: Bearer lsk_your_api_key"

GET /api/v1/icps

List your ICP profiles with parsed criteria, keywords and competitors.

curl https://leads.zalize.com/api/v1/icps \
  -H "Authorization: Bearer lsk_your_api_key"

Errors

All errors share one JSON shape with a machine-readable code and a human-readable message:

{ "error": { "code": "rate_limited", "message": "Rate limit of 60 requests/minute exceeded." } }
  • 401 unauthorized — missing, invalid or revoked key
  • 400 invalid_status / invalid_min_intent — bad query parameter
  • 404 not_found — unknown resource or endpoint
  • 429 rate_limited — rate limit exceeded

Managing keys

Create, name and revoke keys — and see when each was last used — in Settings → API. Revoked keys stop working immediately.

MCP server

LeadSleuth exposes its signal layer to AI agents via the Model Context Protocol (Streamable HTTP transport). Authentication uses the same read-only Bearer API keys, and the endpoint shares the 60 req/min per-key rate limit with the REST API.

Endpoint: https://leads.zalize.com/api/mcp

Available tools (all read-only, scoped to your own data):

  • list_leads — list leads with optional status, min_intent, page, per_page filters
  • get_lead — a single lead by id, including its latest dossier
  • list_icps — your ICP profiles with parsed criteria
  • search_signals — keyword search over signal quotes, names and handles

Claude Desktop / Claude Code — add to claude_desktop_config.json (via mcp-remote for clients without native remote support):

{
  "mcpServers": {
    "leadsleuth": {
      "command": "npx",
      "args": ["mcp-remote", "https://leads.zalize.com/api/mcp",
               "--header", "Authorization: Bearer lsk_your_api_key"]
    }
  }
}

Cursor and other clients with native Streamable HTTP support — add to .cursor/mcp.json:

{
  "mcpServers": {
    "leadsleuth": {
      "url": "https://leads.zalize.com/api/mcp",
      "headers": { "Authorization": "Bearer lsk_your_api_key" }
    }
  }
}