TRUSTED LEADS
REST · SDK · MCP

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.

quickstart — order, then pull

# 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/orders

Create 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/leads

Pull 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/webhook

Push 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/sdk

A 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 · Gemini

Connect 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.