Build on Trusted Leads
One REST API to order, pull and deliver verified B2B leads — plus a typed SDK and MCP access for your AI. Authenticate with a single x-api-key: sk_live_… key and you are live.
# 1 — create a priced order
$ curl -X POST https://app.trustedleads.io/api/v1/orders \
-H "x-api-key: sk_live_…" \
-d '{ "scrapingOption": "filters", "leadCount": 5000 }'
# 2 — pull the verified rows
$ curl https://app.trustedleads.io/api/v1/leads?result=good&hasEmail=true
{ data: [ … ], meta: { nextCursor: "…" } }
Everything the dashboard does, over HTTP
The public API is a first-class surface, not an afterthought — the same orders, the same leads, the same delivery, keyed to your account.
Orders API
POST /v1/ordersCreate a priced order from an ICP — the same five products as the wizard. Prices are quoted server-side before you pay, and a retried request reuses one idempotency key so it can't double-charge.
Leads API
GET /v1/leadsPull every lead you own across orders. Filter by result, email or phone presence, and page through with keyset cursors. Field selection is an allowlist, so you get exactly the columns you ask for.
Outbound delivery
POST /v1/webhookPush delivered leads straight into your stack, or let auto-delivery fan out to Instantly, Smartlead, Email Bison and your own webhook the moment an order lands.
Typed SDK
@trusted-leads/sdkA generated TypeScript client with auto-pagination, 429/5xx retry with backoff that honours Retry-After, typed error codes, and a single idempotency key held across retries.
MCP access
Claude · ChatGPT · GeminiConnect an AI assistant with your own key. Every tool call rides your sk_live_ key against /v1, so scopes, rate limits and ownership stay exactly as the app enforces them.
Admin data plane
/v1/admin/*The scraper-worker surface: ingest a whole delivery, approve, deliver, refund, request info, and export a lead list — the same implementation the dashboard runs.
Authentication
Every request carries x-api-key: sk_live_…. Customer keys and admin keys are hard-segregated by type, and scopes authorise the verb — ownership is always re-checked on our side.
Rate limits & idempotency
1,000 requests/hour per key by default, with a higher order-write budget so a spreadsheet submitting one order per row never trips it. Durable counters honour Retry-After, and a retried order create is deduplicated by its idempotency key.
Ship your first call in minutes
Create a key, read the guides, and order your first list over the API. Same products, same prices, no dashboard required.