---
title: "Reader heartbeat"
method: GET
path: "/api/v1/readers/{id}/heartbeat"
tags: ["Readers"]
---

# Reader heartbeat

`GET /api/v1/readers/{id}/heartbeat`

## Request

- Base URL: `https://api.passentry.com`
- URL: `https://api.passentry.com/api/v1/readers/{id}/heartbeat`
- Auth: HTTP bearer

Keep a reader session alive and mark the reader as online in the Dashboard. Call it every 5 minutes with the current session token. Each successful heartbeat returns a new token and refresh token and invalidates the previous ones, so switch to the returned token immediately.

## Path parameters

- `id` string, required

## Response `200`

Successful

- object
  - `message` string
  - `token` string: New reader session token. Replaces the previous token immediately.
  - `refresh_token` string: New refresh token. Replaces the previous refresh token immediately.

## Other responses

- `401`: Error: Unauthorized. The token has expired, was rotated by a later heartbeat, or the reader was signed in elsewhere.

## Changes

- **2026-10-14** `0748466491e3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/passentry/apis/passentry-api/changes/api/v1/readers/:id/heartbeat/get.md)

---

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