---
title: "Read the per-app runtime error ring buffer"
method: GET
path: "/app/{id}/diag"
---

# Read the per-app runtime error ring buffer

`GET /app/{id}/diag`

## Request

- Base URL: `https://charm.ing`
- URL: `https://charm.ing/app/{id}/diag`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

Owner-only. Use this after a deploy to see whether the iframe surfaced runtime errors. 50-entry ring buffer; oldest entries roll off. Accepts `renderToken` so the in-page shell can fetch its own diag without cookies.

## Response `200`

Ring buffer contents

- DiagResponse
  - `ok` true
  - `value` object
    - `entries` object[]: Most-recent-first ring buffer (50-entry cap per app).
      - `ts` string, date-time
      - `message` string
      - `source` string
      - `line` integer
      - `col` integer
      - `stack` string

## Other responses

- `400`: Invalid app id.
- `401`: Authentication required.
- `403`: Token does not authorize this app.
- `404`: App not found.

---

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