API DOCUMENTATION
WOTS exposes a local REST API that allows overlays, dashboards, and third-party tools to access driver reputation data in real-time.
Overview
The WOTS Local API runs on your machine whenever the desktop app is open. It provides read-only access to your personal notebook data, current session information, and crowdsourced reputation data (if enabled).
The local API is available even without an iRacing login. Personal notebook data is always accessible. Crowdsourced data fields will be null if crowdsourcing is disabled.
Base URL
The API is served locally on a configurable port (default: 5820).
http://localhost:5820
The API only accepts connections from localhost. It cannot be accessed from other machines on your network.
Authentication
No authentication is required. The API is intended for local integrations only and trusts all localhost connections.
Endpoints
Description
Returns the current status of WOTS, including connection state, session status, and basic statistics. Use this to check if the API is running and whether the user is in an iRacing session.
Example Response
{
"version": "2.0.0",
"connected": true,
"inSession": true,
"crowdsourcingEnabled": true,
"stats": {
"totalDriversSeen": 1247,
"notebookEntries": 89
},
"timestamp": "2025-01-12T14:30:00Z"
}
Response Fields
Description
Returns information about the current iRacing session, including track and session type. Returns inSession: false if not currently in a session.
Example Response (In Session)
{
"inSession": true,
"sessionId": 12345,
"subsessionId": 67890123,
"trackName": "Spa-Francorchamps",
"trackConfig": "Grand Prix Pits",
"sessionType": "Race"
}
Example Response (Not In Session)
{
"inSession": false
}
Description
Returns all drivers in the current session (excluding the player), along with their personal notebook data and crowdsourced reputation. This is the primary endpoint for overlays displaying driver information.
Example Response
{
"inSession": true,
"sessionId": 12345,
"subsessionId": 67890123,
"trackName": "Spa-Francorchamps",
"sessionType": "Race",
"drivers": {
"123456": {
"custId": 123456,
"name": "Max Verstappen",
"customName": "Mad Max",
"carNumber": "1",
"seenCount": 5,
"userRep": 1,
"userNote": "Clean racer, gives space",
"userTags": [...],
"crowdRep": {...},
"crowdTags": {...}
}
}
}
Response Fields
Description
Look up a specific driver by their iRacing customer ID. Returns notebook data and crowd reputation if available.
Parameters
| Name | Type | Description |
|---|---|---|
| idrequired | integer | iRacing customer ID |
Example Request
GET /api/driver?id=123456
Example Response
{
"custId": 123456,
"name": "Max Verstappen",
"customName": "Mad Max",
"carNumber": null,
"seenCount": 5,
"userRep": 1,
"userNote": "Clean racer",
"userTags": [
{
"id": "clean",
"name": "Clean Racer",
"icon": "✨",
"category": "racecraft",
"color": "#4ade80"
}
],
"crowdRep": {
"score": 4,
"label": "Good",
"up": 23,
"down": 3,
"total": 26,
"weightedScore": 4.2,
"confidence": "high"
},
"crowdTags": {
"overall": [...],
"byCategory": {...}
}
}
Description
Returns all drivers in your personal notebook with their ratings, notes, tags, and crowd data. Includes additional metadata like when each entry was created and which session it originated from.
Example Response
{
"count": 89,
"entries": {
"123456": {
"custId": 123456,
"name": "Max Verstappen",
"customName": "Mad Max",
"carNumber": null,
"seenCount": 5,
"userRep": 1,
"userNote": "Clean racer",
"userTags": [...],
"crowdRep": {...},
"crowdTags": {...},
"votedAt": "2025-01-10T18:45:00Z",
"sessionId": 12345,
"subsessionId": 67890123
}
}
}
Additional Fields (Notebook Only)
Data Types
Driver Object
The standard driver object returned by most endpoints.
Crowd Rep Object
Crowdsourced reputation data. Only present when crowdsourcing is enabled and data exists for the driver.
Tag Object
Tags describe driver behaviour or characteristics. Both user-assigned tags and crowd tags use the same structure.
{
"id": "clean",
"name": "Clean Racer",
"icon": "✨",
"category": "racecraft",
"color": "#4ade80"
}
Crowd tags include additional count/percentage fields:
{
"id": "clean",
"name": "Clean Racer",
"icon": "✨",
"category": "Racecraft",
"color": "#4ade80",
"count": 15,
"percent": 42
}