Files
openrouter-python-sdk-retry…/docs/sdks/chat/README.md
T
OpenRouter Team 13d706e274 Commits included in this export:
- 35d4e3137846cf3e0a5800e012692818f0dfe309
  - b2f10545419cea6b8a12c509f41ec4bd3937af0c
  - 2dbb7d9612a6e699caa91f334ad105dbde6442ee
  - 50539a3577b5a7e925b756f6bb87744052701215
  - 2cdbe64441ce4435ea0a1ff9127472e815fdaccf
  - f35bb49a8b788937fa61c0cf4591b14f2bc8b217
  - 08a37babde9ad8df5e24e0cd865d3292b1627464
  - 7ddc8e1ed230ca489bc11a5e14696c209ea76349
  - ad31290f38f3f02627f3e1953f1d7cf3e06159a5
  - fb7f764b500618e322f56d49997fbcfaebba7e39
  - 4306c032b9b4f3cfefeacdd3d243b0336f3b2f15

GitOrigin-RevId: 35d4e3137846cf3e0a5800e012692818f0dfe309
2026-03-17 02:59:58 +00:00

46 KiB
Raw Blame History

Chat

(chat)

Overview

Available Operations

  • send - Create a chat completion

send

Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.

Example Usage

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.chat.send(messages=[
        {
            "role": "system",
            "content": "You are a helpful assistant.",
        },
        {
            "role": "user",
            "content": "What is the capital of France?",
        },
    ], stream=False, temperature=0.7, top_p=1)

    with res as event_stream:
        for event in event_stream:
            # handle event
            print(event, flush=True)

Parameters

Parameter Type Required Description Example
messages List[components.Message] ✔️ List of messages for the conversation [
{
"role": "user",
"content": "Hello!"
}
]
http_referer Optional[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_title Optional[str] The app display name allows you to customize how your app appears in OpenRouter's dashboard.
x_open_router_categories Optional[str] Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
provider OptionalNullable[components.ChatGenerationParamsProvider] When multiple model providers are available, optionally indicate your routing preference.
plugins List[components.ChatGenerationParamsPluginUnion] Plugins you want to enable for this request, including their settings.
user Optional[str] Unique user identifier user-123
session_id Optional[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 128 characters.
trace Optional[components.ChatGenerationParamsTrace] 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.
model Optional[str] Model to use for completion openai/gpt-4
models List[str] Models to use for completion [
"openai/gpt-4",
"openai/gpt-4o"
]
frequency_penalty OptionalNullable[float] Frequency penalty (-2.0 to 2.0) 0
logit_bias Dict[str, float] Token logit bias adjustments {
"50256": -100
}
logprobs OptionalNullable[bool] Return log probabilities false
top_logprobs OptionalNullable[float] Number of top log probabilities to return (0-20) 5
max_completion_tokens OptionalNullable[float] Maximum tokens in completion 100
max_tokens OptionalNullable[float] Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16. 100
metadata Dict[str, str] Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) {
"user_id": "user-123",
"session_id": "session-456"
}
presence_penalty OptionalNullable[float] Presence penalty (-2.0 to 2.0) 0
reasoning Optional[components.Reasoning] Configuration options for reasoning models {
"effort": "medium",
"summary": "concise"
}
response_format Optional[components.ResponseFormat] Response format configuration {
"type": "json_object"
}
seed OptionalNullable[int] Random seed for deterministic outputs 42
stop OptionalNullable[components.Stop] Stop sequences (up to 4) [
""
]
stream Optional[bool] Enable streaming response false
stream_options OptionalNullable[components.ChatStreamOptions] Streaming configuration options {
"include_usage": true
}
temperature OptionalNullable[float] Sampling temperature (0-2) 0.7
parallel_tool_calls OptionalNullable[bool] N/A
tool_choice Optional[components.ToolChoiceOption] Tool choice configuration auto
tools List[components.ToolDefinitionJSON] Available tools for function calling [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather"
}
}
]
top_p OptionalNullable[float] Nucleus sampling parameter (0-1) 1
debug Optional[components.DebugOptions] Debug options for inspecting request transformations (streaming only) {
"echo_upstream_body": true
}
image_config Dict[str, components.ChatGenerationParamsImageConfig] 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"
}
modalities List[components.Modality] Output modalities for the response. Supported values are "text", "image", and "audio". [
"text",
"image"
]
cache_control Optional[components.CacheControl] Enable automatic prompt caching. When set, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.SendChatCompletionRequestResponse

Errors

Error Type Status Code Content Type
errors.BadRequestResponseError 400 application/json
errors.UnauthorizedResponseError 401 application/json
errors.PaymentRequiredResponseError 402 application/json
errors.NotFoundResponseError 404 application/json
errors.RequestTimeoutResponseError 408 application/json
errors.PayloadTooLargeResponseError 413 application/json
errors.UnprocessableEntityResponseError 422 application/json
errors.TooManyRequestsResponseError 429 application/json
errors.InternalServerResponseError 500 application/json
errors.BadGatewayResponseError 502 application/json
errors.ServiceUnavailableResponseError 503 application/json
errors.EdgeNetworkTimeoutResponseError 524 application/json
errors.ProviderOverloadedResponseError 529 application/json
errors.OpenRouterDefaultError 4XX, 5XX */*