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.
Create a key
Settings → API → Create key. Copy the secret once; it won't be shown again.
Make your first call
Hit /api/v1/leads/enrich with any lead and get a job_id back in under a second.
Wire the webhook
Pass callback_url on every request; we POST the enriched payload when it's ready.
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.
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.
{
"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
429with aRetry-Afterheader - • 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.
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."}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."}