Download OpenAPI specification:Download
The JLR Data Hub API lets you securely access data from your connected Jaguar and Land Rover vehicles. Use it to read vehicle details, status, journeys, location, and electric-vehicle data on demand.
Browsing the Metadata Catalog (signal categories and fields) is public and needs no sign-in. Accessing vehicle data requires an access token; see the Authentication guides for how to obtain one and make your first request.
Health check that returns the status of all backend services. This endpoint is publicly accessible and does not require authentication. Returns 200 if all services are healthy, 503 if one or more services are unhealthy.
{- "status": "UP",
- "services": {
- "metadata-catalog": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "credential-management": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "fleet-vehicle-management": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "customer-vehicle": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "share-agreements": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "historic-data": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}
}
}List all signal categories. This endpoint is publicly accessible and does not require authentication.
| name | string Filter categories by name (partial match). |
| vin | string = 17 characters Filter categories to those available for a specific vehicle. |
| usership | string Enum: "sole-user" "shared-user" "corporate" Usership type of the vehicle. Required when the vin parameter is provided. |
{- "items": [
- {
- "categoryId": "electric-data",
- "name": "Electric Data",
- "description": "Battery and electric powertrain signals including state of charge, voltage, and current",
- "signalCount": 24
}, - {
- "categoryId": "tyres",
- "name": "Tyres",
- "description": "Tyre pressure, temperature, and wear signals for all four wheels",
- "signalCount": 12
}, - {
- "categoryId": "warnings",
- "name": "Warnings",
- "description": "Warning indicator signals for driver alerts and system faults",
- "signalCount": 18
}
]
}List signals for a specific category. This endpoint is publicly accessible and does not require authentication.
| categoryId required | string Kebab-case category identifier. |
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| vin | string = 17 characters Filter signals to those available for a specific vehicle. |
| usership | string Enum: "sole-user" "shared-user" "corporate" Usership type of the vehicle. Required when the vin parameter is provided. |
| streamable | boolean Filter signals by streamable status. |
| dataType | string Filter signals by data type. |
| name | string Filter signals by name (partial match). |
{- "items": [
- {
- "name": "State of Charge",
- "description": "Current battery state of charge as a percentage of total capacity",
- "vssIdentifier": "Vehicle.Powertrain.TractionBattery.StateOfCharge.Current",
- "dataType": "float",
- "typicalValues": [
- "0",
- "25",
- "50",
- "75",
- "100"
], - "valueRange": {
- "min": 0,
- "max": 100
}, - "unit": "%",
- "streamable": true
}, - {
- "name": "Battery Voltage",
- "description": "Current voltage of the high-voltage traction battery",
- "vssIdentifier": "Vehicle.Powertrain.TractionBattery.CurrentVoltage",
- "dataType": "float",
- "typicalValues": [
- "350",
- "380",
- "400",
- "420"
], - "valueRange": {
- "min": 0,
- "max": 500
}, - "unit": "V",
- "streamable": true
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}List all signals across all categories. This endpoint is publicly accessible and does not require authentication.
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| vin | string = 17 characters Filter signals to those available for a specific vehicle. |
| usership | string Enum: "sole-user" "shared-user" "corporate" Usership type of the vehicle. Required when the vin parameter is provided. |
| category | string Filter signals by category identifier. |
| streamable | boolean Filter signals by streamable status. |
| dataType | string Filter signals by data type. |
| name | string Filter signals by name (partial match). |
{- "items": [
- {
- "name": "State of Charge",
- "description": "Current battery state of charge as a percentage of total capacity",
- "vssIdentifier": "Vehicle.Powertrain.TractionBattery.StateOfCharge.Current",
- "dataType": "float",
- "typicalValues": [
- "0",
- "25",
- "50",
- "75",
- "100"
], - "valueRange": {
- "min": 0,
- "max": 100
}, - "unit": "%",
- "streamable": true,
- "categoryId": "electric-data"
}, - {
- "name": "Tyre Pressure Front Left",
- "description": "Current air pressure of the front-left tyre",
- "vssIdentifier": "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure",
- "dataType": "float",
- "typicalValues": [
- "30.0",
- "32.5",
- "35.0"
], - "valueRange": {
- "min": 0,
- "max": 60
}, - "unit": "psi",
- "streamable": true,
- "categoryId": "tyres"
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}Retrieve vehicle details and capabilities.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456",
- "Brand": "Land Rover",
- "Model": "Range Rover Sport",
- "Year": 2024,
- "BodyType": "SUV",
- "LicensePlate": "AB12 CDE"
}, - "Powertrain": {
- "FuelType": "electric"
}, - "Exterior": {
- "Colour": "Santorini Black"
}, - "Capabilities": [
- "remote-lock",
- "remote-climate",
- "live-data-streaming",
- "journey-log",
- "ev-charging"
], - "Features": [
- {
- "featureId": "remote-lock",
- "name": "Remote Lock/Unlock",
- "active": true
}
]
}
}Retrieve real-time vehicle status.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "TraveledDistance": 12450.5,
- "Chassis": {
- "Axle": {
- "Row1": {
- "Wheel": {
- "Left": {
- "Tire": {
- "Pressure": 224
}
}, - "Right": {
- "Tire": {
- "Pressure": 224
}
}
}
}, - "Row2": {
- "Wheel": {
- "Left": {
- "Tire": {
- "Pressure": 234
}
}, - "Right": {
- "Tire": {
- "Pressure": 234
}
}
}
}
}
}, - "Cabin": {
- "Door": {
- "Row1": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}, - "Row2": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}
}, - "Window": {
- "Row1": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}, - "Row2": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}
}
}, - "Body": {
- "Hood": {
- "IsOpen": false
}, - "Trunk": {
- "Rear": {
- "IsOpen": false
}
}, - "IsLocked": true
}, - "Powertrain": {
- "FuelSystem": {
- "Level": 72.5
}
}
}, - "timestamp": "2024-06-15T14:30:00Z"
}Retrieve vehicle journey history.
| vin required | string = 17 characters Vehicle Identification Number. |
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| from | string <date-time> Filter journeys starting from this date-time (inclusive). |
| to | string <date-time> Filter journeys up to this date-time (inclusive). |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "items": [
- {
- "journeyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "startTime": "2024-06-15T08:00:00Z",
- "endTime": "2024-06-15T08:45:00Z",
- "duration": 2700,
- "distance": {
- "value": 23.4,
- "unit": "km"
}, - "averageSpeed": {
- "value": 45.2,
- "unit": "km/h"
}, - "startLocation": {
- "latitude": 51.5074,
- "longitude": -0.1278
}, - "endLocation": {
- "latitude": 51.5074,
- "longitude": -0.1278
}, - "energyUsed": {
- "value": 8.3,
- "unit": "kWh"
}
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}Retrieve current vehicle location.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "CurrentLocation": {
- "Latitude": 51.5074,
- "Longitude": -0.1278,
- "Altitude": 11,
- "Heading": 245,
- "Timestamp": "2024-06-15T14:30:00Z"
}, - "Speed": 0
}, - "timestamp": "2024-06-15T14:30:00Z"
}Retrieve electric vehicle data.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "Powertrain": {
- "TractionBattery": {
- "StateOfCharge": {
- "Current": 78.5
}, - "Range": 245,
- "Charging": {
- "IsCharging": true,
- "ChargeLimit": 80,
- "Mode": "ac-charging",
- "ChargeCurrent": {
- "DC": 0,
- "Phase1": 32,
- "Phase2": 32,
- "Phase3": 32
}, - "ChargeVoltage": {
- "DC": 0,
- "Phase1": 230,
- "Phase2": 230,
- "Phase3": 230
}, - "ChargeRate": 7.4,
- "TimeToComplete": 7200,
- "IsPlugConnected": true
}
}
}
}, - "timestamp": "2024-06-15T14:30:00Z"
}