For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
ModelsChatRankingsDocs
DocsAPI ReferenceClient SDKsAgent SDKCookbookChangelog
DocsAPI ReferenceClient SDKsAgent SDKCookbookChangelog
    • Overview
    • Usage for Agents
  • TypeScript SDK
    • Overview
  • Python SDK
    • Overview
      • Analytics
      • APIKeys
      • Byok
      • Chat
      • Credits
      • Datasets
      • Embeddings
      • Endpoints
      • Generations
      • Guardrails
      • OAuth
      • Observability
      • Organization
      • Presets
      • Providers
      • Rerank
      • Beta.Responses
      • Transcriptions
      • Speech
      • VideoGeneration
      • Workspaces
  • Go SDK
  • DevTools
    • Overview
    • Migrating to @openrouter/agent
LogoLogo
ModelsChatRankingsDocs
On this page
  • Overview
  • Available Operations
  • create_presets_chat_completions
  • Example Usage
  • Parameters
  • Response
  • Errors
  • create_presets_messages
  • Example Usage
  • Parameters
  • Response
  • Errors
Python SDKAPI Reference

Presets - Python SDK

Presets method reference
Was this page helpful?
Previous

Providers - Python SDK

Providers method reference
Next
Built with

The Python SDK and docs are currently in beta. Report issues on GitHub.

Overview

Presets endpoints

Available Operations

  • create_presets_chat_completions - Create a preset from a chat-completions request body
  • create_presets_messages - Create a preset from a messages 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

1from openrouter import OpenRouter
2import os
3
4with OpenRouter(
5 http_referer="<value>",
6 x_open_router_title="<value>",
7 x_open_router_categories="<value>",
8 api_key=os.getenv("OPENROUTER_API_KEY", ""),
9) as open_router:
10
11 res = open_router.presets.create_presets_chat_completions(slug="my-preset", messages=[
12 {
13 "content": "You are a helpful assistant.",
14 "role": "system",
15 },
16 {
17 "content": "Hello!",
18 "role": "user",
19 },
20 ], model="openai/gpt-5.4", stream=False, temperature=0.7)
21
22 # Handle response
23 print(res)

Parameters

ParameterTypeRequiredDescriptionExample
slugstr✔️URL-safe slug identifying the preset. Created if it does not exist.my-preset
messagesList[components.ChatMessages]✔️List of messages for the conversation[
{"content": "Hello!","role": "user"}
]
http_refererOptional[str]➖The app identifier should be your app’s URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
x_open_router_titleOptional[str]➖The app display name allows you to customize how your app appears in OpenRouter’s dashboard.
x_open_router_categoriesOptional[str]➖Comma-separated list of app categories (e.g. “cli-agent,cloud-agent”). Used for marketplace rankings.
cache_controlOptional[components.AnthropicCacheControlDirective]➖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"}
debugOptional[components.ChatDebugOptions]➖Debug options for inspecting request transformations (streaming only){"echo_upstream_body": true}
frequency_penaltyOptionalNullable[float]➖Frequency penalty (-2.0 to 2.0)0
image_configDict[str, components.ImageConfig]➖Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details.{"aspect_ratio": "16:9","quality": "high"}
logit_biasDict[str, float]➖Token logit bias adjustments{"50256": -100}
logprobsOptionalNullable[bool]➖Return log probabilitiesfalse
max_completion_tokensOptionalNullable[int]➖Maximum tokens in completion100
max_tokensOptionalNullable[int]➖Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.100
metadataDict[str, str]➖Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values){"session_id": "session-456","user_id": "user-123"}
modalitiesList[components.Modality]➖Output modalities for the response. Supported values are “text”, “image”, and “audio”.[
“text”,
“image”
]
modelOptional[str]➖Model to use for completionopenai/gpt-4
modelsList[str]➖Models to use for completion[
“openai/gpt-4”,
“openai/gpt-4o”
]
parallel_tool_callsOptionalNullable[bool]➖Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response.true
pluginsList[components.ChatRequestPlugin]➖Plugins you want to enable for this request, including their settings.
presence_penaltyOptionalNullable[float]➖Presence penalty (-2.0 to 2.0)0
providerOptionalNullable[components.ProviderPreferences]➖When multiple model providers are available, optionally indicate your routing preference.{"allow_fallbacks": true}
reasoningOptional[components.ChatRequestReasoning]➖Configuration options for reasoning models{"effort": "medium","summary": "concise"}
response_formatOptional[components.ResponseFormat]➖Response format configuration{"type": "json_object"}
seedOptionalNullable[int]➖Random seed for deterministic outputs42
service_tierOptionalNullable[components.ChatRequestServiceTier]➖The service tier to use for processing this request.auto
session_idOptional[str]➖A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for observability. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters.
stopOptionalNullable[components.Stop]➖Stop sequences (up to 4)[
""
]
stop_server_tools_whenList[components.StopServerToolsWhenCondition]➖Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides max_tool_calls.[
{"step_count": 5,"type": "step_count_is"},
{"max_cost_in_dollars": 0.5,"type": "max_cost"}
]
streamOptional[bool]➖Enable streaming responsefalse
stream_optionsOptionalNullable[components.ChatStreamOptions]➖Streaming configuration options{"include_usage": true}
temperatureOptionalNullable[float]➖Sampling temperature (0-2)0.7
tool_choiceOptional[components.ChatToolChoice]➖Tool choice configurationauto
toolsList[components.ChatFunctionTool]➖Available tools for function calling[
{"function": {"description": "Get weather","name": "get_weather"},
“type”: “function”
}
]
top_logprobsOptionalNullable[int]➖Number of top log probabilities to return (0-20)5
top_pOptionalNullable[float]➖Nucleus sampling parameter (0-1)1
traceOptional[components.TraceConfig]➖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"}
userOptional[str]➖Unique user identifieruser-123
retriesOptional[utils.RetryConfig]➖Configuration to override the default retry behavior of the client.

Response

components.CreatePresetFromInferenceResponse

Errors

Error TypeStatus CodeContent Type
errors.BadRequestResponseError400application/json
errors.UnauthorizedResponseError401application/json
errors.ForbiddenResponseError403application/json
errors.NotFoundResponseError404application/json
errors.ConflictResponseError409application/json
errors.InternalServerResponseError500application/json
errors.OpenRouterDefaultError4XX, 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

1from openrouter import OpenRouter
2import os
3
4with OpenRouter(
5 http_referer="<value>",
6 x_open_router_title="<value>",
7 x_open_router_categories="<value>",
8 api_key=os.getenv("OPENROUTER_API_KEY", ""),
9) as open_router:
10
11 res = open_router.presets.create_presets_messages(slug="my-preset", messages=[
12 {
13 "content": "Hello!",
14 "role": "user",
15 },
16 ], model="anthropic/claude-4.6-sonnet", max_tokens=1024, system="You are a helpful assistant.")
17
18 # Handle response
19 print(res)

Parameters

ParameterTypeRequiredDescriptionExample
slugstr✔️URL-safe slug identifying the preset. Created if it does not exist.my-preset
messagesList[components.MessagesMessageParam]✔️N/A
modelstr✔️N/A
http_refererOptional[str]➖The app identifier should be your app’s URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
x_open_router_titleOptional[str]➖The app display name allows you to customize how your app appears in OpenRouter’s dashboard.
x_open_router_categoriesOptional[str]➖Comma-separated list of app categories (e.g. “cli-agent,cloud-agent”). Used for marketplace rankings.
cache_controlOptional[components.AnthropicCacheControlDirective]➖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_managementOptionalNullable[components.ContextManagement]➖N/A
max_tokensOptional[int]➖N/A
metadataOptional[components.Metadata]➖N/A
modelsList[str]➖N/A
output_configOptional[components.MessagesOutputConfig]➖Configuration for controlling output behavior. Supports the effort parameter and structured output format.{"effort": "medium"}
pluginsList[components.MessagesRequestPlugin]➖Plugins you want to enable for this request, including their settings.
providerOptionalNullable[components.ProviderPreferences]➖When multiple model providers are available, optionally indicate your routing preference.{"allow_fallbacks": true}
service_tierOptional[str]➖N/A
session_idOptional[str]➖A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for observability. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters.
speedOptionalNullable[components.Speed]➖N/Astandard
stop_sequencesList[str]➖N/A
stop_server_tools_whenList[components.StopServerToolsWhenCondition]➖Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides max_tool_calls.[
{"step_count": 5,"type": "step_count_is"},
{"max_cost_in_dollars": 0.5,"type": "max_cost"}
]
streamOptional[bool]➖N/A
systemOptional[components.System]➖N/A
temperatureOptional[float]➖N/A
thinkingOptional[components.Thinking]➖N/A
tool_choiceOptional[components.ToolChoice]➖N/A
toolsList[components.MessagesRequestToolUnion]➖N/A
top_kOptional[int]➖N/A
top_pOptional[float]➖N/A
traceOptional[components.TraceConfig]➖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"}
userOptional[str]➖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.
retriesOptional[utils.RetryConfig]➖Configuration to override the default retry behavior of the client.

Response

components.CreatePresetFromInferenceResponse

Errors

Error TypeStatus CodeContent Type
errors.BadRequestResponseError400application/json
errors.UnauthorizedResponseError401application/json
errors.ForbiddenResponseError403application/json
errors.NotFoundResponseError404application/json
errors.ConflictResponseError409application/json
errors.InternalServerResponseError500application/json
errors.OpenRouterDefaultError4XX, 5XX*/*