# Expose Tokens to pluggins

**URL:** <https://community.penpot.app/t/expose-tokens-to-pluggins/10045>\
**Category:** Feature requests\
**Created:** [October 30, 2025, 7:45pm UTC](https://community.penpot.app/t/expose-tokens-to-pluggins/10045 "2025-10-30T19:45:59Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![lmtr0](https://dub1.discourse-cdn.com/flex017/user_avatar/community.penpot.app/lmtr0/32/9212_2.png) [@lmtr0](https://community.penpot.app/u/lmtr0)\
**Post date:** [October 30, 2025, 7:45pm UTC](https://community.penpot.app/t/expose-tokens-to-pluggins/10045/1 "2025-10-30T19:45:59Z")

</div>

Hello there,

I am developing a plugin, and I need access to the design tokens present in the design file the plugin will be editing, please.

---

<div class="post-metadata">

**Author:** ![a-ng-d](https://dub1.discourse-cdn.com/flex017/user_avatar/community.penpot.app/a-ng-d/32/11021_2.png) [@a-ng-d](https://community.penpot.app/u/a-ng-d)\
**Post date:** [April 21, 2026, 11:12pm UTC](https://community.penpot.app/t/expose-tokens-to-pluggins/10045/2 "2026-04-21T23:12:52Z")

</div>

Hello @lmtr0!

Sorry for the delay, but the plugin API freshly reads and edits tokens.  
Here is the documentation: [TokenCatalog | Penpot plugins API](https://doc.plugins.penpot.app/interfaces/TokenCatalog)  
You must mind to update the plugin types to avoid any TypeScript error if you are coding with it.

---

<div class="post-metadata">

**Author:** ![janstieler](https://dub1.discourse-cdn.com/flex017/user_avatar/community.penpot.app/janstieler/32/10175_2.png) [@janstieler](https://community.penpot.app/u/janstieler)\
**Post date:** [April 24, 2026, 3:12am UTC](https://community.penpot.app/t/expose-tokens-to-pluggins/10045/3 "2026-04-24T03:12:15Z")

</div>

Hi,  
until which version are the Token API available?

---

<div class="post-metadata">

**Author:** ![a-ng-d](https://dub1.discourse-cdn.com/flex017/user_avatar/community.penpot.app/a-ng-d/32/11021_2.png) [@a-ng-d](https://community.penpot.app/u/a-ng-d)\
**Post date:** [April 24, 2026, 6:49am UTC](https://community.penpot.app/t/expose-tokens-to-pluggins/10045/4 "2026-04-24T06:49:26Z")

</div>

The Token API is available since the **2.14** version if I refer to the release note.

---

<div class="post-metadata">

**Author:** ![IvanTheGeek](https://avatars.discourse-cdn.com/v4/letter/i/8c91f0/32.png) [@IvanTheGeek](https://community.penpot.app/u/IvanTheGeek)\
**Post date:** [May 3, 2026, 9:14pm UTC](https://community.penpot.app/t/expose-tokens-to-pluggins/10045/5 "2026-05-03T21:14:17Z")

</div>

Confirming the Plugin API for tokens works well in **Penpot 2.14.4** (self-hosted Docker). The `penpot.tokens` API is straightforward for reading and writing token sets from a plugin.

Worth adding for anyone landing here from a search: the **REST API also handles tokens** in 2.14.4 — no plugin or browser session required. The working change types for `update-file` are `set-token-set` and `set-token` (upsert semantics). This is useful for headless automation and CI pipelines where you want to push token updates from scripts without a browser open.

Note: older API references show `add-token`/`mod-token`/`del-token` change types — those are from an older API version and do not work in 2.14.4. The current types use `set-*` naming.
