Asset API Integration Overview and Instructions
Tenna’s Asset API allows users to retrieve the most important and up to date asset data from API* in compliance with the ISO/TS 15143-3 standard, which was promoted and established by AEMP. It is designed to allow different makes and models of construction equipment to share data to external systems, such as Tenna’s platform and Tenna’s integrations with other systems.
*Must meet authentication requirements and abide by provided usage guidelines.
💥Asset API is part of a premium product, Integrations, and requires a separate license. Please contact your Account Manager or reach out to our Integrations Team at integrations@tenna.com to purchase and/or implement Asset API.
Data Points Available Under Asset API
NOTE: Points available will vary based on the asset type.
- Asset Identifier
- Make
- Model
- Fleet Number
- Serial Number
- VIN or PIN
- Odometer
- Installation Certification Decision Data and Time
- Location (Latitude, Longitude, Altitude) - Provided in real time
- Fuel Level
- Total Fuel Used
- DEF level
- Total Operating Hours
- Idle hours
- Engine Status
Sample Payload

Rate Limit
The rate limit for Asset API is one per second per IP address.
Access Requirements / Authentication
Power User credentials are required to access Asset API data.
NOTE: If SSO is already implemented in your account, additional steps will be required to set up Asset API. SSO with craft provisioning could be used to create a Power User that uses Tenna email and login vs. SSO login.
Data Disclaimer
- Accuracy of Data: While Tenna strives to provide accurate and up-to-date information, there may be instances where the data retrieved from the API may not reflect real-time conditions or may contain inaccuracies.
- Data Availability: The availability of data through the Asset API may vary depending on the specific assets, integrations, and permissions granted to the user.
- Data Usage: The data obtained from Tenna's Asset API is intended for informational purposes and should not be solely relied upon for critical decision-making. It is recommended to verify the data with other reliable sources and perform necessary validations.
How to Set Up the Asset API Integration
The AEMP Fleet API lets you retrieve a standardized view of your fleet for external integrations, such as OEMs, partner platforms, and internal IT systems. It follows the AEMP specification and exposes asset, location, site, and engine status information.
Permission Requirements: Users require a role of Power User in order to access the AEMP Fleet API.
💥AEMP Fleet API is part of a premium product, Integrations, and requires a separate license. Please contact your Account Manager for more information on premium product licenses or reach out to Customer Support at help@tenna.com or call 888.836.6269.
NOTE: This guide focuses on the JSON data structure. XML is also available and is returned by default when the Accept header is not set to application/json .
Endpoint Summary
Method: GET
Path: /api/aemp/Fleet/:pageNum
Base URL: https://app.tenna.com
Path Variables:
pageNum— Page number, starting at 1 for the first page of data.
Full example URL:
https://app.tenna.com/api/aemp/Fleet/1
Authentication
The Fleet endpoint is secured with HTTP Basic Authentication. You must provide credentials for a Tenna user with a role of Power User.
Required headers:
Authorization— Basic auth, where the value is a base64-encodedusername:password.Accept— Set toapplication/jsonto explicitly request JSON. Otherwise, data is returned in XML.Content-Type— Set toapplication/jsonfor JSON data exchange.
Authorization: Basic <base64(username:password)> Accept: application/json Content-Type: application/json
Example (curl):
curl --location 'https://app.tenna.com/api/aemp/Fleet/1' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <credentials>'
Replace <credentials> with your base64-encoded username:password .
Query Parameters
extensions (optional)
Use the extensions query parameter to opt in to additional data fields. It is a comma-separated list.
Supported values:
site— include site information for each asset.telematics— include additional telematics fields (e.g., heading and speed) for live assets.
You can combine values:
extensions=siteextensions=telematicsextensions=site,telematics
If you omit extensions , the API returns a baseline AEMP-compliant response that preserves backward compatibility with existing integrations.
Examples
Baseline AEMP fleet feed (no extensions):
curl --location 'https://app.tenna.com/api/aemp/Fleet/1' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <credentials>'
Fleet feed with site data:
curl --location 'https://app.tenna.com/api/aemp/Fleet/1?extensions=site' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <credentials>'
Fleet feed with telematics fields:
curl --location 'https://app.tenna.com/api/aemp/Fleet/1?extensions=telematics' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <credentials>'
Fleet feed with both site and telematics:
curl --location 'https://app.tenna.com/api/aemp/Fleet/1?extensions=site,telematics' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic <credentials>'
Response Overview
A successful response returns a top-level Fleet object that contains pagination metadata and an array of equipment records formatted according to the AEMP standard.
Example top-level response:
{
"Fleet": {
"Links": [...],
"Equipment": [...]
}
}
Links — pagination and navigation
The Links array provides hypermedia links (HATEOAS style) that let clients navigate through paginated fleet data without constructing URLs manually.
Each item in Links includes:
rel— the relationship of the link to the current page. Common values are:self— the current page.prev— the previous page (if available).next— the next page (if available).
href— the absolute URL you can call to retrieve that page of fleet data.
The following example assumes the second page of data is requested.
"Links": [
{
"rel": "self",
"href": "https://app.tenna.com/api/aemp/Fleet/2"
},
{
"rel": "prev",
"href": "https://app.tenna.com/api/aemp/Fleet/1"
},
{
"rel": "next",
"href": "https://app.tenna.com/api/aemp/Fleet/3"
}
]
Clients should:
- Use the
selflink to confirm which page is returned. - Follow
prevandnextlinks to iterate through pages. - Not assume a specific page size or build page URLs by string concatenation; instead, rely on the
hrefvalues provided.
Equipment — AEMP-compliant equipment records
The Equipment array contains one object per asset, following AEMP conventions for headers and status/telemetry fields.
Each equipment entry typically includes:
EquipmentHeader— identity and descriptive information:OEMName— manufacturer name (e.g., Ford, Dodge).Model— model name (e.g., Grand Caravan).EquipmentID— customer-facing or internal equipment identifier.SerialNumber— OEM serial number or VIN.
CumulativeOperatingHours— usage data:Hour— total accumulated operating hours reported for the asset.datetime— ISO 8601 timestamp when these hours were last updated.
EngineStatus— engine runtime state:EngineNumber— engine identifier, if available.Running— boolean flag indicating whether the engine was running at the given timestamp.datetime— ISO 8601 timestamp for the engine status reading.
Example:
"Equipment": [
{
"EquipmentHeader": {
"OEMName": "Saturn",
"Model": "Astra",
"EquipmentID": "757/01",
"SerialNumber": "WJ4416784"
},
"CumulativeOperatingHours": {
"Hour": 181,
"datetime": "2022-02-14T18:17:41Z"
},
"EngineStatus": {
"EngineNumber": "",
"Running": false,
"datetime": "2022-02-14T18:17:41Z"
}
},
...
]
The full list of data points supported (when available) for assets:
- Make
- Model
- Fleet number
- Serial number
- VIN or PIN
- Install certification decision date and time
- Longitude
- Latitude
- Altitude
- Total operating hours
- Odometer
- Total fuel used