GET /api/v1/trending/composite
Trending names ranked by a weighted composite score combining all signals. The response includes the breakdown by signal and the scoring weights.
Authentication: Optional
Cache: None
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
period | string | 24h | Time period: 24h or 7d |
limit | number | 20 | Results to return (1-100) |
Trending Metrics
| Field | Type | Description |
|---|---|---|
trending_score | number | Weighted composite score |
breakdown.views | number | Views in the period |
breakdown.watchlist_adds | number | Watchlist additions |
breakdown.votes | number | Total votes |
breakdown.offers | number | Offers received |
breakdown.sales | number | Sales count |
Score Weights
| Signal | Weight |
|---|---|
| Views | 1 |
| Watchlist adds | 5 |
| Upvotes | 3 |
| Downvotes | -1 |
| Offers | 10 |
| Listings | 8 |
| Sales | 50 |
Sample Request
curl "https://api.grails.app/api/v1/trending/composite?period=24h&limit=10"Response
// 200 OK
{
"success": true,
"data": {
"names": [
{
// ... standard SearchResult fields (id, name, token_id, owner, etc.)
"trending_metrics": {
"period": "24h",
"trending_score": 285.5,
"breakdown": {
"views": 150,
"watchlist_adds": 5,
"votes": 12,
"offers": 3,
"sales": 1
}
}
}
],
"meta": {
"period": "24h",
"type": "composite",
"limit": 10,
"score_weights": {
"views": 1,
"watchlist_adds": 5,
"upvotes": 3,
"downvotes": -1,
"offers": 10,
"listings": 8,
"sales": 50
}
}
},
"meta": {
"timestamp": "2026-04-07T12:00:00.000Z",
"version": "1.0.0"
}
}Last updated on