Reference
Everything you can do in the portal, you can do over HTTP. JSON in, JSON out. Pick a tab by product: LeadOpera (marketplace), LeadProof (lead certification), or TermsProof (agreements).
All endpoints are under https://www.leadproof.ai. Most authenticate with a Bearer token; a few use a scoped token or a public key. JSON body + Content-Type: application/json unless noted.
Authorization: Bearer <token> Content-Type: application/json
Each endpoint lists its credit cost. A request that would overdraw your balance returns 402 { "error": "insufficient credits" } and charges nothing; other error responses are also non-charging. Dollar pricing, volume tiers, and marketplace fees: Pricing →.
The marketplace API — route leads through the auction, settle them on the ledger, and run your own marketplace as a Network operator. A supplier posts leads to your marketplace; the auction picks a buyer and Maestro settles. Requires nota_routing_enabled on the routing account. See the Nota, Galleria, and Maestro guides for concepts.
{ "campaign_key": "auto-insurance-q3", // or ?campaign_key= ; a source may bind several
"lead_ref": "your-id-123", // optional idempotency ref (echoed back)
"phone": "8135550142", "email": "jane@acme.com", // one-way hashed for Check/dedup
"pp_cert_id": "pp_…", // optional — attach an existing LeadProof cert
"dedup_window_hours": 72, "return_window_hours": 168,
"first_name": "Jane", … } // any additional lead fields (mapped by the source field-map){ "lead_ref": "lead_…", "certified": true,
"routing": { "routed": true, "buyer_account_id": 210, "clearing_price": 32.5,
"decision_id": 90123, "campaignKey": "auto-insurance-q3" } }
// not sold: routing.routed=false with a reason (no_bid / no_eligible_target / duplicate / …)401 invalid or revoked ingest token · 403 nota routing not enabled / campaign_key not connected to this source 422 campaign_key is required · 503 network is paused (operator below the required minimum balance)
Authenticate with a scoped ingest token minted per source (Setup → Ingest, or the Network console) — it only works on the ingest endpoints, so a leak can’t spend credits or read data. For a network source the token carries the operator + buy price; delivery settles three-party.
{ "campaign_key": "auto-insurance-q3", "phone": "8135550142", "email": "jane@acme.com" }{ "lead_ref": "lead_…", "match": true, "price": 32.5, "expires_at": "2026-09-11T14:05:00Z" }
// no winner: { "lead_ref": "lead_…", "match": false, "reason": "no_bid" }Ping runs the auction and HOLDS a reservation at the winning price, returning the bid — it delivers nothing. Post the full lead to /api/nota/ingest before the reservation expires to deliver at the held price. Price is quoted back only for trusted sources.
{ "target_id": 55, "conversions": [
{ "conversion_ref": "sale-9001", "lead_ref": "lead_…", "amount": 300 }, // match by our lead_ref,
{ "conversion_ref": "sale-9002", "phone": "8135550142" } ] } // your ack, or phone/email{ "ok": true,
"summary": { "accrued": 1, "unmatched": 1, "duplicate": 0, "earning": 300 },
"results": [ { "conversion_ref": "sale-9001", "status": "accrued", "lead_ref": "lead_…", "earning": 300 }, … ] }422 target_id is required · 422 conversions[] is required · 404 target not found
{ "lead_ref": "lead_…", "buyer_account_id": 210, "reason_code": "wrong_number", "note": "optional" }invalid_number Invalid / disconnected / unreachable number [auto-adjudicated] wrong_number Wrong number — reached the wrong person [auto-adjudicated] duplicate Duplicate — already delivered to you within the dedup window [auto-adjudicated] no_consent No or disputed consent not_interested Consumer not interested unqualified Did not meet the buying criteria wrong_vertical Wrong vertical / product out_of_area Out of service area spam_fraud Spam / fraud other Other — manual review
Files a return against a delivered lead. reason_code is free text, but the [auto-adjudicated] codes above are decided objectively against the sealed record (number claims re-verified vs the sealed phone hash + carrier lookup; duplicates vs the dedup fingerprint); anything else routes to manual review. Batch upload at POST /api/nota/returns/batch (CSV). A valid return credits the buyer the lead price and reverses the seller earning — the platform fee is kept.
POST { "lead_ref": "lead_…", "disposition": "qualified",
"sub_status": "optional free-text detail", "buyer_account_id": 210, "campaign_key": "auto-insurance-q3",
"converted": false } // manual close flag (see note)
// → { "ok": true, "lead_ref": "lead_…", "disposition": "qualified" }delivered Delivered — sold and handed off contacted Contacted — buyer is working it qualified Qualified sold Sold / closed won dead Dead / lost dnc Do not contact returned Returned
GET /api/encore/dispositions?lead_ref=lead_… // or ?buyer_account_id=210
// → { "dispositions": [ { lead_ref, buyer_account_id, campaign_key, disposition, sub_status, converted, updated_at }, … ] }No-PII outcome tracking on leads you sold. An unrecognized disposition defaults to "contacted". converted marks a manual close; a CPA revenue event is fired by /api/nota/conversions (which also sets converted=true), so use conversions when money moved and this endpoint to advance the pipeline stage.
POST { "supplier_email": "ops@vendor.com", // find-or-creates the account (or supplier_account_id)
"buy_price": 2.0, "taxonomy_code": "auto-insurance", "channel": "lead", "label": "Vendor 77" }
// → { "token": "ingest_…", "id": 41, "supplier_account_id": 512, "buy_price": 2.0 }
GET /api/maestro/network/suppliers // list
DELETE /api/maestro/network/suppliers?id=41/api/maestro/network/payouts (build supplier payout batches + operator margin withdrawal) /api/maestro/network/treasury (admin-side) · /api/maestro/network/compliance (anchors + returns) /api/maestro/network/status (network health: balance floor, pause reason)
POST { "email": "ops@vendor.com", "company": "optional (new)", "create": false }
// → { "status": "matched" | "no_match" | "created", "accountId": 512, "companyName": "Vendor 77 LLC" }POST { "wallet": "buyer" | "seller_fee",
"method": "wire" | "rtp" | "fednow" | "ach_credit" | "card",
"amount": 1000, "note": "optional" }
// irrevocable rail → { "ok": true, "event": { … } } (declare + admin matches the deposit)
// card → { "ok": true, "url": "https://checkout.stripe.com/…" } (amount + disclosed surcharge)
GET /api/maestro/funding // balances + funding eventsNota configuration — sources, campaigns, buyer targets, field-map, secrets — is managed in the portal (Nota) and also reachable at /api/nota/sources, /api/nota/campaigns, /api/nota/targets. Full concepts in the Nota guide.
← Getting started · Pricing · Function guides
LeadOpera™ is a trademark of LeadOpera LLC, a Colorado limited liability company. Its products and services — including LeadProof™ and TermsProof™ — are proprietary and operated through their independent websites; LeadProof™ and TermsProof™ are trademarks of LeadOpera LLC. Unauthorized use of these marks is strictly prohibited. The certification method used by LeadOpera’s products is patent pending. A certificate is a tamper-evident technical record — not a determination of legal or regulatory compliance, validity, or enforceability, and not legal advice.
TrustedForm, Jornaya, Boberdoo, Phonexa, LeadsPedia, Google, Meta, Facebook, Instagram, Twilio, DigiCert, and Sectigo are trademarks of their respective owners; their mention describes interoperability only and does not imply any affiliation with, endorsement by, or sponsorship from those companies.
Press, partnership, and general inquiries: inquiry@leadopera.com
© 2026 LeadOpera LLC. All rights reserved.