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-encoded username:password     .
  • Accept      — Set to application/json      to explicitly request JSON. Otherwise, data is returned in XML.
  • Content-Type      — Set to application/json      for 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=site     
  • extensions=telematics     
  • extensions=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": [...]
  }
}

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 self      link to confirm which page is returned.
  • Follow prev      and next      links to iterate through pages.
  • Not assume a specific page size or build page URLs by string concatenation; instead, rely on the href      values 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
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us