---
title: "Simulate a device's coming check-ins, deciding each one the way a real check-in would"
method: GET
path: "/api/devices/{device_id}/forecast"
tags: ["Devices"]
---

# Simulate a device's coming check-ins, deciding each one the way a real check-in would

`GET /api/devices/{device_id}/forecast`

## Request

- Base URL: `https://trmnl.com`
- URL: `https://trmnl.com/api/devices/{device_id}/forecast`
- Auth: HTTP bearer

Simulates upcoming check-ins without writing anything. reason explains a step's wait (e.g. asleep, or an extended refresh rate).

## Path parameters

- `device_id` integer, required

## Query parameters

- `hours` integer

## Response `200`

The simulated steps

- object
  - `data` object
    - `steps` object[]
      - `at` string, date_time: When this simulated check-in happens
      - `playlist_item_id` integer, nullable
      - `plugin_setting_id` integer, nullable
      - `name` string, nullable: The plugin setting or mashup showing at this step
      - `refresh_seconds` integer: Seconds until the following step, after any extension
      - `refresh_rate_seconds` integer: The item's own wake interval, before extension
      - `reason` string, nullable: Why the wait is what it is, e.g. asleep or an extended refresh rate
      - `render_at` string, date_time, nullable: When the next render is predicted to land, if any
      - `render_reason` string, nullable: Why no render is predicted, when render_at is null

## Other responses

- `401`: Unauthorized
- `404`: Device belongs to another user

---

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