For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://modelgates.ai/docs/_mcp/server.

Chat - Python SDK

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

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

python
from modelgates import ModelGatesimport os with ModelGates(    http_referer="<value>",    x_open_router_title="<value>",    x_open_router_categories="<value>",    api_key=os.getenv("MODELGATES_API_KEY", ""),) as open_router:     res = open_router.chat.send(messages=[        {            "content": "You are a helpful assistant.",            "role": "system",        },        {            "content": "What is the capital of France?",            "role": "user",        },    ], x_open_router_experimental_metadata="enabled", max_tokens=150, model="openai/gpt-4", stream=False, temperature=0.7)     with res as event_stream:        for event in event_stream:            # handle event            print(event, flush=True)

Parameters

ParameterTypeRequiredDescriptionExample
messagesList[components.ChatMessages]:heavy_check_mark:List of messages for the conversation[
{"content": "Hello!","role": "user"}
]
http_refererOptional[str]:heavy_minus_sign: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]:heavy_minus_sign:The app display name allows you to customize how your app appears in ModelGates's dashboard.
x_open_router_categoriesOptional[str]:heavy_minus_sign:Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
x_open_router_experimental_metadataOptional[components.MetadataLevel]:heavy_minus_sign:Opt-in to surface routing metadata on the response under modelgates_metadata. Defaults to disabled.enabled
cache_controlOptional[components.AnthropicCacheControlDirective]: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"}
debugOptional[components.ChatDebugOptions]:heavy_minus_sign:Debug options for inspecting request transformations (streaming only){"echo_upstream_body": true}
frequency_penaltyOptionalNullable[float]:heavy_minus_sign:Frequency penalty (-2.0 to 2.0)0
image_configDict[str, components.ImageConfig]:heavy_minus_sign:Provider-specific image configuration options. Keys and values vary by model/provider. See https://modelgates.ai/docs/guides/overview/multimodal/image-generation for more details.{"aspect_ratio": "16:9","quality": "high"}
logit_biasDict[str, float]:heavy_minus_sign:Token logit bias adjustments{"50256": -100}
logprobsOptionalNullable[bool]:heavy_minus_sign:Return log probabilitiesfalse
max_completion_tokensOptionalNullable[int]:heavy_minus_sign:Maximum tokens in completion100
max_tokensOptionalNullable[int]:heavy_minus_sign:Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.100
metadataDict[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"}
modalitiesList[components.Modality]:heavy_minus_sign:Output modalities for the response. Supported values are "text", "image", and "audio".[
"text",
"image"
]
modelOptional[str]:heavy_minus_sign:Model to use for completionopenai/gpt-4
modelsList[str]:heavy_minus_sign:Models to use for completion[
"openai/gpt-4",
"openai/gpt-4o"
]
parallel_tool_callsOptionalNullable[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
pluginsList[components.ChatRequestPlugin]:heavy_minus_sign:Plugins you want to enable for this request, including their settings.
presence_penaltyOptionalNullable[float]:heavy_minus_sign:Presence penalty (-2.0 to 2.0)0
providerOptionalNullable[components.ProviderPreferences]:heavy_minus_sign:When multiple model providers are available, optionally indicate your routing preference.{"allow_fallbacks": true}
reasoningOptional[components.Reasoning]:heavy_minus_sign:Configuration options for reasoning models{"effort": "medium","summary": "concise"}
response_formatOptional[components.ResponseFormat]:heavy_minus_sign:Response format configuration{"type": "json_object"}
seedOptionalNullable[int]:heavy_minus_sign:Random seed for deterministic outputs42
service_tierOptionalNullable[components.ChatRequestServiceTier]:heavy_minus_sign:The service tier to use for processing this request.auto
session_idOptional[str]:heavy_minus_sign: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]:heavy_minus_sign:Stop sequences (up to 4)[
""
]
streamOptional[bool]:heavy_minus_sign:Enable streaming responsefalse
stream_optionsOptionalNullable[components.ChatStreamOptions]:heavy_minus_sign:Streaming configuration options{"include_usage": true}
temperatureOptionalNullable[float]:heavy_minus_sign:Sampling temperature (0-2)0.7
tool_choiceOptional[components.ChatToolChoice]:heavy_minus_sign:Tool choice configurationauto
toolsList[components.ChatFunctionTool]:heavy_minus_sign:Available tools for function calling[
{"function": {"description": "Get weather","name": "get_weather"},
"type": "function"
}
]
top_logprobsOptionalNullable[int]:heavy_minus_sign:Number of top log probabilities to return (0-20)5
top_pOptionalNullable[float]:heavy_minus_sign:Nucleus sampling parameter (0-1)1
traceOptional[components.TraceConfig]: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"}
userOptional[str]:heavy_minus_sign:Unique user identifieruser-123
retriesOptional[utils.RetryConfig]:heavy_minus_sign:Configuration to override the default retry behavior of the client.

Response

operations.SendChatCompletionRequestResponse

Errors

Error TypeStatus CodeContent Type
errors.BadRequestResponseError400application/json
errors.UnauthorizedResponseError401application/json
errors.PaymentRequiredResponseError402application/json
errors.ForbiddenResponseError403application/json
errors.NotFoundResponseError404application/json
errors.RequestTimeoutResponseError408application/json
errors.PayloadTooLargeResponseError413application/json
errors.UnprocessableEntityResponseError422application/json
errors.TooManyRequestsResponseError429application/json
errors.InternalServerResponseError500application/json
errors.BadGatewayResponseError502application/json
errors.ServiceUnavailableResponseError503application/json
errors.EdgeNetworkTimeoutResponseError524application/json
errors.ProviderOverloadedResponseError529application/json
errors.ModelGatesDefaultError4XX, 5XX*/*