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).

Available at All Feature Levels

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).

Base URL
http://localhost:5820
Local Only

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

GET /api/status System status and stats

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

200 OK
{
  "version": "2.0.0",
  "connected": true,
  "inSession": true,
  "crowdsourcingEnabled": true,
  "stats": {
    "totalDriversSeen": 1247,
    "notebookEntries": 89
  },
  "timestamp": "2025-01-12T14:30:00Z"
}

Response Fields

version API version string
connected Whether WOTS is connected to iRacing
inSession Whether the user is currently in a session
crowdsourcingEnabled Whether crowdsourcing features are enabled
stats.totalDriversSeen Total unique drivers encountered across all sessions
stats.notebookEntries Number of drivers in the personal notebook
GET /api/session Current session information

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)

200 OK
{
  "inSession": true,
  "sessionId": 12345,
  "subsessionId": 67890123,
  "trackName": "Spa-Francorchamps",
  "trackConfig": "Grand Prix Pits",
  "sessionType": "Race"
}

Example Response (Not In Session)

200 OK
{
  "inSession": false
}
GET /api/session/drivers All drivers in current session with reputation data

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

200 OK
{
  "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

drivers Object keyed by custId containing driver objects. See Driver Object for full structure.
GET /api/driver?id={custId} Single driver lookup by iRacing customer ID

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

Request
GET /api/driver?id=123456

Example Response

200 OK
{
  "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": {...}
  }
}
GET /api/notebook All entries in the personal notebook

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

200 OK
{
  "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)

votedAt ISO timestamp when the entry was created/last updated
sessionId iRacing session ID where this driver was first rated
subsessionId iRacing subsession ID where this driver was first rated

Data Types

Driver Object

The standard driver object returned by most endpoints.

custId iRacing customer ID (integer)
name Driver display name (string or null)
customName User-assigned custom display name (string or null). When set, overlays can use this instead of the real driver name.
carNumber Current car number if in session (string or null)
seenCount Number of sessions you've encountered this driver (integer)
userRep Your personal rating: 1 (thumbs up), -1 (thumbs down), null (watchlist/no rating)
userNote Your personal note about this driver (string or null)
userTags Array of tag objects you've assigned. See Tags.
crowdRep Crowdsourced reputation data (object or null). See Crowd Rep.
crowdTags Crowdsourced tags with counts (object or null)

Crowd Rep Object

Crowdsourced reputation data. Only present when crowdsourcing is enabled and data exists for the driver.

score Reputation score from 1-5 (1=Avoid, 2=Poor, 3=Mixed, 4=Good, 5=Excellent)
label Human-readable label: "Avoid", "Poor", "Mixed", "Good", or "Excellent"
up Total thumbs up votes (integer)
down Total thumbs down votes (integer)
total Total votes (up + down)
weightedScore Decimal score with time decay applied (1.0-5.0)
confidence Data reliability: "low" (<5 votes), "medium" (5-20 votes), "high" (>20 votes)

Tag Object

Tags describe driver behaviour or characteristics. Both user-assigned tags and crowd tags use the same structure.

Tag Object
{
  "id": "clean",
  "name": "Clean Racer",
  "icon": "✨",
  "category": "racecraft",
  "color": "#4ade80"
}
id Unique tag identifier
name Human-readable tag name
icon Emoji icon for display
category Tag category: "racecraft", "demeanour", "identity", or "misc"
color Hex color for styling

Crowd tags include additional count/percentage fields:

Crowd Tag Object
{
  "id": "clean",
  "name": "Clean Racer",
  "icon": "✨",
  "category": "Racecraft",
  "color": "#4ade80",
  "count": 15,
  "percent": 42
}