> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://openrouter.ai/docs/llms.txt.
> For full documentation content, see https://openrouter.ai/docs/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://openrouter.ai/docs/_mcp/server.

# Presets - Python SDK

The Python SDK and docs are currently in beta.
Report issues on [GitHub](https://github.com/OpenRouterTeam/python-sdk/issues).

## Overview

Presets endpoints

### Available Operations

* [create\_presets\_chat\_completions](#create_presets_chat_completions) - Create a preset from a chat-completions request body
* [create\_presets\_messages](#create_presets_messages) - Create a preset from a messages request body
* [create\_presets\_responses](#create_presets_responses) - Create a preset from a responses request body

## create\_presets\_chat\_completions

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.

### Example Usage

```python
from openrouter import OpenRouter
import os

with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
    api_key=os.getenv("OPENROUTER_API_KEY", ""),
) as open_router:

    res = open_router.presets.create_presets_chat_completions(slug="my-preset", messages=[
        {
            "content": "You are a helpful assistant.",
            "role": "system",
        },
        {
            "content": "Hello!",
            "role": "user",
        },
    ], model="openai/gpt-5.4", stream=False, temperature=0.7)

    # Handle response
    print(res)

```

### Parameters

| Parameter                  | Type                                                                                                                      | Required             | Description                                                                                                                                                                                                                                                                                                                                                                                                          | Example                                                                                                            |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `slug`                     | *str*                                                                                                                     | :heavy\_check\_mark: | URL-safe slug identifying the preset. Created if it does not exist.                                                                                                                                                                                                                                                                                                                                                  | my-preset                                                                                                          |
| `messages`                 | List\[[components.ChatMessages](/docs/sdks/python/api-reference/components/chatmessages)]                                 | :heavy\_check\_mark: | List of messages for the conversation                                                                                                                                                                                                                                                                                                                                                                                | \[<br />`{"content": "Hello!","role": "user"}`<br />]                                                              |
| `http_referer`             | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br />                                                                                                                                                                                                                                                          |                                                                                                                    |
| `x_open_router_title`      | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br />                                                                                                                                                                                                                                                                                                                   |                                                                                                                    |
| `x_open_router_categories` | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br />                                                                                                                                                                                                                                                                                                          |                                                                                                                    |
| `cache_control`            | [Optional\[components.AnthropicCacheControlDirective\]](../../components/anthropiccachecontroldirective.md)               | :heavy\_minus\_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.                                                                                                                                                                                                          | `{"type": "ephemeral"}`                                                                                            |
| `debug`                    | [Optional\[components.ChatDebugOptions\]](../../components/chatdebugoptions.md)                                           | :heavy\_minus\_sign: | Debug options for inspecting request transformations (streaming only)                                                                                                                                                                                                                                                                                                                                                | `{"echo_upstream_body": true}`                                                                                     |
| `frequency_penalty`        | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | Frequency penalty (-2.0 to 2.0)                                                                                                                                                                                                                                                                                                                                                                                      | 0                                                                                                                  |
| `image_config`             | Dict\[str, [components.ImageConfig](/docs/sdks/python/api-reference/components/imageconfig)]                              | :heavy\_minus\_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See [https://openrouter.ai/docs/guides/overview/multimodal/image-generation](https://openrouter.ai/docs/guides/overview/multimodal/image-generation) for more details.                                                                                                                                                        | `{"aspect_ratio": "16:9","quality": "high"}`                                                                       |
| `logit_bias`               | Dict\[str, *float*]                                                                                                       | :heavy\_minus\_sign: | Token logit bias adjustments                                                                                                                                                                                                                                                                                                                                                                                         | `{"50256": -100}`                                                                                                  |
| `logprobs`                 | *OptionalNullable\[bool]*                                                                                                 | :heavy\_minus\_sign: | Return log probabilities                                                                                                                                                                                                                                                                                                                                                                                             | false                                                                                                              |
| `max_completion_tokens`    | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | Maximum tokens in completion                                                                                                                                                                                                                                                                                                                                                                                         | 100                                                                                                                |
| `max_tokens`               | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | Maximum tokens (deprecated, use max\_completion\_tokens). Note: some providers enforce a minimum of 16.                                                                                                                                                                                                                                                                                                              | 100                                                                                                                |
| `metadata`                 | Dict\[str, *str*]                                                                                                         | :heavy\_minus\_sign: | Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values)                                                                                                                                                                                                                                                                                                                      | `{"session_id": "session-456","user_id": "user-123"}`                                                              |
| `modalities`               | List\[[components.Modality](/docs/sdks/python/api-reference/components/modality)]                                         | :heavy\_minus\_sign: | Output modalities for the response. Supported values are "text", "image", and "audio".                                                                                                                                                                                                                                                                                                                               | \[<br />"text",<br />"image"<br />]                                                                                |
| `model`                    | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | Model to use for completion                                                                                                                                                                                                                                                                                                                                                                                          | openai/gpt-4                                                                                                       |
| `models`                   | List\[*str*]                                                                                                              | :heavy\_minus\_sign: | Models to use for completion                                                                                                                                                                                                                                                                                                                                                                                         | \[<br />"openai/gpt-4",<br />"openai/gpt-4o"<br />]                                                                |
| `parallel_tool_calls`      | *OptionalNullable\[bool]*                                                                                                 | :heavy\_minus\_sign: | Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response.                                                                                                                                                                                                                                                                             | true                                                                                                               |
| `plugins`                  | List\[[components.ChatRequestPlugin](/docs/sdks/python/api-reference/components/chatrequestplugin)]                       | :heavy\_minus\_sign: | Plugins you want to enable for this request, including their settings.                                                                                                                                                                                                                                                                                                                                               |                                                                                                                    |
| `presence_penalty`         | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | Presence penalty (-2.0 to 2.0)                                                                                                                                                                                                                                                                                                                                                                                       | 0                                                                                                                  |
| `provider`                 | [OptionalNullable\[components.ProviderPreferences\]](../../components/providerpreferences.md)                             | :heavy\_minus\_sign: | When multiple model providers are available, optionally indicate your routing preference.                                                                                                                                                                                                                                                                                                                            | `{"allow_fallbacks": true}`                                                                                        |
| `reasoning`                | [Optional\[components.ChatRequestReasoning\]](../../components/chatrequestreasoning.md)                                   | :heavy\_minus\_sign: | Configuration options for reasoning models                                                                                                                                                                                                                                                                                                                                                                           | `{"effort": "medium","summary": "concise"}`                                                                        |
| `response_format`          | [Optional\[components.ResponseFormat\]](../../components/responseformat.md)                                               | :heavy\_minus\_sign: | Response format configuration                                                                                                                                                                                                                                                                                                                                                                                        | `{"type": "json_object"}`                                                                                          |
| `seed`                     | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | Random seed for deterministic outputs                                                                                                                                                                                                                                                                                                                                                                                | 42                                                                                                                 |
| `service_tier`             | [OptionalNullable\[components.ChatRequestServiceTier\]](../../components/chatrequestservicetier.md)                       | :heavy\_minus\_sign: | The service tier to use for processing this request.                                                                                                                                                                                                                                                                                                                                                                 | auto                                                                                                               |
| `session_id`               | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. |                                                                                                                    |
| `stop`                     | [OptionalNullable\[components.Stop\]](../../components/stop.md)                                                           | :heavy\_minus\_sign: | Stop sequences (up to 4)                                                                                                                                                                                                                                                                                                                                                                                             | \[<br />""<br />]                                                                                                  |
| `stop_server_tools_when`   | List\[[components.StopServerToolsWhenCondition](/docs/sdks/python/api-reference/components/stopservertoolswhencondition)] | :heavy\_minus\_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`.                                                                                                                                                                                                                                                                           | \[<br />`{"step_count": 5,"type": "step_count_is"}`,<br />`{"max_cost_in_dollars": 0.5,"type": "max_cost"}`<br />] |
| `stream`                   | *Optional\[bool]*                                                                                                         | :heavy\_minus\_sign: | Enable streaming response                                                                                                                                                                                                                                                                                                                                                                                            | false                                                                                                              |
| `stream_options`           | [OptionalNullable\[components.ChatStreamOptions\]](../../components/chatstreamoptions.md)                                 | :heavy\_minus\_sign: | Streaming configuration options                                                                                                                                                                                                                                                                                                                                                                                      | `{"include_usage": true}`                                                                                          |
| `temperature`              | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | Sampling temperature (0-2)                                                                                                                                                                                                                                                                                                                                                                                           | 0.7                                                                                                                |
| `tool_choice`              | [Optional\[components.ChatToolChoice\]](../../components/chattoolchoice.md)                                               | :heavy\_minus\_sign: | Tool choice configuration                                                                                                                                                                                                                                                                                                                                                                                            | auto                                                                                                               |
| `tools`                    | List\[[components.ChatFunctionTool](/docs/sdks/python/api-reference/components/chatfunctiontool)]                         | :heavy\_minus\_sign: | Available tools for function calling                                                                                                                                                                                                                                                                                                                                                                                 | \[<br />`{"function": {"description": "Get weather","name": "get_weather"}`,<br />"type": "function"<br />}<br />] |
| `top_logprobs`             | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | Number of top log probabilities to return (0-20)                                                                                                                                                                                                                                                                                                                                                                     | 5                                                                                                                  |
| `top_p`                    | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | Nucleus sampling parameter (0-1)                                                                                                                                                                                                                                                                                                                                                                                     | 1                                                                                                                  |
| `trace`                    | [Optional\[components.TraceConfig\]](../../components/traceconfig.md)                                                     | :heavy\_minus\_sign: | Metadata for observability and tracing. Known keys (trace\_id, trace\_name, span\_name, generation\_name, parent\_span\_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations.                                                                                                                                                                       | `{"trace_id": "trace-abc123","trace_name": "my-app-trace"}`                                                        |
| `user`                     | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | Unique user identifier                                                                                                                                                                                                                                                                                                                                                                                               | user-123                                                                                                           |
| `retries`                  | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.md)                                                        | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client.                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |

### Response

**[components.CreatePresetFromInferenceResponse](/docs/sdks/python/api-reference/components/createpresetfrominferenceresponse)**

### Errors

| Error Type                         | Status Code | Content Type     |
| ---------------------------------- | ----------- | ---------------- |
| errors.BadRequestResponseError     | 400         | application/json |
| errors.UnauthorizedResponseError   | 401         | application/json |
| errors.ForbiddenResponseError      | 403         | application/json |
| errors.NotFoundResponseError       | 404         | application/json |
| errors.ConflictResponseError       | 409         | application/json |
| errors.InternalServerResponseError | 500         | application/json |
| errors.OpenRouterDefaultError      | 4XX, 5XX    | \*/\*            |

## create\_presets\_messages

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.

### Example Usage

```python
from openrouter import OpenRouter
import os

with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
    api_key=os.getenv("OPENROUTER_API_KEY", ""),
) as open_router:

    res = open_router.presets.create_presets_messages(slug="my-preset", messages=[
        {
            "content": "Hello!",
            "role": "user",
        },
    ], model="anthropic/claude-4.6-sonnet", max_tokens=1024, system="You are a helpful assistant.")

    # Handle response
    print(res)

```

### Parameters

| Parameter                  | Type                                                                                                                      | Required             | Description                                                                                                                                                                                                                                                                                                                                                                                                          | Example                                                                                                            |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `slug`                     | *str*                                                                                                                     | :heavy\_check\_mark: | URL-safe slug identifying the preset. Created if it does not exist.                                                                                                                                                                                                                                                                                                                                                  | my-preset                                                                                                          |
| `messages`                 | List\[[components.MessagesMessageParam](/docs/sdks/python/api-reference/components/messagesmessageparam)]                 | :heavy\_check\_mark: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `model`                    | *str*                                                                                                                     | :heavy\_check\_mark: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `http_referer`             | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br />                                                                                                                                                                                                                                                          |                                                                                                                    |
| `x_open_router_title`      | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br />                                                                                                                                                                                                                                                                                                                   |                                                                                                                    |
| `x_open_router_categories` | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br />                                                                                                                                                                                                                                                                                                          |                                                                                                                    |
| `cache_control`            | [Optional\[components.AnthropicCacheControlDirective\]](../../components/anthropiccachecontroldirective.md)               | :heavy\_minus\_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.                                                                                                                                                                                                          | `{"type": "ephemeral"}`                                                                                            |
| `context_management`       | [OptionalNullable\[components.ContextManagement\]](../../components/contextmanagement.md)                                 | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `max_tokens`               | *Optional\[int]*                                                                                                          | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `metadata`                 | [Optional\[components.Metadata\]](../../components/metadata.md)                                                           | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `models`                   | List\[*str*]                                                                                                              | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `output_config`            | [Optional\[components.MessagesOutputConfig\]](../../components/messagesoutputconfig.md)                                   | :heavy\_minus\_sign: | Configuration for controlling output behavior. Supports the effort parameter and structured output format.                                                                                                                                                                                                                                                                                                           | `{"effort": "medium"}`                                                                                             |
| `plugins`                  | List\[[components.MessagesRequestPlugin](/docs/sdks/python/api-reference/components/messagesrequestplugin)]               | :heavy\_minus\_sign: | Plugins you want to enable for this request, including their settings.                                                                                                                                                                                                                                                                                                                                               |                                                                                                                    |
| `provider`                 | [OptionalNullable\[components.ProviderPreferences\]](../../components/providerpreferences.md)                             | :heavy\_minus\_sign: | When multiple model providers are available, optionally indicate your routing preference.                                                                                                                                                                                                                                                                                                                            | `{"allow_fallbacks": true}`                                                                                        |
| `service_tier`             | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `session_id`               | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. |                                                                                                                    |
| `speed`                    | [OptionalNullable\[components.Speed\]](../../components/speed.md)                                                         | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  | standard                                                                                                           |
| `stop_sequences`           | List\[*str*]                                                                                                              | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `stop_server_tools_when`   | List\[[components.StopServerToolsWhenCondition](/docs/sdks/python/api-reference/components/stopservertoolswhencondition)] | :heavy\_minus\_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`.                                                                                                                                                                                                                                                                           | \[<br />`{"step_count": 5,"type": "step_count_is"}`,<br />`{"max_cost_in_dollars": 0.5,"type": "max_cost"}`<br />] |
| `stream`                   | *Optional\[bool]*                                                                                                         | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `system`                   | [Optional\[components.System\]](../../components/system.md)                                                               | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `temperature`              | *Optional\[float]*                                                                                                        | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `thinking`                 | [Optional\[components.Thinking\]](../../components/thinking.md)                                                           | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `tool_choice`              | [Optional\[components.ToolChoice\]](../../components/toolchoice.md)                                                       | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `tools`                    | List\[[components.MessagesRequestToolUnion](/docs/sdks/python/api-reference/components/messagesrequesttoolunion)]         | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `top_k`                    | *Optional\[int]*                                                                                                          | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `top_p`                    | *Optional\[float]*                                                                                                        | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `trace`                    | [Optional\[components.TraceConfig\]](../../components/traceconfig.md)                                                     | :heavy\_minus\_sign: | Metadata for observability and tracing. Known keys (trace\_id, trace\_name, span\_name, generation\_name, parent\_span\_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations.                                                                                                                                                                       | `{"trace_id": "trace-abc123","trace_name": "my-app-trace"}`                                                        |
| `user`                     | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters.                                                                                                                 |                                                                                                                    |
| `retries`                  | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.md)                                                        | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client.                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |

### Response

**[components.CreatePresetFromInferenceResponse](/docs/sdks/python/api-reference/components/createpresetfrominferenceresponse)**

### Errors

| Error Type                         | Status Code | Content Type     |
| ---------------------------------- | ----------- | ---------------- |
| errors.BadRequestResponseError     | 400         | application/json |
| errors.UnauthorizedResponseError   | 401         | application/json |
| errors.ForbiddenResponseError      | 403         | application/json |
| errors.NotFoundResponseError       | 404         | application/json |
| errors.ConflictResponseError       | 409         | application/json |
| errors.InternalServerResponseError | 500         | application/json |
| errors.OpenRouterDefaultError      | 4XX, 5XX    | \*/\*            |

## create\_presets\_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.

### Example Usage

```python
from openrouter import OpenRouter
import os

with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
    api_key=os.getenv("OPENROUTER_API_KEY", ""),
) as open_router:

    res = open_router.presets.create_presets_responses(slug="my-preset", input="Hello!", instructions="You are a helpful assistant.", model="openai/gpt-5.4", service_tier="auto", stream=False)

    # Handle response
    print(res)

```

### Parameters

| Parameter                  | Type                                                                                                                      | Required             | Description                                                                                                                                                                                                                                                                                                                                                                                                          | Example                                                                                                            |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `slug`                     | *str*                                                                                                                     | :heavy\_check\_mark: | URL-safe slug identifying the preset. Created if it does not exist.                                                                                                                                                                                                                                                                                                                                                  | my-preset                                                                                                          |
| `http_referer`             | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br />                                                                                                                                                                                                                                                          |                                                                                                                    |
| `x_open_router_title`      | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br />                                                                                                                                                                                                                                                                                                                   |                                                                                                                    |
| `x_open_router_categories` | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br />                                                                                                                                                                                                                                                                                                          |                                                                                                                    |
| `background`               | *OptionalNullable\[bool]*                                                                                                 | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `cache_control`            | [Optional\[components.AnthropicCacheControlDirective\]](../../components/anthropiccachecontroldirective.md)               | :heavy\_minus\_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.                                                                                                                                                                                                          | `{"type": "ephemeral"}`                                                                                            |
| `frequency_penalty`        | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `image_config`             | Dict\[str, [components.ImageConfig](/docs/sdks/python/api-reference/components/imageconfig)]                              | :heavy\_minus\_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See [https://openrouter.ai/docs/guides/overview/multimodal/image-generation](https://openrouter.ai/docs/guides/overview/multimodal/image-generation) for more details.                                                                                                                                                        | `{"aspect_ratio": "16:9","quality": "high"}`                                                                       |
| `include`                  | List\[[components.ResponseIncludesEnum](/docs/sdks/python/api-reference/components/responseincludesenum)]                 | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `input`                    | [Optional\[components.InputsUnion\]](../../components/inputsunion.md)                                                     | :heavy\_minus\_sign: | Input for a response request - can be a string or array of items                                                                                                                                                                                                                                                                                                                                                     | \[<br />`{"content": "What is the weather today?","role": "user"}`<br />]                                          |
| `instructions`             | *OptionalNullable\[str]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `max_output_tokens`        | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `max_tool_calls`           | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `metadata`                 | Dict\[str, *str*]                                                                                                         | :heavy\_minus\_sign: | Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed.                                                                                                                                                                                                                                                         | `{"session_id": "abc-def-ghi","user_id": "123"}`                                                                   |
| `modalities`               | List\[[components.OutputModalityEnum](/docs/sdks/python/api-reference/components/outputmodalityenum)]                     | :heavy\_minus\_sign: | Output modalities for the response. Supported values are "text" and "image".                                                                                                                                                                                                                                                                                                                                         | \[<br />"text",<br />"image"<br />]                                                                                |
| `model`                    | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `models`                   | List\[*str*]                                                                                                              | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `parallel_tool_calls`      | *OptionalNullable\[bool]*                                                                                                 | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `plugins`                  | List\[[components.ResponsesRequestPlugin](/docs/sdks/python/api-reference/components/responsesrequestplugin)]             | :heavy\_minus\_sign: | Plugins you want to enable for this request, including their settings.                                                                                                                                                                                                                                                                                                                                               |                                                                                                                    |
| `presence_penalty`         | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `previous_response_id`     | *OptionalNullable\[str]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `prompt`                   | [OptionalNullable\[components.StoredPromptTemplate\]](../../components/storedprompttemplate.md)                           | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  | `{"id": "prompt-abc123","variables": {"name": "John"}`<br />}                                                      |
| `prompt_cache_key`         | *OptionalNullable\[str]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `provider`                 | [OptionalNullable\[components.ProviderPreferences\]](../../components/providerpreferences.md)                             | :heavy\_minus\_sign: | When multiple model providers are available, optionally indicate your routing preference.                                                                                                                                                                                                                                                                                                                            | `{"allow_fallbacks": true}`                                                                                        |
| `reasoning`                | [OptionalNullable\[components.ReasoningConfig\]](../../components/reasoningconfig.md)                                     | :heavy\_minus\_sign: | Configuration for reasoning mode in the response                                                                                                                                                                                                                                                                                                                                                                     | `{"effort": "medium","summary": "auto"}`                                                                           |
| `safety_identifier`        | *OptionalNullable\[str]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `service_tier`             | [OptionalNullable\[components.ResponsesRequestServiceTier\]](../../components/responsesrequestservicetier.md)             | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `session_id`               | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. |                                                                                                                    |
| `stop_server_tools_when`   | List\[[components.StopServerToolsWhenCondition](/docs/sdks/python/api-reference/components/stopservertoolswhencondition)] | :heavy\_minus\_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`.                                                                                                                                                                                                                                                                           | \[<br />`{"step_count": 5,"type": "step_count_is"}`,<br />`{"max_cost_in_dollars": 0.5,"type": "max_cost"}`<br />] |
| `stream`                   | *Optional\[bool]*                                                                                                         | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `temperature`              | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `text`                     | [Optional\[components.TextExtendedConfig\]](../../components/textextendedconfig.md)                                       | :heavy\_minus\_sign: | Text output configuration including format and verbosity                                                                                                                                                                                                                                                                                                                                                             | `{"format": {"type": "text"}`,<br />"verbosity": "medium"<br />}                                                   |
| `tool_choice`              | [Optional\[components.OpenAIResponsesToolChoiceUnion\]](../../components/openairesponsestoolchoiceunion.md)               | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  | auto                                                                                                               |
| `tools`                    | List\[[components.ResponsesRequestToolUnion](/docs/sdks/python/api-reference/components/responsesrequesttoolunion)]       | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `top_k`                    | *Optional\[int]*                                                                                                          | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `top_logprobs`             | *OptionalNullable\[int]*                                                                                                  | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `top_p`                    | *OptionalNullable\[float]*                                                                                                | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |
| `trace`                    | [Optional\[components.TraceConfig\]](../../components/traceconfig.md)                                                     | :heavy\_minus\_sign: | Metadata for observability and tracing. Known keys (trace\_id, trace\_name, span\_name, generation\_name, parent\_span\_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations.                                                                                                                                                                       | `{"trace_id": "trace-abc123","trace_name": "my-app-trace"}`                                                        |
| `truncation`               | [OptionalNullable\[components.OpenAIResponsesTruncation\]](../../components/openairesponsestruncation.md)                 | :heavy\_minus\_sign: | N/A                                                                                                                                                                                                                                                                                                                                                                                                                  | auto                                                                                                               |
| `user`                     | *Optional\[str]*                                                                                                          | :heavy\_minus\_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters.                                                                                                                 |                                                                                                                    |
| `retries`                  | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.md)                                                        | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client.                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                    |

### Response

**[components.CreatePresetFromInferenceResponse](/docs/sdks/python/api-reference/components/createpresetfrominferenceresponse)**

### Errors

| Error Type                         | Status Code | Content Type     |
| ---------------------------------- | ----------- | ---------------- |
| errors.BadRequestResponseError     | 400         | application/json |
| errors.UnauthorizedResponseError   | 401         | application/json |
| errors.ForbiddenResponseError      | 403         | application/json |
| errors.NotFoundResponseError       | 404         | application/json |
| errors.ConflictResponseError       | 409         | application/json |
| errors.InternalServerResponseError | 500         | application/json |
| errors.OpenRouterDefaultError      | 4XX, 5XX    | \*/\*            |