Presets
Save a (model + system prompt + params) bundle once and invoke it as model:"@preset/<slug>".
A preset is a saved bundle of settings you use often — a specific model, system prompt, and sampling parameters stored under one slug. In a normal chat call you then just set "model": "@preset/<slug>" to reuse that whole configuration. Presets belong to your account and are invoked with your plm_ key.
Managing presets#
The preset management endpoints authenticate with your dashboard session token (a logged-in JWT) — Authorization: Bearer <JWT>. These are dashboard-management APIs, not SDK-compatible endpoints. List with GET /v1/presets, update with PATCH /v1/presets/{id}, and delete with DELETE /v1/presets/{id}.
| Parameter | Type | Required | Description |
|---|---|---|---|
| slug | string | Required | The invocation id. Pattern ^[a-z0-9][a-z0-9-]{0,62}$. Used as "@preset/<slug>". |
| display_name | string | Required | Display name. 1 to 100 characters. |
| description | string | Optional | Optional. Up to 500 characters. |
| system_prompt | string | Optional | Optional. Prepended as a system message. |
| model | string | Required | The model ID the preset routes to. |
| params | object | Optional | Optional. Only temperature, max_tokens, top_p, frequency_penalty, and presence_penalty are kept; other keys are dropped. |
POST /v1/presets returns 201 on success. If a preset with the same slug already exists, it returns 409.
curl https://apirouter.pleum.ai/v1/presets \
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json" \
-d '{
"slug": "terse-coder",
"display_name": "Terse Coder",
"description": "Short, code-only answers.",
"system_prompt": "You are a terse coding assistant. Reply with code and minimal prose.",
"model": "claude-sonnet-4-6",
"params": {
"temperature": 0.2,
"max_tokens": 2048
}
}'Using a preset#
In a normal chat call, set "model": "@preset/<slug>". It works with the OpenAI SDK and your plm_ key, and the preset's model, system prompt, and params are applied.
curl https://apirouter.pleum.ai/v1/chat/completions \
-H "Authorization: Bearer plm_..." \
-H "Content-Type: application/json" \
-d '{
"model": "@preset/terse-coder",
"messages": [
{"role": "user", "content": "Reverse a linked list in Python."}
]
}'temperature in the request body takes precedence over the preset's value. Slugs are unique per user (409 on a duplicate), and calling an unknown slug returns 400.