---
title: "Presets"
description: "Store and reuse cosmetic configurations."
canonical: "https://developers.fnlb.net/docs/presets"
markdown: "/docs/presets.md"
---

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

# Presets

Presets store reusable cosmetic configurations on your account. You manage them through the API; applying one still goes through [bot commands](/docs/bot-commands.md).

## List and read

[GET /presets](/api?method=GET&path=/presets) returns every preset. Needs `categories.read`-level access on OAuth2 (presets use the same read scope family as categories in the reference).

[GET /presets/{presetId}](/api?method=GET&path=/presets/{presetId}) returns one preset document, including the stored cosmetic fields in `config`.

## Create and update

[POST /presets](/api?method=POST&path=/presets) creates a preset. [PATCH /presets/{presetId}](/api?method=PATCH&path=/presets/{presetId}) updates it. [DELETE /presets/{presetId}](/api?method=DELETE&path=/presets/{presetId}) removes it.

Write routes need `categories.write` on an OAuth2 token, or an API token / session when listed on the route page.

The exact `config` shape matches what your bots expect for outfit, emote, backpack, and related fields. Open the route in the [API reference](/api.md) for the current schema rather than copying an example from an old doc.

## Apply a preset

There is no `POST /presets/{id}/apply` route. Run the appropriate command on a bot with [POST /bots/{botId}/commands/run](/api?method=POST&path=/bots/{botId}/commands/run), using the same command names you would type in the FNLB app.

After a command succeeds, confirm cosmetics on the [gateway](/gateway?method=GET&path=/bots/{botId}) if the bot is online.

## Rate limits

Preset routes share the category limits: about **100** requests per 10 minutes per IP with an API token, **1000** with OAuth2. See [Rate limits](/docs/rate-limits.md#api).
