---
title: "Create a preset from a responses request body"
method: POST
path: "/presets/{slug}/responses"
tags: ["Presets"]
---

# Create a preset from a responses request body

`POST /presets/{slug}/responses`

Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored.

## Path parameters

- `slug` string, required — URL-safe slug identifying the preset. Created if it does not exist.

## Request body

- ResponsesRequest — unresolved $ref

## Response `200`

Preset created or updated successfully.

- CreatePresetFromInferenceResponse — Response containing the created preset with its designated version.
  - `data` PresetWithDesignatedVersion, required — A preset with its currently designated version.
    - `created_at` string, required
    - `creator_user_id` string, nullable, required
    - `description` string, nullable, required
    - `designated_version_id` string, nullable, required
    - `id` string, required
    - `name` string, required
    - `slug` string, required
    - `status` 'active' | 'disabled' | 'archived', required — The status of a preset.
    - `status_updated_at` string, nullable, required
    - `updated_at` string, required
    - `workspace_id` string, nullable, required
    - `designated_version` PresetDesignatedVersion, nullable, required — A specific version of a preset, containing config and optional system prompt.
      - `config` object, required
      - `created_at` string, required
      - `creator_id` string, required
      - `id` string, required
      - `preset_id` string, required
      - `system_prompt` string, nullable, required
      - `updated_at` string, required
      - `version` integer, required

## Other responses

- `400` — Bad Request - Invalid request parameters or malformed input
- `401` — Unauthorized - Authentication required or invalid credentials
- `403` — Forbidden - Authentication successful but insufficient permissions
- `404` — Not Found - Resource does not exist
- `409` — Conflict - Resource conflict or concurrent modification
- `500` — Internal Server Error - Unexpected server error

## Changes

- **2026-09-22** `5f1b1cceea2c` — 2 info
  - added `switchyard-router` discriminator mapping keys to the `plugins/items/` request property
  - added `#/components/schemas/SwitchyardRouterPlugin` to the `plugins/items/` request property `oneOf` list
- **2026-09-21** `f72e2b0bf8c6` — 11 info
  - added the new optional request property `input/anyOf[subschema #2]/items/anyOf[#/components/schemas/AdditionalToolsItem]/tools/items/anyOf[#/components/schemas/Legacy_WebSearchServerTool]/x_search`
  - added the new optional request property `input/anyOf[subschema #2]/items/anyOf[#/components/schemas/AdditionalToolsItem]/tools/items/anyOf[#/components/schemas/Preview_20250311_WebSearchServerTool]/x_search`
  - added the new optional request property `input/anyOf[subschema #2]/items/anyOf[#/components/schemas/AdditionalToolsItem]/tools/items/anyOf[#/components/schemas/Preview_WebSearchServerTool]/x_search`
  - added the new optional request property `input/anyOf[subschema #2]/items/anyOf[#/components/schemas/AdditionalToolsItem]/tools/items/anyOf[#/components/schemas/WebSearchServerTool]/x_search`
  - …7 more
- …earlier changes not shown

[Full history](https://skmtc.dev/openrouterteam/apis/openrouter-api/changes/presets/:slug/responses/post.md)

---

[API](https://skmtc.dev/openrouterteam/apis/openrouter-api.md) · [All operations](https://skmtc.dev/openrouterteam/apis/openrouter-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openrouterteam/apis/openrouter-api/revisions/8d4a7f577949?raw)
