> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trellis.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Panel

> Fetch a typed panel referenced by a panel_open frame

When a tool produces a typed view — a schedule, an editable table, a deck — the chat stream emits a `panel_open` frame carrying a `panel_id`. This endpoint returns that panel's full content. See [Structured Output](/api-reference/chats/visualizations) for how panels arrive on the stream.

<Note>
  Member-scoped through the owning chat — a panel in another member's chat returns `404`, and the error never discloses which of the chat or panel was missing.
</Note>

<ParamField header="Authorization" type="string" required>
  Bearer token obtained from the [authenticate](/api-reference/authentication/authenticate) endpoint.
</ParamField>

<ParamField path="chat_id" type="string" required>
  The chat the panel belongs to.
</ParamField>

<ParamField path="panel_id" type="string" required>
  The panel id, from a `panel_open` frame or from [Get Chat](/api-reference/chats/get-chat)'s `panels` listing.
</ParamField>

## Response

<ResponseField name="id" type="string" required>
  The panel id.
</ResponseField>

<ResponseField name="type" type="string" required>
  The panel kind: `schedule`, `table`, `media_grid`, `document_grid`, `deck`, or `export`.
</ResponseField>

<ResponseField name="content" type="object" required>
  The panel's render state. The shape depends on `type`; a `type` discriminant is always present inside `content` so a renderer can switch on it.
</ResponseField>

<ResponseField name="entity_id" type="string | null">
  Backing entity ID for an entity-backed panel, such as a versioned schedule; otherwise `null`.
</ResponseField>

<ResponseField name="entity_version" type="integer | null">
  Resolved backing entity version; otherwise `null`.
</ResponseField>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl -X GET https://api.trellis.sh/v1/chats/8f14e45f-ceea-467f-a83c-0a06b8901a45/panels/7d1e9a44-2b6c-4f0a-8e3d-5c9f1a2b3c4d \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import requests

  response = requests.get(
      "https://api.trellis.sh/v1/chats/8f14e45f-ceea-467f-a83c-0a06b8901a45/panels/7d1e9a44-2b6c-4f0a-8e3d-5c9f1a2b3c4d",
      headers={"Authorization": "Bearer YOUR_TOKEN"},
  )
  panel = response.json()
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch(
    "https://api.trellis.sh/v1/chats/8f14e45f-ceea-467f-a83c-0a06b8901a45/panels/7d1e9a44-2b6c-4f0a-8e3d-5c9f1a2b3c4d",
    { headers: { Authorization: "Bearer YOUR_TOKEN" } },
  );
  const panel = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "id": "7d1e9a44-2b6c-4f0a-8e3d-5c9f1a2b3c4d",
    "type": "schedule",
    "content": {
      "type": "schedule",
      "schedule_id": "8f14e45f-ceea-467f-a83c-0a06b8901a45",
      "version": 3,
      "activities": []
    },
    "entity_id": "39763c28-37db-48cb-a1df-20b34b6f127d",
    "entity_version": 3
  }
  ```

  ```json 404 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "detail": "panel not found"
  }
  ```
</ResponseExample>
