Developer Quickstart
This guide will show you how to configure your DIMO developer credentials so that you can begin building with vehicle data right away.
Sign Up: DIMO Developer Console
Start by creating an account on the DIMO Developer Console if you haven't done so already. Here, you will need to create a Developer License, which acts like an access card toward obtaining an API Key and configuring your custom DIMO Connect login link.
Once you've created that Developer License, you will need the following from the console:
✅ Your Developer License Client ID
✅ At least one Redirect URI
✅ An API Key
Install the DIMO Data SDK
The DIMO Data SDK is available for TypeScript/Node.js, Python, and .NET. It provides an easy, programmatic way for fetching vehicle data and creating AI vehicle agents.
Choose your preferred language below.
- TypeScript / Node.js
- Python
- .NET / C#
Using npm:
npm install @dimo-network/data-sdk
Or with yarn:
yarn add @dimo-network/data-sdk
Run:
pip install dimo-python-sdk
Windows Users:
Install-Package Dimo.Client
Mac Users:
dotnet add package Dimo.Client
Authenticate (Get Developer JWT)
Developers use their credentials from Step 1 to obtain a Developer JWT. This token identifies your application.
For more information on the auth process, check out Authentication.
- TypeScript
- Python
- .NET / C#
import { DIMO } from '@dimo-network/data-sdk';
const dimo = new DIMO('Production');
const developerJwt = await dimo.auth.getDeveloperJwt({
client_id: '<client_id>',
domain: '<redirect_uri>',
private_key: '<api_key>',
});
from dimo import DIMO
dimo = DIMO("Production")
auth_header = dimo.auth.get_dev_jwt(
client_id = '<client_id>',
domain = '<redirect_uri>',
private_key = '<api_key>'
)
dev_jwt = auth_header["access_token"]
using Dimo.Client;
var dimoClient = new DimoClientBuilder().AddAllServices().Build();
var auth = await dimoClient.AuthenticationService.GetTokenAsync(
clientId: "<client_id>",
domain: "<redirect_uri>",
privateKey: "<api_key>"
);
var devJwt = auth.AccessToken;
Generate Your DIMO Connect URL
To access real vehicle data, users must grant approval to your application.
DIMO Connect is the user-facing flow where developers request data from users, and where users elect to share that data with developers.
When a user connects their vehicle to your app via DIMO Connect, you receive a tokenId for that vehicle. This ID, combined with your Developer JWT, allows you to request a Vehicle JWT, which grants access to specific data points (telemetry, location, etc.) based on the permissions the user approved.
As a reminder, you can check out the docs for Authentication and for DIMO Connect for more information.
Get Vehicle Data
Once you have a Vehicle JWT for a user's tokenId, you can begin querying the
Telemetry API and integrating DIMO data into your application!
- TypeScript
- Python
- .NET / C#
// 1. Get Vehicle JWT
const vehicleJwt = await dimo.tokenexchange.getVehicleJwt({
...developerJwt,
tokenId: <token_id> // Obtained from DIMO Connect
});
// 2. Query Telemetry API
const data = await dimo.telemetry.query({
...vehicleJwt,
query: `
query {
signalsLatest(tokenId: <token_id>) {
powertrainTransmissionTemperature {
value
timestamp
}
speed {
value
timestamp
}
}
}`
});
# 1. Get Vehicle JWT
get_vehicle_jwt = dimo.token_exchange.exchange(
developer_jwt = dev_jwt,
token_id = "<token_id>" # Obtained from DIMO Connect
)
vehicle_jwt = get_vehicle_jwt['token']
# 2. Query Telemetry API
telemetry_data = dimo.telemetry.query(
vehicle_jwt = vehicle_jwt,
query = """
query {
signalsLatest(tokenId: <token_id>) {
speed {
value
timestamp
}
}
}
"""
)
// 1. Get Vehicle JWT
var vehicleJwt = await dimoClient.TokenExchangeService.GetPrivilegeTokenAsync(
accessToken: devJwt,
tokenId: <tokenId>, // Obtained from DIMO Connect
privileges: [
PrivilegeSharing.AllTimeNoLocationData,
PrivilegeSharing.CurrentLocation
]
);
// 2. Query Telemetry API
var query = @"
query {
signalsLatest(tokenId: <token_id>) {
speed {
value
timestamp
}
}
}";
var result = await dimoClient.TelemetryService.ExecuteQueryAsync<dynamic>(query, new {}, vehicleJwt.Token);
Now that you have a solid foundation of how to get up and running quickly, check out some of the key concepts on the next page or explore using the sidebar for more detailed information.