---
title: "Read a mashup timeline"
method: GET
path: "/api/mashups/{mashup_id}/timeline"
tags: ["Mashups"]
---

# Read a mashup timeline

`GET /api/mashups/{mashup_id}/timeline`

## Request

- Base URL: `https://trmnl.com`
- URL: `https://trmnl.com/api/mashups/{mashup_id}/timeline`
- Auth: HTTP bearer

One day of a mashup across every device that shows it: the check-ins that served it (recorded) and, on today, the ones that will (expected), each naming its device.

## Path parameters

- `mashup_id` integer, required

## Query parameters

- `date` string

## Response `200`

Success

- object
  - `data` Timeline
    - `date` string, date: The day shown, in the owner’s time zone
    - `today` string, date: Today in the owner’s time zone; expected and strip are empty on any other day
    - `zone` string
    - `available` boolean: Telemetry is configured; recorded is empty when it is not
    - `query_failed` boolean: Telemetry could not be read for this request; recorded is empty
    - `truncated` boolean: The day had more events than one page holds (1000)
    - `check_in` object, nullable: Whether the device checked in when it said it would; null for a plugin setting or mashup
      - `state` 'never_seen' | 'overdue' | 'asleep' | 'on_time'
      - `expected_at` string, date_time, nullable
    - `recorded` object[]: The day’s check-ins and what they caused, oldest first, one entry per check-in
      - `at` string, date_time
      - `name` string, nullable: The source shown on a device timeline; the device on a plugin setting or mashup timeline
      - `outcome` string, nullable: What the check-in decided
      - `leading` object: The event that names the entry: serve, render, checkin or schedule; ts and refresh_at_after in the owner’s time zone, ids as integers
      - `supporting` object[]: The other events of the same check-in, in the same shape as leading
      - `trace_entries` object[]: The decisions the check-in recorded
    - `expected` TimelineStep[]: The coming check-ins over the next 24 hours; across every device for a plugin setting or mashup
      - `at` string, date_time
      - `device_id` integer
      - `playlist_item_id` integer, nullable: Null while asleep or with nothing to show
      - `source_type` 'PluginSetting' | 'Mashup' | 'Plugin', nullable
      - `source_id` integer, nullable
      - `name` string, nullable: The plugin setting or mashup shown
      - `reason` string, nullable: Why the wait is what it is: asleep, or the schedule or render that moved it
      - `refresh_seconds` integer: How long the device waits before its next check-in
      - `refresh_rate_seconds` integer: The wait before the next-render extension
      - `render_at` string, date_time, nullable: When the shown content renders next
      - `render_reason` string, nullable: Why no render is scheduled
      - `waits_past_refresh_rate` boolean: The device is held past its refresh rate by the "waits for next render" setting
    - `strip` TimelineStep[]: A device’s whole rotation over the next hours, unfiltered by source; empty for a plugin setting or mashup
      - `at` string, date_time
      - `device_id` integer
      - `playlist_item_id` integer, nullable: Null while asleep or with nothing to show
      - `source_type` 'PluginSetting' | 'Mashup' | 'Plugin', nullable
      - `source_id` integer, nullable
      - `name` string, nullable: The plugin setting or mashup shown
      - `reason` string, nullable: Why the wait is what it is: asleep, or the schedule or render that moved it
      - `refresh_seconds` integer: How long the device waits before its next check-in
      - `refresh_rate_seconds` integer: The wait before the next-render extension
      - `render_at` string, date_time, nullable: When the shown content renders next
      - `render_reason` string, nullable: Why no render is scheduled
      - `waits_past_refresh_rate` boolean: The device is held past its refresh rate by the "waits for next render" setting

## Other responses

- `401`: Unauthorized
- `404`: Mashup 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)
