curl --request POST \
--url https://api-v2.watchcollect.com/v2/market/listings/{listing_id}/valuation \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-v2.watchcollect.com/v2/market/listings/{listing_id}/valuation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/market/listings/{listing_id}/valuation"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"listing_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "scored",
"as_of_ms": 123,
"currency": "<string>",
"fair_price_minor": 123,
"range": {
"low_minor": 123,
"high_minor": 123,
"target_coverage_bps": 8000
},
"confidence": "high",
"support": {
"effective_sample_size": 1,
"market_observation_count": 1,
"reference_country_count": 1,
"latest_observation_at_ms": 123,
"market_context_as_of_ms": 123
},
"explanations": [
{
"code": "<string>",
"direction": "up"
}
],
"model_version": "<string>",
"calibration_version": "<string>",
"feature_schema_version": 123,
"deal": {
"eligible": true,
"current_ask_minor": 123,
"discount_to_fair_bps": 123,
"conservative_saving_minor": 123,
"threshold": "below_q10",
"position": "below_range"
},
"input_summary": {
"brand": "<string>",
"reference": "<string>",
"year": 123,
"condition": "<string>",
"dial": "<string>",
"full_set": "<string>",
"missing_fields": [
"<string>"
],
"ask_excluded": true,
"market_context_as_of_ms": 123,
"reference_observation_count_7d": 1,
"reference_observation_count_30d": 1,
"reference_country_count_30d": 1
},
"decision_policy_version": "<string>"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Calculate a v3 fair market asking-price estimate on demand
Builds the v3 watch and market features only for this explicit user request, then calls the internal model service. Both for-sale listings and want-to-buy requests are supported. The listing ask, currency, seller country, variant, identity and raw message are excluded from model input. For-sale asks are compared only after a safe independent prediction is returned; want-to-buy responses omit deal because no seller ask exists. This endpoint does not enqueue work, persist a valuation, create alerts or trigger background scoring.
curl --request POST \
--url https://api-v2.watchcollect.com/v2/market/listings/{listing_id}/valuation \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-v2.watchcollect.com/v2/market/listings/{listing_id}/valuation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/market/listings/{listing_id}/valuation"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"listing_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "scored",
"as_of_ms": 123,
"currency": "<string>",
"fair_price_minor": 123,
"range": {
"low_minor": 123,
"high_minor": 123,
"target_coverage_bps": 8000
},
"confidence": "high",
"support": {
"effective_sample_size": 1,
"market_observation_count": 1,
"reference_country_count": 1,
"latest_observation_at_ms": 123,
"market_context_as_of_ms": 123
},
"explanations": [
{
"code": "<string>",
"direction": "up"
}
],
"model_version": "<string>",
"calibration_version": "<string>",
"feature_schema_version": 123,
"deal": {
"eligible": true,
"current_ask_minor": 123,
"discount_to_fair_bps": 123,
"conservative_saving_minor": 123,
"threshold": "below_q10",
"position": "below_range"
},
"input_summary": {
"brand": "<string>",
"reference": "<string>",
"year": 123,
"condition": "<string>",
"dial": "<string>",
"full_set": "<string>",
"missing_fields": [
"<string>"
],
"ask_excluded": true,
"market_context_as_of_ms": 123,
"reference_observation_count_7d": 1,
"reference_observation_count_30d": 1,
"reference_country_count_30d": 1
},
"decision_policy_version": "<string>"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Query Parameters
3Response
Fresh v3 valuation or a safe abstention for the visible listing.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Fair-price result returned either from the latest immutable projection (GET) or a fresh explicit v3 calculation (POST). Clients must never present abstained or stale values as current fair prices.
scored 3Show child attributes
Show child attributes
high, medium, low Show child attributes
Show child attributes
5Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes