Downloads · 30 days
0
Priceman614/x402-demand
x402-demand is a text classification model from Priceman614. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as apache-2.0.
Will anyone pay for this x402 endpoint? Give it an x402 listing — resource URL, description, price, network — and it returns a calibrated probability that the endpoint receives at least one paid call in the next 7 day…
Downloads · 30 days
0
Access
Public
Updated Sep 24, 2026
Parameters
421M
843 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors843 MB · 100%
From the Hugging Face model README
Will anyone pay for this x402 endpoint? Give it an x402 listing — resource URL, description, price, network — and it returns a calibrated probability that the endpoint receives at least one paid call in the next 7 days (and 14 days), in one forward pass.
It is a fine-tune of convaiinnovations/laya
(ModernBERT-large + decision head, 421M), trained on 31 days of daily snapshots of the
Coinbase CDP x402 discovery index (the "Bazaar"). It loads with laya.load() and needs
no listing history, so it works on a brand-new listing — or on one you have not published yet.
Demo: https://sentedge.ai/x402-demand/ (free) · Hosted telemetry scoring: $0.01 per call over x402 (see below)
Only about a quarter of listed x402 services get paid even once in a given week, and 59% of the listings present on 2026-08-24 were gone 30 days later. An agent choosing which endpoint to pay, or a builder deciding what to list, is working against that base rate.
pip install laya torch
import json, laya
agent = laya.load("Priceman614/x402-demand") # CPU is fine
QUESTIONS = { # use this exact wording - it is what the checkpoint was trained on
"paid_7d": {"type": "noul", "instructions": "Will this x402 pay-per-call API receive at least one paid call in the next 7 days?"},
"paid_14d": {"type": "noul", "instructions": "Will this x402 pay-per-call API receive at least one paid call in the next 14 days?"},
}
state = {
"resource": "https://api.example.dev/v1/forecast",
"description": "Hourly 7-day weather forecast for any lat/lon, JSON.",
"price_usd": "0.001", # USD per call, as a string
"network": "eip155:8453", # as it appears in the listing
}
out = agent.predict(json.dumps(state), QUESTIONS)["answers"]
print(out["paid_7d"]["noul"], out["paid_14d"]["noul"])
The state keys and their order matter: resource, description, price_usd, network,
serialised as JSON. Pass only the first 200 characters of the description. The
training snapshots stored descriptions cut to 200 characters, so the model has never
seen more.
Held-out test: later dates × hosts never seen in training (13,644 listing-days across 442 unseen hosts; details under Training below). ROC AUC for paid within 7 days:
| Model | All test hosts | New listings | Hosts with ≤ 20 listings |
|---|---|---|---|
| Recency rule (days since last paid call) | 0.635 | 0.416 | 0.696 |
| Logistic regression, telemetry | 0.678 | 0.500 | 0.731 |
| LightGBM, telemetry | 0.672 | 0.514 | 0.737 |
| x402-demand · listing only (this model) | 0.639 | 0.575 | 0.668 |
| x402-demand · listing + telemetry (not released) | 0.732 | 0.581 | 0.754 |

How to read this honestly:

Calibration. The checkpoint ships one fitted temperature (applied automatically by
laya.Agent). On the test set its expected calibration error is 0.116. It is
over-confident above ~0.5: treat 0.7 as "roughly 45%". If you need
decision-grade probabilities, refit calibration on your own traffic.

Full numbers, including paid_14d, Brier, ECE and segment breakdowns: results/metrics.json.
paid_Hd = 1 if the listing's quality.lastCalledAt advances within H days
of the snapshot, i.e. it received at least one paid call. It is not "still listed".
The index evicts a listing exactly 30 days after its last paid call, so survival is
mostly arithmetic on a known timestamp; paid demand is the real signal.docs/PROCESS.md.The listing + telemetry variant (AUC 0.73; isotonic-recalibrated, test ECE 0.079) runs against today's Bazaar catalog as a pay-per-call x402 endpoint. It costs $0.01 in USDC on Base:
POST https://sentedge.ai/api/x402-demand/score
{"resource": "<a resource URL listed in the CDP x402 Bazaar>"}
-> 402 Payment Required -> pay -> {"paid_7d": 0.62, "listing": {...live telemetry, days until eviction...}}
Resources that aren't in the current catalog are refused before payment, and a failed score is never settled. Spec: https://sentedge.ai/api/x402-demand. There's also a free demo of this listing-only model: https://sentedge.ai/x402-demand/
@misc{x402demand2026,
title = {x402-demand: calibrated paid-demand prediction for x402 endpoints},
author = {Price, Ryan},
year = {2026},
note = {Fine-tuned from convaiinnovations/laya on CDP Bazaar snapshots}
}
Base model © Convai Innovations, Apache-2.0.