API de rejeu d'événements
L'API de rejeu d'événements permet de récupérer les événements que votre système a pu manquer. Tous les événements (changements de marché, transactions, règlements, etc.) sont persistés avec des numéros de séquence croissants et conservés pendant 24 heures.
Authentification : En-tête X-Api-Key requis.
Pourquoi le rejeu d'événements ?
Si votre endpoint webhook tombe en panne ou si votre WebSocket se déconnecte, vous pouvez rejouer les événements manqués :
1. Store the last sequence number you processed
2. When reconnected, call GET /api/v1/events?since={lastSequence}
3. Process events in order
4. Update your stored sequence number
Rejouer des événements
GET /api/v1/events
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
since | integer | Retourne les événements avec un numéro de séquence supérieur à cette valeur |
eventType | string | Filtrer par type d'événement (ex. ORDER_MATCHED) |
marketId | string (UUID) | Filtrer par marché |
limit | integer | Taille de la page (défaut : 100, max : 1000) |
Exemple — récupérer tous les événements depuis le numéro de séquence 42 :
curl "https://polymarket.sandbox.playbatman.com/api/v1/events?since=42&limit=100" \
-H "X-Api-Key: your-api-key"
Réponse :
{
"success": true,
"data": {
"events": [
{
"id": "event-uuid-1",
"sequence": 43,
"operatorId": "operator-uuid",
"eventType": "ORDER_PLACED",
"marketId": "market-uuid",
"payload": {
"orderId": "order-uuid",
"marketId": "market-uuid",
"outcomeId": "outcome-uuid",
"operatorId": "operator-uuid",
"side": "BUY",
"type": "LIMIT",
"shares": 50,
"price": 0.65,
"status": "PENDING",
"filledShares": 0,
"timestamp": 1708293600000
},
"createdAt": "2026-02-18T23:00:00.000Z",
"expiresAt": "2026-02-19T23:00:00.000Z"
},
{
"id": "event-uuid-2",
"sequence": 44,
"operatorId": "operator-uuid",
"eventType": "ORDER_MATCHED",
"marketId": "market-uuid",
"payload": {
"orderId": "order-uuid",
"marketId": "market-uuid",
"outcomeId": "outcome-uuid",
"operatorId": "operator-uuid",
"tradeId": "trade-uuid",
"side": "BUY",
"price": 0.65,
"shares": 50,
"filledShares": 50,
"remainingShares": 0,
"status": "FILLED",
"timestamp": 1708293600000
},
"createdAt": "2026-02-18T23:00:01.000Z",
"expiresAt": "2026-02-19T23:00:01.000Z"
}
],
"hasMore": true,
"lastSequence": 44
}
}
Pagination
Utilisez le lastSequence de la réponse comme paramètre since dans votre prochaine requête :
# First page
GET /api/v1/events?limit=100
# Next page (using lastSequence from previous response)
GET /api/v1/events?since=44&limit=100
# Continue until hasMore is false
Filtrage
Par type d'événement
# Only trade events
GET /api/v1/events?eventType=ORDER_MATCHED
# Only market resolution events
GET /api/v1/events?eventType=MARKET_RESOLVED
Par marché
# Events for a specific market
GET /api/v1/events?marketId=market-uuid
# Combined filters
GET /api/v1/events?marketId=market-uuid&eventType=ORDER_MATCHED&since=100
Types d'événements
| Type d'événement | Description |
|---|---|
MARKET_CREATED | Un nouveau marché a été créé |
MARKET_STATUS_CHANGED | Le statut du marché a changé (ouvert, suspendu, fermé, etc.) |
MARKET_RESOLVED | Le marché a été résolu avec un résultat gagnant |
ORDER_BOOK_UPDATE | Le carnet d'ordres a changé |
PRICE_UPDATED | Les prix du marché ont été mis à jour |
ORDER_PLACED | Un nouvel ordre a été soumis |
ORDER_MATCHED | Un ordre a été mis en correspondance, transaction exécutée |
ORDER_CANCELLED | Un ordre a été annulé |
POSITION_UPDATED | Une position a été mise à jour |
SETTLEMENT_COMPLETED | Un règlement a été traité |
Champs des événements
| Champ | Type | Description |
|---|---|---|
id | string (UUID) | Identifiant unique de l'événement |
sequence | integer | Numéro de séquence croissant de façon monotone |
operatorId | string (UUID) | Opérateur auquel appartient l'événement |
eventType | string | L'un des types d'événements ci-dessus |
marketId | string (UUID) | null | Marché associé (null pour les événements non liés à un marché) |
payload | object | Données spécifiques à l'événement |
createdAt | string (ISO 8601) | Date et heure de l'événement |
expiresAt | string (ISO 8601) | Date et heure de suppression de l'événement (rétention de 24h) |
Rétention
- Les événements sont conservés pendant 24 heures à partir de leur création
- Les événements expirés sont automatiquement nettoyés toutes les heures
- Enregistrez la valeur
lastSequencede votre côté pour reprendre après des interruptions
Modèle d'intégration
Voici un modèle recommandé pour un traitement fiable des événements :
let lastSequence = loadLastSequence(); // Load from your database
async function syncEvents() {
let hasMore = true;
while (hasMore) {
const response = await fetch(
`https://polymarket.sandbox.playbatman.com/api/v1/events?since=${lastSequence}&limit=100`,
{ headers: { 'X-Api-Key': API_KEY } }
);
const { data } = await response.json();
for (const event of data.events) {
await processEvent(event);
lastSequence = event.sequence;
saveLastSequence(lastSequence); // Persist to your database
}
hasMore = data.hasMore;
}
}
// Run on startup and periodically as a safety net
syncEvents();
setInterval(syncEvents, 60000); // Every minute