API
Données de marché
Données de marché publiques de Seeryx en REST : marchés, manche en cours, historique, carnets d’ordres, transactions, volume et marchés événementiels.
Vue d’ensemble
Tous les endpoints de données de marché sont publics : sans connexion, sans clé. Les réponses sont en JSON ; les prix sont en cents, les tailles en parts.
| Vous voulez | Appel |
|---|---|
| Tous les marchés crypto avec leur manche en cours et leurs meilleurs prix, en une seule requête | GET /api/markets/summary |
| La manche en cours d’un marché | GET /api/markets/BTC/5m/current |
| Une manche par son slug, passée, en cours ou à venir | GET /api/rounds/:slug |
| Le carnet complet d’un marché | GET /api/orderbook/:slug?side=up |
| Les transactions en temps réel | Abonnement à une manche sur le WebSocket ; GET /api/trades/:slug pour rattraper le retard |
| Les marchés événementiels et leurs questions | GET /api/events, GET /api/event-groups |
Marchés et manches
Les marchés crypto et leurs manches. Les manches se lisent par marché (la manche en cours, l’historique des manches réglées) ou par slug.
/api/marketsTous les marchés crypto
curl "https://seeryx.com/api/markets"[{ "asset": "BTC", "tf": "5m", "symbol": "BTCUSDT", "duration": 300, "liquidityRewards": true },
{ "asset": "BTC", "tf": "1h", "symbol": "BTCUSDT", "duration": 3600, "liquidityRewards": false },
{ "asset": "BTC", "tf": "1d", "symbol": "BTCUSDT", "duration": 86400, "liquidityRewards": false }, ...]- duration est la durée de la manche en secondes ; symbol, la paire Binance dont le prix décide des manches. liquidityRewards : les ordres en attente sur ce marché rapportent des points de liquidité (voir Bot de tenue de marché).
/api/markets/upcomingMarchés annoncés mais pas encore négociables
curl "https://seeryx.com/api/markets/upcoming"[{ "asset": "BTC", "tf": "1d", "opensAt": 1791993600 }]- Un marché apparaît dans GET /api/markets à partir de sa première manche ; d’ici là, il est listé ici avec le début de cette manche. Généralement vide.
/api/markets/summaryTous les marchés à la fois : manche en cours, meilleurs prix, derniers résultats
curl "https://seeryx.com/api/markets/summary"{ "at": 1791915884702, "markets": [{ "asset": "BTC", "tf": "5m",
"round": { "slug": "btc-updown-5m-1791915600", "asset": "BTC", "tf": "5m", "start": 1791915600, "end": 1791915900, "open": 83189.47, "close": null, "outcome": null, "status": "live" },
"up": { "bid": [52, 120], "ask": [54, 80] }, "down": { "bid": [46, 80], "ask": [48, 120] },
"last": [{ "start": 1791915300, "end": 1791915600, "outcome": "up" }, ...] }, ...] }- Le meilleur prix acheteur et le meilleur prix vendeur de chaque côté sous forme de [cents, parts], null quand ce côté est vide, et les 5 dernières manches réglées, de la plus récente à la plus ancienne. Actualisé au plus une fois par seconde : interrogez cet endpoint plutôt qu’un carnet par marché.
/api/markets/:asset/:tf/currentLa manche en cours d’un marché
| Champ | Type | Description |
|---|---|---|
asset | BTC | ETH | BNB | Casse indifférente |
tf | 5m | 15m | 1h | 1d | Durée de la manche |
curl "https://seeryx.com/api/markets/BTC/5m/current"{ "slug": "btc-updown-5m-1791916200", "asset": "BTC", "tf": "5m", "start": 1791916200, "end": 1791916500,
"open": 83082.005, "close": null, "outcome": null, "status": "live" }- Une manche dont la fin est passée reste "live" avec outcome null jusqu’à l’enregistrement de son prix de clôture, généralement en quelques secondes : vérifiez end, ne supposez pas qu’elle est encore négociable.
| Statut | Cas |
|---|---|
| 404 | Marché inexistant |
/api/markets/:asset/:tf/roundsManches réglées d’un marché, de la plus récente à la plus ancienne
| Champ | Type | Description |
|---|---|---|
asset | BTC | ETH | BNB | Casse indifférente |
tf | 5m | 15m | 1h | 1d | Durée de la manche |
before | number | Manches qui commencent avant cet instant, en secondes Unix ; maintenant par défaut |
limit | number | De 1 à 100, 24 par défaut |
curl "https://seeryx.com/api/markets/BTC/5m/rounds?limit=2"[{ "slug": "btc-updown-5m-1791915600", "asset": "BTC", "tf": "5m", "start": 1791915600, "end": 1791915900, "open": 83189.465, "close": 83133.425, "outcome": "down", "status": "settled" }, ...]- Passez le début de la dernière manche comme before pour obtenir la page suivante. Au plus 7 jours en arrière.
| Statut | Cas |
|---|---|
| 429 | Trop de lectures d’historique depuis votre adresse IP ; Retry-After indique quand réessayer |
/api/rounds/:slugUne manche, passée, en cours ou à venir
| Champ | Type | Description |
|---|---|---|
slug | string | Un slug de manche comme btc-updown-5m-1791916200, ou le slug d’un marché événementiel (ev-...) |
curl "https://seeryx.com/api/rounds/btc-updown-5m-1791916500"{ "slug": "btc-updown-5m-1791916500", "asset": "BTC", "tf": "5m", "start": 1791916500, "end": 1791916800, "open": null, "close": null, "outcome": null, "status": "upcoming" }- Répond pour toute manche négociable : la manche en cours et les dix suivantes d’un marché 5m ou 15m (la suivante pour 1h et 1d). Un slug d’événement répond au format d’une manche (tf "event", end = closesAt).
| Statut | Cas |
|---|---|
| 400 | "Round too far in future" ou "Invalid round slug" |
| 404 | Une manche passée qui n’est pas enregistrée |
/api/rounds/:slug/holdersLes principaux détenteurs de Hausse et de Baisse
| Champ | Type | Description |
|---|---|---|
slug | string | Un slug de manche comme btc-updown-5m-1791916200, ou le slug d’un marché événementiel (ev-...) |
curl "https://seeryx.com/api/rounds/btc-updown-5m-1791916200/holders"{ "up": { "count": 2, "holders": [{ "name": "alice", "handle": "alice", "address": "7xKXtg...gAsU", "avatar": null, "shares": 250.5 }] }, "down": { "count": 0, "holders": [] } }- count est le nombre total de comptes détenant ce côté ; holders, les 50 plus gros en nombre de parts. Les positions sont publiques, comme sur les profils. Mis en cache pendant 5 secondes.
/api/rounds/:slug/activityLes 100 dernières transactions d’un marché, avec le taker de chacune
| Champ | Type | Description |
|---|---|---|
slug | string | Un slug de manche comme btc-updown-5m-1791916200, ou le slug d’un marché événementiel (ev-...) |
curl "https://seeryx.com/api/rounds/btc-updown-5m-1791916200/activity"[{ "id": 812, "side": "up", "action": "buy", "shares": 20, "price": 47, "time": 1791916330063, "trader": { "name": "alice", "handle": "alice", "address": "7xKXtg...gAsU", "avatar": null }, "tx": "5Kq3...", "txStatus": "confirmed" }]- Les mêmes transactions que /trades/:slug, de la plus récente à la plus ancienne, chacune avec le profil public de son taker. tx est la transaction Solana de l’opération lorsqu’elle existe, avec txStatus pending, confirmed ou failed.
Carnet d’ordres, transactions et frais
Chaque endpoint de cette section accepte un slug de manche ou de marché événementiel.
/api/orderbook/:slugLe carnet d’ordres d’un côté
| Champ | Type | Description |
|---|---|---|
slug | string | Un slug de manche comme btc-updown-5m-1791916200, ou le slug d’un marché événementiel (ev-...) |
side | up | down | up par défaut (pour un marché événementiel : up correspond à Oui, down à Non) |
curl "https://seeryx.com/api/orderbook/btc-updown-5m-1791916200?side=up"{ "bids": [[17, 5], [16, 5], [15, 5]], "asks": [[26, 5], [27, 5], [28, 5]] }- Les niveaux sont [prix en cents, parts], du meilleur au moins bon, avec tous les niveaux du carnet. Les carnets sont le miroir l’un de l’autre : un ordre d’achat Hausse à p est un ordre de vente Baisse à 100 − p, chaque carnet montre donc tous les ordres.
/api/trades/:slugLes 100 dernières transactions, de la plus récente à la plus ancienne
| Champ | Type | Description |
|---|---|---|
slug | string | Un slug de manche comme btc-updown-5m-1791916200, ou le slug d’un marché événementiel (ev-...) |
curl "https://seeryx.com/api/trades/btc-updown-5m-1791916200"[{ "id": 13, "side": "down", "action": "buy", "shares": 10, "price": 53, "time": 1791916330063 }]- side, action et price (en cents) sont ceux de l’ordre du taker ; time est en millisecondes Unix.
/api/volume/:slugVolume et nombre de transactions
| Champ | Type | Description |
|---|---|---|
slug | string | Un slug de manche comme btc-updown-5m-1791916200, ou le slug d’un marché événementiel (ev-...) |
curl "https://seeryx.com/api/volume/btc-updown-5m-1791916200"{ "volume": 55.845724, "trades": 13 }- volume est en USDC.
/api/feesTaux des frais taker, remise maker et ordre minimum
curl "https://seeryx.com/api/fees"{ "rateBps": 700, "rebateBps": 2000, "minOrderShares": 5 }- Le taker paie parts × rateBps/10000 × p × (1 − p), p étant le prix en dollars ; le maker en récupère rebateBps/10000. Voir Frais.
/api/noticeUn avis à tous les traders, s’il y en a un
curl "https://seeryx.com/api/notice"{ "notice": null }- Sinon { "text": "...", "level": "info" | "warning", "at": <ms> }. Tant que le trading est suspendu, les ordres, les scissions et les fusions répondent 503 trading_halted ; les annulations continuent de fonctionner.
/api/statsVolume, transactions et traders sur 24 heures, par marché et au total
curl "https://seeryx.com/api/stats"{ "volume24h": 41.493814, "trades24h": 16, "traders24h": 3,
"markets": { "btc-5m": { "volume24h": 41.493814, "trades24h": 16, "traders24h": 3 } } }- Mis en cache pendant 5 secondes.
Marchés événementiels
Des questions Oui/Non résolues par l’Optimistic Oracle d’UMA. Un marché événementiel se négocie comme une longue manche unique : son slug fonctionne avec le carnet d’ordres, les transactions, le volume, les ordres et le WebSocket. Up correspond à Oui, Down à Non.
/api/eventsTous les marchés événementiels
curl "https://seeryx.com/api/events"[{ "slug": "ev-mlb-ws26-brewers", "groupId": "mlb-world-series-2026", "group": "MLB World Series Champion 2026", "title": "Milwaukee Brewers",
"question": "Will the Milwaukee Brewers win the 2026 World Series?", "rules": "...", "category": "sports",
"closesAt": 1792796400, "createdAt": 1791840170963, "status": "open", "outcome": null, "oracle": { "kind": "uma-oov3", ... } }, ...]- status : open, closed (trading terminé, en attente d’UMA) ou resolved ; outcome "yes" ou "no" une fois résolu. closesAt (secondes Unix) est l’heure d’arrêt du trading.
/api/events/:slugUn marché événementiel
| Champ | Type | Description |
|---|---|---|
slug | string | ev-... |
curl "https://seeryx.com/api/events/ev-mlb-ws26-brewers"{ "slug": "ev-mlb-ws26-brewers", "title": "Milwaukee Brewers", "closesAt": 1792796400, "status": "open", "outcome": null, ... }| Statut | Cas |
|---|---|
| 404 | Ce n’est pas un marché événementiel |
/api/event-groupsLes questions avec leurs issues et leurs prix
| Champ | Type | Description |
|---|---|---|
category | finance | politics | sports | esports | weather | Facultatif |
curl "https://seeryx.com/api/event-groups?category=politics"[{ "id": "us-aliens-2026", "category": "politics", "title": "Will the US confirm that aliens exist before 2027?", "status": "open",
"outcomes": [{ "slug": "ev-us-aliens-dec31", "label": "Before 2027", "closesAt": 1798779540, "status": "open", "outcome": null,
"yes": { "bid": 1, "ask": 5 }, "no": { "bid": 95, "ask": 99 }, "chance": 3, "change24h": null, "history": [[1791830000, 3]] }] }]- Une question regroupe un ou plusieurs marchés événementiels (ses issues). history contient une semaine de points [secondes Unix, cents].
/api/event-groups/:idUne question avec ses issues
| Champ | Type | Description |
|---|---|---|
id | string | L’id de la question, ou le slug de l’une de ses issues |
range | 1h | 1d | 1w | 1m | max | Historique des prix, 1m par défaut |
curl "https://seeryx.com/api/event-groups/us-aliens-2026?range=1w"{ "id": "us-aliens-2026", "title": "Will the US confirm that aliens exist before 2027?", "outcomes": [...], "seriesGroups": [...] }| Statut | Cas |
|---|---|
| 404 | Question inconnue |
/api/event-groups/:id/holdersLes principaux détenteurs de chaque issue
| Champ | Type | Description |
|---|---|---|
id | string | L’id de la question |
curl "https://seeryx.com/api/event-groups/us-aliens-2026/holders"[{ "slug": "ev-us-aliens-dec31", "label": "Before 2027", "yes": [], "no": [] }]- Les dix plus grosses positions Oui et les dix plus grosses positions Non de chaque issue.