HomeAPI Docs Request NDA →
Getting Started
Introduction Authentication Quick Start Rate Limits
Lead Delivery
GETFetch Leads GETStream Delivery POSTFilter & Query POSTDeduplicate
Webhooks
POSTRegister Webhook Event Reference Signature Verification
Compliance
POSTDNC Check POSTSuppression Upload GETLitigator Status
Account
GETUsage Stats GETAccount Balance
Reference
Error Codes SDKs & Libraries Changelog
API v2.1 · REST

API Documentation

The Quality Leads Solution API provides programmatic access to our enterprise data infrastructure. Fetch, filter, stream, and manage lead data across all 8 verticals in real time. All API access requires NDA execution and approval.

API access is restricted to NDA-approved operators only. If you haven't executed your NDA, start here. Unauthorized API calls will result in immediate key revocation.

Base URL
https://api.leadss.co/v2

Authentication

All API requests must include your API key in the Authorization header. API keys are issued after NDA execution and qualification approval. Keys are scoped to specific verticals and delivery methods approved for your account.

Bearer Token Authentication

Include your API key in every request header. Never expose your key in client-side code or public repositories.

HTTP Header
Authorization: Bearer qls_live_YOUR_API_KEY_HERE
Content-Type: application/json
X-Account-ID: acc_your_account_id
cURL Example
curl https://api.leadss.co/v2/leads \
  -H "Authorization: Bearer qls_live_YOUR_KEY" \
  -H "Content-Type: application/json"

Quick Start

Get your first batch of leads in under 5 minutes. Follow these steps after receiving your API key.

1

Execute NDA & Get Approved

Request NDA at /nda.html. Approval takes 1–3 business days. You'll receive your API key via secure email.

2

Set Your API Key

Store your key as an environment variable: QLS_API_KEY=qls_live_xxx. Never hardcode it.

3

Make Your First Request

Fetch your first batch of leads from your approved vertical using the example below.

4

Set Up Webhook (Optional)

Register a webhook endpoint to receive new leads in real time as they become available.

JavaScript
const response = await fetch('https://api.leadss.co/v2/leads?vertical=mca&limit=100', {
  headers: {
    'Authorization': `Bearer ${process.env.QLS_API_KEY}`,
    'Content-Type': 'application/json'
  }
});

const { leads, total, cursor } = await response.json();
console.log(`Received ${leads.length} leads of ${total} available`);
Python
import requests, os

response = requests.get(
    'https://api.leadss.co/v2/leads',
    headers={'Authorization': f"Bearer {os.environ['QLS_API_KEY']}"},
    params={'vertical': 'mca', 'limit': 100}
)
data = response.json()
print(f"Received {len(data['leads'])} leads")

Rate Limits

Rate limits are applied per API key on a rolling 60-second window. Limits vary by account tier and vertical access level.

Account TierRequests / MinRecords / DayConcurrent Streams
Starter6010,0001
Professional300100,0005
Enterprise1,000Unlimited25
Custom / WholesaleCustomCustomCustom

When rate limited, the API returns HTTP 429 with a Retry-After header indicating seconds to wait. Implement exponential backoff in production.


Lead Delivery

GET/leads

GET /v2/leads

Fetch a paginated batch of leads from your approved vertical(s). Records are returned in descending order by verification timestamp. Cursor-based pagination for high-volume requests.

ParameterTypeRequiredDescription
verticalstringRequiredOne of: mca, insurance, solar, dme, cdr, legal, debt, finance
limitintegerOptionalRecords per page. Default: 100. Max: 5,000.
cursorstringOptionalPagination cursor from previous response next_cursor field.
statestringOptionalISO state code to filter by geography. E.g. FL, TX, CA
max_age_hoursintegerOptionalMax record age in hours. Default: 72. Min: 1.
dnc_checkedbooleanOptionalOnly return records with DNC verification. Default: true.
Response · 200 OK
{
  "status": "success",
  "total": 14500,
  "count": 100,
  "next_cursor": "cur_7xK9mN2pQ...",
  "leads": [
    {
      "id": "lead_8fXm2K...",
      "first_name": "James",
      "last_name": "Morrison",
      "phone": "+15551234567",
      "email": "jm@businessname.com",
      "business_name": "Morrison Logistics LLC",
      "state": "FL",
      "monthly_revenue_est": 45000,
      "years_in_business": 4,
      "carrier_verified": true,
      "dnc_status": "clean",
      "litigator_flag": false,
      "opt_in_timestamp": "2026-03-14T09:22:11Z",
      "opt_in_source": "form://businessfunding.net",
      "credit_tier": "A",
      "vertical": "mca"
    }
  ]
}

Compliance Endpoints

POST/compliance/dnc-check

POST /v2/compliance/dnc-check

Batch-check up to 10,000 phone numbers against the National DNC Registry, state-level registries, and our proprietary litigator network database. Returns per-number status and risk score.

Body FieldTypeRequiredDescription
phonesarray[string]RequiredArray of E.164 formatted phone numbers. Max 10,000 per request.
check_litigatorbooleanOptionalInclude litigator network check. Default: true.
state_registriesbooleanOptionalCheck state-level DNC lists. Default: true.
Request Body
{
  "phones": ["+15551234567", "+15559876543"],
  "check_litigator": true,
  "state_registries": true
}
Response
{
  "checked": 2,
  "results": [
    {
      "phone": "+15551234567",
      "dnc_status": "clean",
      "litigator": false,
      "risk_score": 2,
      "safe_to_call": true
    },
    {
      "phone": "+15559876543",
      "dnc_status": "registered",
      "litigator": true,
      "risk_score": 98,
      "safe_to_call": false
    }
  ]
}

Error Codes

The API uses standard HTTP status codes. All error responses include a machine-readable error_code and human-readable message.

StatusError CodeDescription
200successRequest completed successfully
400invalid_paramsMissing or invalid request parameters
401unauthorizedAPI key missing, invalid, or revoked
403vertical_not_approvedVertical not in your NDA scope
429rate_limitedToo many requests. Use Retry-After header
500internal_errorServer error. Contact support@leadss.co

SDKs & Libraries

Official SDKs are available for NDA-approved operators. Contact your account manager or reach us at contact page to request SDK access.

Node.js
npm install qls-client
🐍
Python
pip install qls-python
PHP
composer require qls/client
🔷
REST / cURL
Any language
Get API Access

Ready to Integrate?

Execute your NDA to receive your API key and full SDK documentation with integration examples for your stack.

Execute NDA & Get API Key