Tread Ready
Dealer portal

Headless intake for dealer websites.

A customer-facing API and a set of drop-in widgets a dealer can paste into any website. Auth is a restricted, browser-safe key sent as X-Portal-Key — not a Bearer header.

Authentication

Request header
X-Portal-Key: pk_portal_dealer_XXXX

Every call validates the dealer, module enablement, an Origin allowlist, and per-key plus per-IP rate limits.

What a portal key cannot reach
Nothing internal is reachable with a portal key — no inventory, cost, customer records, or pricing/approval logic. Writes are intake only, never approval.

Endpoints

Base path
/api/portal/v1/dealers/:dealerSlug
EndpointScopeBehavior
GET /api/portal/v1/dealers/:dealerSlug—Dealer profile.
GET …/brand—Brand assets and theme.
GET …/services—Services offered.
GET …/locations—Locations.
GET …/promotions—Active promotions.
GET …/catalog-categories—Catalog categories.
POST …/quote-requests—Submit a quote request.
POST …/appointments—Book a service appointment.
POST …/warranty-intake—Start a warranty intake.
POST …/fleet-inquiries—Submit a fleet inquiry.
POST …/events—Record a customer-side event.

Drop-in widgets

Four hosted scripts: /embed/quote.js, /embed/booking.js, /embed/warranty.js, and /embed/fleet.js.

HTML
<div data-tread-ready-widget="quote"
     data-dealer-slug="northwest-ag-tire"
     data-portal-key="pk_portal_dealer_XXXX"></div>
<script src="https://middleware.treadready.com/embed/quote.js"></script>

JS / React SDK

A dependency-free SDK is available for teams that want to control the markup: createTreadReadyPortalClient, TreadReadyQuoteForm, TreadReadyBookingForm, TreadReadyWarrantyStart, TreadReadyFleetInquiry, and TreadReadyDealerServices.