Prompt Templates let you define a system prompt, base conversation turns, and default inference parameters once — then reference them by name from any chat completion request. Instead of hardcoding the same prompt logic in every client, you manage it centrally and inject runtime values using {{variable}} slots.
Template management (create, read, update, delete) accepts either authentication method:
Using a template at inference time always uses your rsk_... key, the same as any other chat completion.
See the Authentication guide for details on key types.
Send a POST /v1/templates request with a name, an optional system prompt, and any variables you want to parameterize.
Response:
Variables use double-brace syntax: {{ variable_name }}. Whitespace inside the braces is trimmed, so {{company}} and {{ company }} are equivalent. Variable names may contain letters, digits, and underscores.
You can place variables in system and in any message content field:
The variables field (list of strings) is informational — it documents which slots the template expects. It doesn’t enforce anything server-side, but it helps callers know what to pass.
Missing variables at inference time cause a 422 error. Extra variables
in the request are silently ignored.
Pass template (name or UUID) and variables alongside your messages in a POST /v1/chat/completions request. The template’s system prompt and base messages are prepended to your messages before the request is forwarded to the model.
The final messages sent to the model look like this:
You can reference a template by name or UUID. Name lookups are scoped to your key’s owner first, then fall back to global (admin-seeded) templates. UUID lookups work across any owner.
When a template and a request body both specify inference settings, Mesh resolves them in this order (highest wins):
This means you can define sensible defaults in the template and still override them per-request without changing the template.
Returns your owned templates plus any global templates, ordered newest first.
Only the fields you include are changed — everything else stays the same.
Returns 204 No Content on success.
Global templates are useful for standard system roles (e.g., a generic coding assistant or translation prompt) that Mesh pre-seeds for all users. If you create a template with the same name as a global one, your owned template takes precedence in name lookups.
UUID-based lookups are intentionally cross-owner — this lets you share a template with another team by passing them the template ID. Name-based lookups are always scoped to your own account, so there’s no risk of accidentally using someone else’s template by name.