Watchatic’s Fair Market Price is a projected estimate of the observable asking price market. It is not a confirmed sale price, transaction price, profit guarantee, or proof that a listing sold.

Read a listing valuation

Use GET /v2/market/listings/{listing_id}/valuation. The endpoint applies the same Clerk and workspace/session access boundary as listing detail. It reads the latest valuation projection only: it never calls the model, appends an event, or enqueues background work. The response status is one of:
  • pending: an eligible listing is still moving through projection/scoring.
  • scored: Q50 fair ask plus a calibrated Q10–Q90 range is available.
  • abstained: Watchatic intentionally refused to price, with a stable reason.
  • stale: the last projection no longer matches current model policy or classification and must not be presented as a current price.
  • unavailable: the listing is not eligible or has no valuation history.

Quantiles and confidence

  • Q10 (range.low_minor) is the conservative lower market bound.
  • Q50 (fair_price_minor) is the central fair asking-price estimate.
  • Q90 (range.high_minor) is the upper market bound.
The target range covers roughly 80% of comparable future asking-price situations after calibration. confidence is separate: it also considers market support, feature missingness, FX quality, lineage ambiguity, and out-of-distribution risk.

Deal comparison

The listing’s current ask is contractually excluded from model input. Only after an independent valuation exists does the API compare the current ask to Q10/Q50/Q90. Treat a below_q10 threshold as an unusually low ask relative to the modeled market, never as guaranteed profit.

Preview and rollout

The backend can produce silent technical scores without exposing them to customers. The frontend preview remains disabled unless NEXT_PUBLIC_WATCHATIC_FAIR_PRICE_PREVIEW_ENABLED=true is set explicitly. Customer-visible flags and alert delivery require owner acceptance.