---
title: "List upcoming preventive maintenance"
method: GET
path: "/maintenance/preventive/upcoming"
tags: ["Preventive Maintenance"]
---

# List upcoming preventive maintenance

`GET /maintenance/preventive/upcoming`

## Request

- Base URL: `https://api.samsara.com`
- URL: `https://api.samsara.com/maintenance/preventive/upcoming`
- Auth: HTTP bearer

Returns a paginated list of upcoming preventive maintenance schedules for the organization's assets, enriched with live telemetry (current odometer, engine hours) and due-date projections.

 <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

To use this endpoint, select **Read Upcoming Preventive Maintenance** under the Preventive Maintenance category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
 

 **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

## Query parameters

- `scheduleIds` string
- `assetIds` string
- `after` string
- `limit` integer

## Response `200`

OK response.

- EntityUpcomingPreventativeMaintenancesServiceListUpcomingPreventiveMaintenanceResponseBody
  - `data` EntityListUpcomingPreventiveMaintenanceTypeResponseBody[], required: An array of UpcomingPreventativeMaintenances
    - `asset` EntityListUpcomingPreventiveMaintenanceAssetRefTypeResponseBody: Reference to a Asset
      - `id` string, required: The ID of the referenced Asset.
    - `currentEngineHours` integer: Current engine hours for the asset at the time of query.
    - `currentOdometer` integer: Current odometer reading for the asset at the time of query. Measured in meters.
    - `dueInDays` integer: The number of days until the next scheduled service for a date based PM.
    - `dueInEngineHours` integer: The number of engine hours until the next scheduled service.
    - `dueInOdometer` integer: The odometer distance until the next scheduled service. Measured in meters.
    - `lastResolvedAt` string: Date and time when the prior instance was resolved.
    - `lastResolvedAtEngineHours` integer: Engine hours at the time the prior instance was resolved.
    - `lastResolvedAtOdometer` integer: Odometer reading at the time the prior instance was resolved. Measured in meters.
    - `nextEngineHours` integer: The next engine hour value that the vehicle is scheduled to be serviced.
    - `nextOdometer` integer: The next odometer value that the vehicle is scheduled to be serviced. Measured in meters.
    - `nextTime` string: The next time that the vehicle is scheduled to be serviced for a date based PM.
    - `schedule` EntityListUpcomingPreventiveMaintenancePreventativeMaintenanceScheduleRefTypeResponseBody: Reference to a PreventativeMaintenanceSchedule
      - `id` string, required: The ID of the referenced PreventativeMaintenanceSchedule.
    - `status` 'unknown' | 'overdue' | 'upcoming': Status of the preventive maintenance schedule. Valid values: `unknown`, `overdue`, `upcoming`
    - `workOrder` EntityListUpcomingPreventiveMaintenanceWorkOrderRefTypeResponseBody: Reference to a WorkOrder
      - `id` string, required: The ID of the referenced WorkOrder.
  - `pagination` GoaPaginationResponseResponseBody, required: Pagination parameters.
    - `endCursor` string, required: Cursor identifier representing the last element in the response. This value should be used in conjunction with a subsequent request's 'after' query parameter. This may be an empty string if there are no more pages left to view.
    - `hasNextPage` boolean, required: True if there are more pages of results immediately available after this endCursor.

## Other responses

- `401`: Unauthorized response.
- `404`: Not Found response.
- `405`: Method Not Allowed response.
- `413`: Content Too Large response.
- `429`: Too Many Requests response.
- `500`: Internal Server Error response.
- `501`: Not Implemented response.
- `502`: Bad Gateway response.
- `503`: Service Unavailable response.
- `504`: Gateway Timeout response.
- `default`: Bad Request response.

---

[API](https://skmtc.dev/samsara/apis/samsara-api.md) - [All operations](https://skmtc.dev/samsara/apis/samsara-api/llms.txt) - [OpenAPI document](https://skmtc.dev/samsara/apis/samsara-api/revisions/a9e35d4999be?raw)
