This is the REST API that powers the JockeyBox self-hosted server. The mobile app talks to these endpoints to sync your vehicles, service records, fuel logs, and everything else.
Coming soon. The server container is actively being built. This documents the planned API surface — once it ships, every endpoint here will have full examples and response schemas.
Everything is relative to your server's base URL:
Everything comes back as JSON. Successful responses give you the data directly. Errors include a detail message and status_code so you know what went wrong.
http://localhost:16399/api/v1
{
"id": "abc-123",
"name": "My Truck",
"year": 2019
} {
"detail": "Vehicle not found",
"status_code": 404
} Auth is handled with Bearer tokens. Hit the Login endpoint to get a token, then pass it in the Authorization header on every request after that.
Tokens are good for 24 hours. When one expires, use Refresh Token to grab a new one without making the user log in again.
Authorization: Bearer YOUR_API_TOKEN curl -X GET \
http://localhost:16399/api/v1/vehicles \
-H "Authorization: Bearer eyJhbGc..." Quick pulse check — is the server alive and can it talk to the database? No auth needed.
/api/v1/health curl http://localhost:16399/api/v1/health
{
"status": "healthy",
"version": "1.0.0",
"database": "connected"
} Tells you what version the server is running and what it's configured to allow. No auth needed.
/api/v1/info {
"version": "1.0.0",
"registration_enabled": true,
"max_vehicles": 50,
"max_upload_size": "10MB"
} Log in and get back a token pair — access token for API calls, refresh token for when the access token expires.
/api/v1/auth/login | Parameter | Type | Description |
|---|---|---|
email | String | User's email address |
password | String | User's password |
curl -X POST \ http://localhost:16399/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "your-password" }'
{
"access_token": "eyJhbGci...",
"refresh_token": "eyJhbGci...",
"token_type": "bearer",
"expires_in": 86400
} Create a new account on the server. Only works when ENABLE_REGISTRATION is true — if you've locked that down, this returns a 403.
/api/v1/auth/register | Parameter | Type | Description |
|---|---|---|
email | String | Email address |
password | String | Password (min 8 characters) |
name | String | Display name |
curl -X POST \ http://localhost:16399/api/v1/auth/register \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "securepass123", "name": "Shane" }'
{
"id": "usr_abc123",
"email": "user@example.com",
"name": "Shane",
"created_at": "2026-03-02T12:00:00Z"
} Swap a refresh token for a fresh access token. Keeps the user logged in without re-entering credentials.
/api/v1/auth/refresh | Parameter | Type | Description |
|---|---|---|
refresh_token | String | The refresh token from login |
{
"access_token": "eyJhbGci...",
"expires_in": 86400
} Get all vehicles in the logged-in user's garage.
/api/v1/vehicles [
{
"id": "veh_abc123",
"year": 2019,
"make": "Toyota",
"model": "Tacoma",
"mileage": 45230,
"health_score": 92
}
] Add a vehicle to your garage. Year, make, and model are the only required fields — everything else is optional.
/api/v1/vehicles | Parameter | Type | Required | Description |
|---|---|---|---|
year | Integer | Yes | Model year |
make | String | Yes | Manufacturer |
model | String | Yes | Model name |
trim | String | No | Trim level |
mileage | Integer | No | Current mileage |
vin | String | No | VIN number |
license_plate | String | No | License plate |
curl -X POST \ http://localhost:16399/api/v1/vehicles \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{ "year": 2019, "make": "Toyota", "model": "Tacoma", "trim": "TRD Off-Road", "mileage": 45230 }'
{
"id": "veh_abc123",
"year": 2019,
"make": "Toyota",
"model": "Tacoma",
"trim": "TRD Off-Road",
"mileage": 45230,
"health_score": 100,
"created_at": "2026-03-02T12:00:00Z"
} Fetch a single vehicle by its ID.
/api/v1/vehicles/:id Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Change a vehicle's details — name, mileage, whatever.
/api/v1/vehicles/:id Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Permanently remove a vehicle and all of its associated records. No undo.
/api/v1/vehicles/:id Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Pull all service records for a given vehicle.
/api/v1/vehicles/:id/records Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Log a service — oil change, tire rotation, brakes, whatever you did.
/api/v1/vehicles/:id/records Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Fix a service record you already logged.
/api/v1/records/:id Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Remove a service record.
/api/v1/records/:id Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Get all fuel fill-up entries for a vehicle.
/api/v1/vehicles/:id/fuel Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Log a fill-up — gallons, cost, and odometer reading.
/api/v1/vehicles/:id/fuel Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Build a PDF maintenance report for a vehicle. Handy for selling or insurance.
/api/v1/vehicles/:id/report Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Download all your data as a portable JockeyBox archive (.jbx).
/api/v1/export Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
See every achievement available in the system.
/api/v1/achievements Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.
Check how far along you are on each achievement.
/api/v1/achievements/progress Full docs with parameters, response schemas, and examples are on the way.
# Request and response examples # will be documented here.