Developer docs

LeadIQ, headless.

A versioned REST API for lead enrichment, email discovery, and mobile lookups. Same quota and credits as your dashboard — no new SKUs, no second seat.

Authentication

Every call needs a Bearer API key in the Authorization header. Keys are scoped to a user and inherit that user's tier limits.

Base URL
https://leadiqpro.io/api/v1
Header
Authorization: Bearer liq_live_…
Tier gate: Growth, Scale, and Enterprise plans. Starter and Free see an upgrade prompt on the Settings → API tab.

Enrich your first lead

By default this is async — we return a job_id in <1 s and POST the enriched payload to your callback_url when ready. For scripts, pass ?mode=sync to block up to ~90 s and get the lead inline.

curl -X POST "https://leadiqpro.io/api/v1/leads/enrich?mode=sync" \
  -H "Authorization: Bearer liq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "lead": {
      "name": "Jane Doe",
      "title": "VP of Marketing",
      "email": "jane@acme.com",
      "company": "Acme Corp",
      "domain": "acme.com"
    }
  }'

Webhooks

Pass callback_url in your enrich request body and we'll POST the enriched payload to that URL when the job finishes. Delivery happens once in Phase 1; signed payloads and retries land in Phase 2.

Payload shape
{
  "job_id": "c8fcba2b-335a-4652-aeec-25461bf76c9c",
  "kind": "lead.enrich",
  "status": "done",
  "created_at": "2026-02-14T10:12:00Z",
  "finished_at": "2026-02-14T10:12:38Z",
  "result": {
    "id": "68f3ab...",
    "input": { "company": "Acme Corp", "domain": "acme.com", ... },
    "enrichment": {
      "company_overview": { ... },
      "tech_stack": { ... },
      "intent_signals": { ... },
      "buying_committee": [ ... ],
      "opportunity_score": 72,
      ...
    },
    "created_at": "2026-02-14T10:12:38Z"
  },
  "error": null
}

For a field-by-field explanation of what each enrichment key means, see the enriched-field glossary.

Rate limits

  • • 60 requests / minute per key on sync endpoints
  • • 600 requests / minute per key on async job creation
  • • Monthly enrichment quota, email credits, and mobile credits are shared with the dashboard
  • • Over-limit calls return 429 with a Retry-After header
  • • Global ceiling of 5 concurrent in-flight enrichments across the platform. If you hit it, you get 429 Retry-After — space your calls out and they'll go through.
Per-key 429

You exceeded 60 req/min (sync) or 600 req/min (async) on this specific key. Back off that key only — other keys are unaffected.

{"detail":"Rate limit exceeded (60 req/min). Retry in 42s."}
upstream_full 429

The platform-wide ceiling of 5 concurrent enrichments is saturated. Short back-off (~2 s) is enough — the next freed slot is yours.

{"detail":"upstream_full — the platform is at its concurrent enrichment ceiling. Retry in a few seconds."}

Where to next