Easiest way to integrate apps with cars

Smartcar’s vehicle API enables you to verify mileage, manage EV charging, issue digital car keys, track fleets, and much more.

Smartcar’s vehicle API enables you to verify mileage, manage EV charging, issue digital car keys, track fleets, and much more.

Powering mobility worldwide

 

Smartcar enables mobility businesses to integrate their apps and services with connected cars. Easily retrieve vehicle data and trigger actions with our simple and secure car API. Track a vehicle’s location, verify mileage, charge an EV, share a virtual key, and more.

Learn more about our platform

Onboard users in seconds

With our Smartcar Connect flow, your customers can instantly and effortlessly link their cars to your app. All it takes is four clicks directly from your mobile application or web portal.

  • Works with your web or mobile app
  • Simple and elegant user interface
  • Supports OAuth2 authorization
  • Available in multiple languages
Turo mobile app prompting the user to connect their car, allowing approved guests to unlock the vehicle from the Turo app
Pop-up window in the Turo app communicating that Turo uses Smartcar to connect to the user’s car
Pop-up window in the Turo app prompting the user to select their car brand
Pop-up window in the Turo app prompting the user to sign in with their Tesla username and password
Pop-up window in the Turo app requesting the odometer, location, and lock/unlock permissions to the user’s 2020 Tesla Model S
Turo app telling the user that guests can now unlock their 2020 Tesla Model S from the Turo app
Previous slide
Next slide

A stellar developer experience

Our friendly documentation and SDKs allow you to quickly integrate our car API with every tech stack.

const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's location
const location = await vehicle.location();

// Example http response from Smartcar
{
  "latitude": 37.4292,
  "longitude": 122.1381
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's location
location = vehicle.location()

// Example http response from Smartcar
{
  "latitude": 37.4292,
  "longitude": 122.1381
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's location
VehicleLocation location = vehicle.location();

// Example http response from Smartcar
{
  "latitude": 37.4292,
  "longitude": 122.1381
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's location
var fuel, resErr = vehicle.GetLocation(context.TODO());

// Example http response from Smartcar
{
  "latitude": 37.4292,
  "longitude": 122.1381
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's location
location = vehicle.location()

// Example http response from Smartcar
{
  "latitude": 37.4292,
  "longitude": 122.1381
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's odometer
const odometer = await vehicle.odometer();

// Example http response from Smartcar
{
  "distance": 104.32
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's odometer
odometer = vehicle.odometer()

// Example http response from Smartcar
{
  "distance": 104.32
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's odometer
VehicleOdometer odometer = vehicle.odometer();

// Example http response from Smartcar
{
  "distance": 104.32
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's odometer
var odometer, resErr = vehicle.GetOdometer(context.TODO());

// Example http response from Smartcar
{
  "distance": 104.32
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's odometer
odometer = vehicle.odometer()

// Example http response from Smartcar
{
  "distance": 104.32
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Lock the vehicle
await vehicle.lock();

// Unlock the vehicle
await vehicle.unlock();

// Example http response from Smartcar
{
  "status": "success"
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Lock the vehicle
vehicle.lock()

# Unlock the vehicle
vehicle.unlock()

// Example http response from Smartcar
{
  "status": "success"
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Lock the vehicle
vehicle.lock();

// Unlock the vehicle
vehicle.unlock();

// Example http response from Smartcar
{
  "status": "success"
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Lock the vehicle
var lock, resErr = vehicle.Lock(context.TODO());

// Unlock the vehicle
var unlock, resErr = vehicle.Unlock(context.TODO());

// Example http response from Smartcar
{
  "status": "success"
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Lock the vehicle
vehicle.lock!

# Unlock the vehicle
vehicle.unlock!

// Example http response from Smartcar
{
  "status": "success"
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's battery level
const battery = await vehicle.battery();

// Fetch the vehicle's battery capacity 
const batteryCapacity = await vehicle.batteryCapacity();

// Example http response from Smartcar (battery level)
{
  "percentRemaining": 0.3,
  "range": 40.5,
}

// Example http response from Smartcar (battery capacity)
{
  "capacity": 28.7,
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's battery level
battery = vehicle.battery()

# Fetch the vehicle's battery capacity 
battery_capacity = vehicle.battery_capacity()

// Example http response from Smartcar (battery level)
{
  "percentRemaining": 0.3,
  "range": 40.5,
}

// Example http response from Smartcar (battery capacity)
{
  "capacity": 28.7,
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's battery level
VehicleBattery battery = vehicle.battery();

// Fetch the vehicle's battery capacity 
VehicleBatteryCapacity batteryCapacity = vehicle.batteryCapacity();

// Example http response from Smartcar (battery level)
{
  "percentRemaining": 0.3,
  "range": 40.5,
}

// Example http response from Smartcar (battery capacity)
{
  "capacity": 28.7,
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's battery level
var battery, resErr = vehicle.GetBattery(context.TODO());

// Fetch the vehicle's battery capacity 
var batteryCapacity, resErr = vehicle.GetBatteryCapacity(context.TODO());

// Example http response from Smartcar (battery level)
{
  "percentRemaining": 0.3,
  "range": 40.5,
}

// Example http response from Smartcar (battery capacity)
{
  "capacity": 28.7,
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's battery level
battery = vehicle.battery()

# Fetch the vehicle's battery capacity 
battery_capacity = vehicle.battery_capacity()

// Example http response from Smartcar (battery level)
{
  "percentRemaining": 0.3,
  "range": 40.5,
}

// Example http response from Smartcar (battery capacity)
{
  "capacity": 28.7,
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's charging status
const charge = await vehicle.charge();

// Start the vehicle's charging session
await vehicle.startCharge();

// Set the vehicle's charge limit
await vehicle.setChargeLimit(0.8);

// Example http response from Smartcar (charging status)
{
  "isPluggedIn": true,
  "state":"FULLY_CHARGED"
}

// Example http response from Smartcar (start charge)
{
  "status": "success"
}

// Example http response from Smartcar (set charge limit)
{
  "status": "success"
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's charging status
charge = vehicle.charge()

# Start the vehicle's charging session
vehicle.start_charge()

# Set the vehicle's charge limit
vehicle.set_charge_limit(0.8)

// Example http response from Smartcar (charging status)
{
  "isPluggedIn": true,
  "state":"FULLY_CHARGED"
}

// Example http response from Smartcar (start charge)
{
  "status": "success"
}

// Example http response from Smartcar (set charge limit)
{
  "status": "success"
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's charging status
VehicleCharge charge = vehicle.charge();

// Start the vehicle's charging session
vehicle.startCharge();

// Set the vehicle's charge limit
vehicle.setChargeLimit(0.8)

// Example http response from Smartcar (charging status)
{
  "isPluggedIn": true,
  "state":"FULLY_CHARGED"
}

// Example http response from Smartcar (start charge)
{
  "status": "success"
}

// Example http response from Smartcar (set charge limit)
{
  "status": "success"
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's charging status
var charge, resErr = vehicle.GetCharge(context.TODO());

// Start the vehicle's charging session
var startCharge, resErr = vehicle.StartCharge(context.TODO());

// Example http response from Smartcar (charging status)
{
  "isPluggedIn": true,
  "state":"FULLY_CHARGED"
}

// Example http response from Smartcar (start charge)
{
  "status": "success"
}

// Example http response from Smartcar (set charge limit)
{
  "status": "success"
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's charging status
charge = vehicle.charge()

# Start the vehicle's charging session
vehicle.startCharge!

# Set the vehicle's charge limit
vehicle.set_charge_limit!(0.8)

// Example http response from Smartcar (charging status)
{
  "isPluggedIn": true,
  "state":"FULLY_CHARGED"
}

// Example http response from Smartcar (start charge)
{
  "status": "success"
}

// Example http response from Smartcar (set charge limit)
{
  "status": "success"
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's fuel tank level
const fuel = await vehicle.fuel();

// Example http response from Smartcar
{
  "amountRemaining": 53.2,
  "percentRemaining": 0.3,
  "range": 40.5
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's fuel tank level
fuel = vehicle.fuel()

// Example http response from Smartcar
{
  "amountRemaining": 53.2,
  "percentRemaining": 0.3,
  "range": 40.5
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's fuel tank level
VehicleFuel fuel = vehicle.fuel();

// Example http response from Smartcar
{
  "amountRemaining": 53.2,
  "percentRemaining": 0.3,
  "range": 40.5
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's fuel tank level
var fuel, resErr = vehicle.GetFuel(context.TODO());

// Example http response from Smartcar
{
  "amountRemaining": 53.2,
  "percentRemaining": 0.3,
  "range": 40.5
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's fuel tank level
fuel = vehicle.fuel()

// Example http response from Smartcar
{
  "amountRemaining": 53.2,
  "percentRemaining": 0.3,
  "range": 40.5
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's tire pressure
const tirePressure = await vehicle.tirePressure();

// Example http response from Smartcar
{
  "backLeft": 219.3,
  "backRight": 219.3,
  "frontLeft": 219.3,
  "frontRight": 219.3,
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's tire pressure
tire_pressure = vehicle.tirePressure()

// Example http response from Smartcar
{
  "backLeft": 219.3,
  "backRight": 219.3,
  "frontLeft": 219.3,
  "frontRight": 219.3,
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's attributes
VehicleTirePressure tirePressure = vehicle.tirePressure();

// Example http response from Smartcar
{
  "backLeft": 219.3,
  "backRight": 219.3,
  "frontLeft": 219.3,
  "frontRight": 219.3,
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"}
);

// Fetch the vehicle's tire pressure
var tirePressure, resErr = vehicle.GetTirePressure(context.TODO());

// Example http response from Smartcar
{
  "backLeft": 219.3,
  "backRight": 219.3,
  "frontLeft": 219.3,
  "frontRight": 219.3,
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's tire pressure
tire_pressure = vehicle.tire_pressure()

// Example http response from Smartcar
{
  "backLeft": 219.3,
  "backRight": 219.3,
  "frontLeft": 219.3,
  "frontRight": 219.3,
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's engine oil life
const oil = await vehicle.oil();

// Example http response from Smartcar
{
  "lifeRemaining": 0.35
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's engine oil life
oil = vehicle.oil()

// Example http response from Smartcar
{
  "lifeRemaining": 0.35
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's engine oil life
VehicleEngineOil oil = vehicle.oil();

// Example http response from Smartcar
{
  "lifeRemaining": 0.35
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's engine oil life
var oil, resErr = vehicle.GetOil(context.TODO());

// Example http response from Smartcar
{
  "lifeRemaining": 0.35
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's engine oil life
engine_oil = vehicle.engine_oil()

// Example http response from Smartcar
{
  "lifeRemaining": 0.35
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's attributes
const vehicleAttributes = await vehicle.attributes();

// Example http response from Smartcar
{
  "id": "36ab27d0-fd9d-4455-823a-ce30af709ffc",
  "make": "TESLA",
  "model": "Model S",
  "year": 2014
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's attributes
vehicle_attributes = vehicle.attributes()

// Example http response from Smartcar
{
  "id": "36ab27d0-fd9d-4455-823a-ce30af709ffc",
  "make": "TESLA",
  "model": "Model S",
  "year": 2014
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's attributes
VehicleAttributes vehicleAttributes = vehicle.attributes();

// Example http response from Smartcar
{
  "id": "36ab27d0-fd9d-4455-823a-ce30af709ffc",
  "make": "TESLA",
  "model": "Model S",
  "year": 2014
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's attributes
var info, resErr = vehicle.GetInfo(context.TODO());

// Example http response from Smartcar
{
  "id": "36ab27d0-fd9d-4455-823a-ce30af709ffc",
  "make": "TESLA",
  "model": "Model S",
  "year": 2014
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's attributes
vehicle_attributes = vehicle.attributes()

// Example http response from Smartcar
{
  "id": "36ab27d0-fd9d-4455-823a-ce30af709ffc",
  "make": "TESLA",
  "model": "Model S",
  "year": 2014
}
const smartcar = require('smartcar');

// Get all vehicles associated with this access token
const {vehicles} = await smartcar.getVehicles("<access-token>");

// Construct a new vehicle instance using the first vehicle's id
const vehicle = new smartcar.Vehicle(vehicles[0], "<access-token>");

// Fetch the vehicle's VIN
const vin = await vehicle.vin();

// Example http response from Smartcar
{
  "vin": "1234A67Q90F2T4567"
}
import smartcar

# Get all vehicles associated with this access token
response = smartcar.get_vehicles("<access-token>")

# Construct a new vehicle instance using the first vehicle's id
vehicle = smartcar.Vehicle(response.vehicles[0], "<access-token>")

# Fetch the vehicle's VIN
vin = vehicle.vin()

// Example http response from Smartcar
{
  "vin": "1234A67Q90F2T4567"
}
import com.smartcar.sdk.*;

// Get all vehicles associated with this access token
VehicleIds response = Smartcar.getVehicles("<access-token>");
String[] vehicleIds = response.getVehicleIds();

// Construct a new vehicle instance using the first vehicle's id
Vehicle vehicle = new Vehicle(vehicleIds[0], "<access-token>");

// Fetch the vehicle's VIN
VehicleVin vin = vehicle.vin();

// Example http response from Smartcar
{
  "vin": "1234A67Q90F2T4567"
}
import (
  "context"
  smartcar "github.com/smartcar/go-sdk"
);

// Create a smartcar client
var smartcarClient = smartcar.NewClient();

// Get all vehicles associated with this access token
var vehicleIDs, resErr = smartcarClient.GetVehicleIDs(
  context.TODO(),
  &smartcar.VehicleIDsParams{Access: "<access-token>"},
);

// Construct a new vehicle instance using the first vehicle's id
var vehicle = smartcarClient.NewVehicle(&smartcar.VehicleParams{
  ID: vehicleIDs.VehicleIDs[0],
  AccessToken: "<access-token>"},
);

// Fetch the vehicle's VIN
var VIN, resErr = vehicle.GetVIN(context.TODO());

// Example http response from Smartcar
{
  "vin": "1234A67Q90F2T4567"
}
require 'smartcar'

# Get all vehicles associated with this access token
all_vehicles =  Smartcar.get_vehicles(token: token)

# Construct a new vehicle instance using the first vehicle's id
vehicle = Smartcar::Vehicle.new(
  token: "<access-token>",
  id: all_vehicles.vehicles.first
)

# Fetch the vehicle's VIN
vin = vehicle.vin()

// Example http response from Smartcar
{
  "vin": "1234A67Q90F2T4567"
}

XX

compatible vehicles

XX

compatible brands

XX

available countries

XX

app developers

More than just a car data API

With our unified developer platform, building and scaling mobility services is a breeze.

One car API for 36 brands

One car API for XX brands

Our car API is compatible with XX makes, allowing your app or service to connect to over XXM vehicles with a single integration.

Learn more about compatible vehicles
Put your customers in control

Put your customers in control

Smartcar Connect allows your customers to link their cars to your web or mobile app in just a few clicks. Connect is the fastest and most transparent way to collect user consent.

Learn more about Smartcar Connect
Hardware-free

Hardware-free

Our APIs communicate directly with the embedded cellular modem built into most vehicles—no need for aftermarket hardware like OBD-II dongles.

Trusted & secure

Trusted & secure

Smartcar is GDPR and SOC 2 Type 2 compliant. Our car API is encrypted with bank-grade SSL/TLS 1.2 and compliant with the OAuth2 authorization protocol.

What our customers say

“Thanks to Smartcar's integration, our smart energy management app, ALICE, can seamlessly support over 60 EV models.”

Dr. Irene Di Martino

CEO at Amp X

“Smartcar is making it easier than ever for us to build new and innovative mobility experiences with connected vehicles.”

Andre Haddad

CEO at Turo

“We chose Smartcar’s vehicle APIs to augment our EV Everywhere product capabilities, advancing our mission of promoting sustainable energy solutions for the energy and transportation sectors.”

Devashish Paul

CEO at BluWave-ai

“When looking for an electric vehicle API provider, Smartcar was the only option to fit the bill. Instead of calling out to tons of different vehicle APIs, we only need to call out to one.”

Casey Donahue

Founder at Optiwatt

“Smartcar has enabled us to level up our EV Managed Charging platform for electric utilities by filling an important technology gap — connecting to the vehicle.”

Abhay Gupta

CEO and co-founder at Bidgely

“Not only does the Smartcar platform provide amazing technology, but their team also helped us integrate in just a few weeks, which enabled us to scale incredibly fast!”

Scott Case

CEO and Co-Founder at Recurrent