Skip to content
§ 01 v2026-02-16 · live in us-east, us-west, eu-west

Ship sponsored listings in an hour.

Fairlead is a server-side ad exchange API with self-serve onboarding, transparent pricing, and first-class SDKs. Sign up with a card, get keys in 60 seconds, make your first decision call in under a minute.

§ Already running on
TRADEHALL DEPOT.IO BAZAAR.CO FULFILL·EXCHANGE
~ / quickstart.ts
● live
// First decision call — 5 lines. import { Fairlead } from "@fairlead/node"; const fl = new Fairlead({ apiKey: process.env.FL_KEY }); const d = await fl.decide({ placement: "search-results-top", keywords: ["trail-runners"], limit: 3, }); → HTTP 200 · decision dec_8k2m…Rj9 → winners 3 · clearing $2.40 · latency 41ms
Region us-east
Bidders 1
Candidates 47
Status 200 OK
§ 02 The collapse rtb vs fairlead

The entire RTB supply chain, collapsed into one call.

OpenRTB is a protocol for open auctions between strangers. Fairlead is a closed exchange for a single party's own inventory. The marketplace owns both supply and demand — so the whole SSP → Exchange → DSP → DMP chain goes away.

Before · OpenRTB ● 100–300ms

Four services. One auction.

SSP~20ms
↓ bid request fan-out
Exchange~80ms
↓ broadcasts user data to every bidder
DSP~60ms
↓ per-bidder timeout windows
DMP lookup~40ms
Total 100–300ms · user data broadcast
After · Fairlead ● <50ms

One service. One auction.

fairlead.decide()<50ms p99
↓ all bidders colocated on Redis
→ sponsored listings bidder3ms
→ direct-sold bidder (Phase 2)
→ house bidder (Phase 2)
Total 41ms · user data never leaves the API
§ 03 Principles six non-negotiables

Built for developers who will be on-call for it.

Every decision in the stack assumes a small team, a real SLO, and no patience for tag-based black boxes. The infrastructure shouldn't surprise you at 3am.

01 · LATENCY

p99 under 50ms

Rust/Axum hot path, Redis-cached campaigns, zero DB round-trips per decision. Auction engine is a pure function. Budget: auth 5ms, bidders 5ms, auction <1ms.

02 · PRIVACY

Zero third-party broadcast

User data never leaves your API. No bid requests fanned to outside bidders. No DMP sync. No pixel chain. Differential privacy on signals by default.

03 · SELF-SERVE

Card-up in 60 seconds

Sign up with a credit card, provision API keys, make your first decision call in under a minute. Free tier covers 1M decisions/month, no forms, no sales calls.

04 · DX

Seven first-party SDKs

Node, Python, Go, Java, Kotlin, Swift, React. Zero runtime deps. Case-transformed, type-safe, auto-paginating. Generated from an OpenAPI 3.1 spec you can vendor.

05 · OBSERVABILITY

Prometheus on every layer

Request-ID propagated through FastAPI, SQLAlchemy, Redis, and downstream. Latency histograms bucketed from 1ms. Your Grafana, not ours.

06 · OPEN SHAPES

No vendor lock on the wire

Spec is OpenAPI 3.1, public. Date-based versioning (Stripe style). Pin a version per org; breaking changes are transform-based, applied chronologically.

§ 04 The ledger product primitive · first-price sealed-bid

One winner. One clearing price. Every line on the ledger.

The auction is a pure function: collect candidates, filter by floor, sort by priority → bid → quality, dedupe, take top N. Here's what a real call returns.

POST /decisions → 200 OK

The sponsored listings bidder reads denormalized campaign snapshots from Redis, evaluates targeting against the request, and returns one candidate per active ad. The auction engine takes it from there.

  • Placementsearch-results-top
  • Floor price$0.95 CPM
  • Auctionfirst-price sealed-bid
  • Sortpriority → bid → quality
  • Dedupeby (item, campaign)
  • Latency41ms p99
POS
CANDIDATE
BID CPM
QS
01
ad_8k2mRj · growth_q2
$2.40
0.92
★ winner
02
ad_pL9xRt · trail
$2.15
0.88
03
ad_4Kq2Mn · urban
$1.95
0.76
ad_zxp7Qa · clearance
$0.90
0.42
below floor
ad_Nm8kLp · mesh
$1.80
0.58
deduped
§ 05 SDKs eight languages · zero runtime deps

One shape on the wire. Eight in your IDE.

Every SDK pins to a date-based API version, handles auto-pagination, and generates its types from the OpenAPI spec. No one gets left on a 2022 client.

Node · TS @fairlead/node Node 18+ · Bun · Deno
Python pip install fairlead 3.11+ · sync + async
Go fairlead-go 1.22+ · generics
Java com.fairlead:sdk Java 17+ · jackson
Kotlin fairlead-kotlin 1.9+ · kotlinx.serialization
Swift FairleadSDK 5.9+ · iOS 15 · async/await
React @fairlead/react React 19 · TanStack Query
Terraform fairlead/fairlead Plugin Framework 1.16

Ship your first decision call tonight.

Keys in 60 seconds. First response in under a minute. No credit card for the free tier — up to 1M decisions / month, all SDKs, all regions.