---
title: "Read a plugin and its form fields"
method: GET
path: "/api/plugins/{id}"
tags: ["Plugins"]
---

# Read a plugin and its form fields

`GET /api/plugins/{id}`

## Request

- Base URL: `https://trmnl.com`
- URL: `https://trmnl.com/api/plugins/{id}`
- Auth: HTTP bearer

form_fields lists what to send updatePluginSettingFields, keyed by the same keyname.

## Path parameters

- `id` string, required

## Response `200`

Success

- object
  - `data` Plugin
    - `kind` 'official' | 'recipe'
    - `source_revision` string
    - `requirements` string[]
    - `compatibility` object
    - `install_choices` object[]
    - `categories` string[], nullable
    - `id` integer
    - `keyname` string: The plugin_id createPluginSetting expects, as a string
    - `name` string
    - `description` string, nullable
    - `category` string[], nullable
    - `plugin_type` 'native' | 'third_party'
    - `form_type` 'form_input' | 'oauth2'
    - `oauth` boolean: Whether connecting this plugin needs an OAuth authorize step
    - `image_url` string, nullable
    - `refresh_every` integer, nullable: Minutes between polls
    - `installable` boolean: False for an oauth2 plugin whose authorize step needs a browser
    - `form_fields` object[], nullable: getPlugin only — send these keynames to updatePluginSettingFields
      - `keyname` string
      - `field_type` string
      - `name` string
      - `description` string, nullable
      - `help_text` string, nullable
      - `placeholder` string, nullable
      - `optional` boolean, nullable
      - `options` unknown
      - `default` unknown

## Other responses

- `401`: Unauthorized
- `404`: No plugin matches the id or keyname

---

[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)
