openrouter 0.0.19__py3-none-any.whl → 0.0.22__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. openrouter/_version.py +3 -3
  2. openrouter/analytics.py +2 -0
  3. openrouter/api_keys.py +24 -4
  4. openrouter/basesdk.py +6 -0
  5. openrouter/chat.py +154 -14
  6. openrouter/completions.py +2 -0
  7. openrouter/components/__init__.py +156 -61
  8. openrouter/components/_schema0.py +93 -0
  9. openrouter/components/chatcompletionfinishreason.py +17 -0
  10. openrouter/components/chatgenerationparams.py +397 -13
  11. openrouter/components/chatmessagecontentitem.py +1 -1
  12. openrouter/components/chatmessagecontentitemaudio.py +6 -25
  13. openrouter/components/chatmessagecontentitemcachecontrol.py +32 -0
  14. openrouter/components/chatmessagecontentitemtext.py +9 -2
  15. openrouter/components/chatmessagecontentitemvideo.py +9 -5
  16. openrouter/components/chatresponsechoice.py +1 -67
  17. openrouter/components/chatstreamingchoice.py +72 -0
  18. openrouter/components/chatstreamingresponsechunk.py +1 -1
  19. openrouter/components/completionchoice.py +18 -5
  20. openrouter/components/completioncreateparams.py +10 -10
  21. openrouter/components/completionresponse.py +3 -0
  22. openrouter/components/message.py +10 -9
  23. openrouter/components/openairesponsesannotation.py +11 -4
  24. openrouter/components/openairesponsesreasoningeffort.py +1 -0
  25. openrouter/components/openresponsesnonstreamingresponse.py +13 -10
  26. openrouter/components/openresponsesrequest.py +155 -81
  27. openrouter/components/openresponsesstreamevent.py +110 -39
  28. openrouter/components/outputmessage.py +10 -4
  29. openrouter/components/providername.py +8 -1
  30. openrouter/components/publicendpoint.py +49 -49
  31. openrouter/components/publicpricing.py +49 -49
  32. openrouter/components/responseformattextconfig.py +9 -7
  33. openrouter/components/responsesoutputitem.py +12 -10
  34. openrouter/components/responsesoutputmessage.py +10 -5
  35. openrouter/credits.py +4 -0
  36. openrouter/embeddings.py +4 -0
  37. openrouter/endpoints.py +4 -0
  38. openrouter/generations.py +2 -0
  39. openrouter/models/__init__.py +3 -0
  40. openrouter/models/internal/__init__.py +54 -0
  41. openrouter/models/internal/globals.py +41 -0
  42. openrouter/models_.py +6 -0
  43. openrouter/oauth.py +4 -0
  44. openrouter/operations/__init__.py +10 -1
  45. openrouter/operations/createembeddings.py +44 -24
  46. openrouter/operations/getcredits.py +19 -0
  47. openrouter/operations/getparameters.py +8 -1
  48. openrouter/operations/updatekeys.py +2 -2
  49. openrouter/parameters.py +2 -0
  50. openrouter/providers.py +2 -0
  51. openrouter/responses.py +88 -36
  52. openrouter/sdk.py +13 -0
  53. openrouter/sdkconfiguration.py +2 -0
  54. openrouter/utils/forms.py +21 -10
  55. openrouter/utils/queryparams.py +14 -2
  56. openrouter/utils/retries.py +69 -5
  57. {openrouter-0.0.19.dist-info → openrouter-0.0.22.dist-info}/METADATA +1 -1
  58. {openrouter-0.0.19.dist-info → openrouter-0.0.22.dist-info}/RECORD +61 -54
  59. {openrouter-0.0.19.dist-info → openrouter-0.0.22.dist-info}/WHEEL +0 -0
  60. {openrouter-0.0.19.dist-info → openrouter-0.0.22.dist-info}/licenses/LICENSE +0 -0
  61. {openrouter-0.0.19.dist-info → openrouter-0.0.22.dist-info}/top_level.txt +0 -0
openrouter/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "openrouter"
6
- __version__: str = "0.0.19"
6
+ __version__: str = "0.0.22"
7
7
  __openapi_doc_version__: str = "1.0.0"
8
- __gen_version__: str = "2.755.9"
9
- __user_agent__: str = "speakeasy-sdk/python 0.0.19 2.755.9 1.0.0 openrouter"
8
+ __gen_version__: str = "2.768.0"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.0.22 2.768.0 1.0.0 openrouter"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
openrouter/analytics.py CHANGED
@@ -58,6 +58,7 @@ class Analytics(BaseSDK):
58
58
  accept_header_value="application/json",
59
59
  http_headers=http_headers,
60
60
  security=self.sdk_configuration.security,
61
+ allow_empty_value=None,
61
62
  timeout_ms=timeout_ms,
62
63
  )
63
64
 
@@ -166,6 +167,7 @@ class Analytics(BaseSDK):
166
167
  accept_header_value="application/json",
167
168
  http_headers=http_headers,
168
169
  security=self.sdk_configuration.security,
170
+ allow_empty_value=None,
169
171
  timeout_ms=timeout_ms,
170
172
  )
171
173
 
openrouter/api_keys.py CHANGED
@@ -60,6 +60,7 @@ class APIKeys(BaseSDK):
60
60
  accept_header_value="application/json",
61
61
  http_headers=http_headers,
62
62
  security=self.sdk_configuration.security,
63
+ allow_empty_value=None,
63
64
  timeout_ms=timeout_ms,
64
65
  )
65
66
 
@@ -164,6 +165,7 @@ class APIKeys(BaseSDK):
164
165
  accept_header_value="application/json",
165
166
  http_headers=http_headers,
166
167
  security=self.sdk_configuration.security,
168
+ allow_empty_value=None,
167
169
  timeout_ms=timeout_ms,
168
170
  )
169
171
 
@@ -280,6 +282,7 @@ class APIKeys(BaseSDK):
280
282
  get_serialized_body=lambda: utils.serialize_request_body(
281
283
  request, False, False, "json", operations.CreateKeysRequest
282
284
  ),
285
+ allow_empty_value=None,
283
286
  timeout_ms=timeout_ms,
284
287
  )
285
288
 
@@ -401,6 +404,7 @@ class APIKeys(BaseSDK):
401
404
  get_serialized_body=lambda: utils.serialize_request_body(
402
405
  request, False, False, "json", operations.CreateKeysRequest
403
406
  ),
407
+ allow_empty_value=None,
404
408
  timeout_ms=timeout_ms,
405
409
  )
406
410
 
@@ -502,7 +506,7 @@ class APIKeys(BaseSDK):
502
506
 
503
507
  request = operations.UpdateKeysRequest(
504
508
  hash=hash,
505
- body=operations.UpdateKeysRequestBody(
509
+ request_body=operations.UpdateKeysRequestBody(
506
510
  name=name,
507
511
  disabled=disabled,
508
512
  limit=limit,
@@ -525,8 +529,13 @@ class APIKeys(BaseSDK):
525
529
  http_headers=http_headers,
526
530
  security=self.sdk_configuration.security,
527
531
  get_serialized_body=lambda: utils.serialize_request_body(
528
- request.body, False, False, "json", operations.UpdateKeysRequestBody
532
+ request.request_body,
533
+ False,
534
+ False,
535
+ "json",
536
+ operations.UpdateKeysRequestBody,
529
537
  ),
538
+ allow_empty_value=None,
530
539
  timeout_ms=timeout_ms,
531
540
  )
532
541
 
@@ -633,7 +642,7 @@ class APIKeys(BaseSDK):
633
642
 
634
643
  request = operations.UpdateKeysRequest(
635
644
  hash=hash,
636
- body=operations.UpdateKeysRequestBody(
645
+ request_body=operations.UpdateKeysRequestBody(
637
646
  name=name,
638
647
  disabled=disabled,
639
648
  limit=limit,
@@ -656,8 +665,13 @@ class APIKeys(BaseSDK):
656
665
  http_headers=http_headers,
657
666
  security=self.sdk_configuration.security,
658
667
  get_serialized_body=lambda: utils.serialize_request_body(
659
- request.body, False, False, "json", operations.UpdateKeysRequestBody
668
+ request.request_body,
669
+ False,
670
+ False,
671
+ "json",
672
+ operations.UpdateKeysRequestBody,
660
673
  ),
674
+ allow_empty_value=None,
661
675
  timeout_ms=timeout_ms,
662
676
  )
663
677
 
@@ -769,6 +783,7 @@ class APIKeys(BaseSDK):
769
783
  accept_header_value="application/json",
770
784
  http_headers=http_headers,
771
785
  security=self.sdk_configuration.security,
786
+ allow_empty_value=None,
772
787
  timeout_ms=timeout_ms,
773
788
  )
774
789
 
@@ -875,6 +890,7 @@ class APIKeys(BaseSDK):
875
890
  accept_header_value="application/json",
876
891
  http_headers=http_headers,
877
892
  security=self.sdk_configuration.security,
893
+ allow_empty_value=None,
878
894
  timeout_ms=timeout_ms,
879
895
  )
880
896
 
@@ -981,6 +997,7 @@ class APIKeys(BaseSDK):
981
997
  accept_header_value="application/json",
982
998
  http_headers=http_headers,
983
999
  security=self.sdk_configuration.security,
1000
+ allow_empty_value=None,
984
1001
  timeout_ms=timeout_ms,
985
1002
  )
986
1003
 
@@ -1087,6 +1104,7 @@ class APIKeys(BaseSDK):
1087
1104
  accept_header_value="application/json",
1088
1105
  http_headers=http_headers,
1089
1106
  security=self.sdk_configuration.security,
1107
+ allow_empty_value=None,
1090
1108
  timeout_ms=timeout_ms,
1091
1109
  )
1092
1110
 
@@ -1188,6 +1206,7 @@ class APIKeys(BaseSDK):
1188
1206
  accept_header_value="application/json",
1189
1207
  http_headers=http_headers,
1190
1208
  security=self.sdk_configuration.security,
1209
+ allow_empty_value=None,
1191
1210
  timeout_ms=timeout_ms,
1192
1211
  )
1193
1212
 
@@ -1279,6 +1298,7 @@ class APIKeys(BaseSDK):
1279
1298
  accept_header_value="application/json",
1280
1299
  http_headers=http_headers,
1281
1300
  security=self.sdk_configuration.security,
1301
+ allow_empty_value=None,
1282
1302
  timeout_ms=timeout_ms,
1283
1303
  )
1284
1304
 
openrouter/basesdk.py CHANGED
@@ -60,6 +60,7 @@ class BaseSDK:
60
60
  ] = None,
61
61
  url_override: Optional[str] = None,
62
62
  http_headers: Optional[Mapping[str, str]] = None,
63
+ allow_empty_value: Optional[List[str]] = None,
63
64
  ) -> httpx.Request:
64
65
  client = self.sdk_configuration.async_client
65
66
  return self._build_request_with_client(
@@ -80,6 +81,7 @@ class BaseSDK:
80
81
  get_serialized_body,
81
82
  url_override,
82
83
  http_headers,
84
+ allow_empty_value,
83
85
  )
84
86
 
85
87
  def _build_request(
@@ -102,6 +104,7 @@ class BaseSDK:
102
104
  ] = None,
103
105
  url_override: Optional[str] = None,
104
106
  http_headers: Optional[Mapping[str, str]] = None,
107
+ allow_empty_value: Optional[List[str]] = None,
105
108
  ) -> httpx.Request:
106
109
  client = self.sdk_configuration.client
107
110
  return self._build_request_with_client(
@@ -122,6 +125,7 @@ class BaseSDK:
122
125
  get_serialized_body,
123
126
  url_override,
124
127
  http_headers,
128
+ allow_empty_value,
125
129
  )
126
130
 
127
131
  def _build_request_with_client(
@@ -145,6 +149,7 @@ class BaseSDK:
145
149
  ] = None,
146
150
  url_override: Optional[str] = None,
147
151
  http_headers: Optional[Mapping[str, str]] = None,
152
+ allow_empty_value: Optional[List[str]] = None,
148
153
  ) -> httpx.Request:
149
154
  query_params = {}
150
155
 
@@ -160,6 +165,7 @@ class BaseSDK:
160
165
  query_params = utils.get_query_params(
161
166
  request if request_has_query_params else None,
162
167
  _globals if request_has_query_params else None,
168
+ allow_empty_value,
163
169
  )
164
170
  else:
165
171
  # Pick up the query parameter from the override so they can be
openrouter/chat.py CHANGED
@@ -21,6 +21,21 @@ class Chat(BaseSDK):
21
21
  self,
22
22
  *,
23
23
  messages: Union[List[components.Message], List[components.MessageTypedDict]],
24
+ provider: OptionalNullable[
25
+ Union[
26
+ components.ChatGenerationParamsProvider,
27
+ components.ChatGenerationParamsProviderTypedDict,
28
+ ]
29
+ ] = UNSET,
30
+ plugins: Optional[
31
+ Union[
32
+ List[components.ChatGenerationParamsPluginUnion],
33
+ List[components.ChatGenerationParamsPluginUnionTypedDict],
34
+ ]
35
+ ] = None,
36
+ route: OptionalNullable[components.ChatGenerationParamsRoute] = UNSET,
37
+ user: Optional[str] = None,
38
+ session_id: Optional[str] = None,
24
39
  model: Optional[str] = None,
25
40
  models: Optional[List[str]] = None,
26
41
  frequency_penalty: OptionalNullable[float] = UNSET,
@@ -60,7 +75,7 @@ class Chat(BaseSDK):
60
75
  ]
61
76
  ] = None,
62
77
  top_p: OptionalNullable[float] = UNSET,
63
- user: Optional[str] = None,
78
+ debug: Optional[Union[components.Debug, components.DebugTypedDict]] = None,
64
79
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
65
80
  server_url: Optional[str] = None,
66
81
  timeout_ms: Optional[int] = None,
@@ -71,6 +86,11 @@ class Chat(BaseSDK):
71
86
  Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
72
87
 
73
88
  :param messages:
89
+ :param provider: When multiple model providers are available, optionally indicate your routing preference.
90
+ :param plugins: Plugins you want to enable for this request, including their settings.
91
+ :param route: Routing strategy for multiple models: \"fallback\" (default) uses secondary models as backups, \"sort\" sorts all endpoints together by routing criteria.
92
+ :param user:
93
+ :param session_id: 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.
74
94
  :param model:
75
95
  :param models:
76
96
  :param frequency_penalty:
@@ -91,7 +111,7 @@ class Chat(BaseSDK):
91
111
  :param tool_choice:
92
112
  :param tools:
93
113
  :param top_p:
94
- :param user:
114
+ :param debug:
95
115
  :param retries: Override the default retry configuration for this method
96
116
  :param server_url: Override the default server URL for this method
97
117
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -104,6 +124,21 @@ class Chat(BaseSDK):
104
124
  self,
105
125
  *,
106
126
  messages: Union[List[components.Message], List[components.MessageTypedDict]],
127
+ provider: OptionalNullable[
128
+ Union[
129
+ components.ChatGenerationParamsProvider,
130
+ components.ChatGenerationParamsProviderTypedDict,
131
+ ]
132
+ ] = UNSET,
133
+ plugins: Optional[
134
+ Union[
135
+ List[components.ChatGenerationParamsPluginUnion],
136
+ List[components.ChatGenerationParamsPluginUnionTypedDict],
137
+ ]
138
+ ] = None,
139
+ route: OptionalNullable[components.ChatGenerationParamsRoute] = UNSET,
140
+ user: Optional[str] = None,
141
+ session_id: Optional[str] = None,
107
142
  model: Optional[str] = None,
108
143
  models: Optional[List[str]] = None,
109
144
  frequency_penalty: OptionalNullable[float] = UNSET,
@@ -143,7 +178,7 @@ class Chat(BaseSDK):
143
178
  ]
144
179
  ] = None,
145
180
  top_p: OptionalNullable[float] = UNSET,
146
- user: Optional[str] = None,
181
+ debug: Optional[Union[components.Debug, components.DebugTypedDict]] = None,
147
182
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
148
183
  server_url: Optional[str] = None,
149
184
  timeout_ms: Optional[int] = None,
@@ -154,6 +189,11 @@ class Chat(BaseSDK):
154
189
  Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
155
190
 
156
191
  :param messages:
192
+ :param provider: When multiple model providers are available, optionally indicate your routing preference.
193
+ :param plugins: Plugins you want to enable for this request, including their settings.
194
+ :param route: Routing strategy for multiple models: \"fallback\" (default) uses secondary models as backups, \"sort\" sorts all endpoints together by routing criteria.
195
+ :param user:
196
+ :param session_id: 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.
157
197
  :param model:
158
198
  :param models:
159
199
  :param frequency_penalty:
@@ -174,7 +214,7 @@ class Chat(BaseSDK):
174
214
  :param tool_choice:
175
215
  :param tools:
176
216
  :param top_p:
177
- :param user:
217
+ :param debug:
178
218
  :param retries: Override the default retry configuration for this method
179
219
  :param server_url: Override the default server URL for this method
180
220
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -186,6 +226,21 @@ class Chat(BaseSDK):
186
226
  self,
187
227
  *,
188
228
  messages: Union[List[components.Message], List[components.MessageTypedDict]],
229
+ provider: OptionalNullable[
230
+ Union[
231
+ components.ChatGenerationParamsProvider,
232
+ components.ChatGenerationParamsProviderTypedDict,
233
+ ]
234
+ ] = UNSET,
235
+ plugins: Optional[
236
+ Union[
237
+ List[components.ChatGenerationParamsPluginUnion],
238
+ List[components.ChatGenerationParamsPluginUnionTypedDict],
239
+ ]
240
+ ] = None,
241
+ route: OptionalNullable[components.ChatGenerationParamsRoute] = UNSET,
242
+ user: Optional[str] = None,
243
+ session_id: Optional[str] = None,
189
244
  model: Optional[str] = None,
190
245
  models: Optional[List[str]] = None,
191
246
  frequency_penalty: OptionalNullable[float] = UNSET,
@@ -225,7 +280,7 @@ class Chat(BaseSDK):
225
280
  ]
226
281
  ] = None,
227
282
  top_p: OptionalNullable[float] = UNSET,
228
- user: Optional[str] = None,
283
+ debug: Optional[Union[components.Debug, components.DebugTypedDict]] = None,
229
284
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
230
285
  server_url: Optional[str] = None,
231
286
  timeout_ms: Optional[int] = None,
@@ -236,6 +291,11 @@ class Chat(BaseSDK):
236
291
  Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
237
292
 
238
293
  :param messages:
294
+ :param provider: When multiple model providers are available, optionally indicate your routing preference.
295
+ :param plugins: Plugins you want to enable for this request, including their settings.
296
+ :param route: Routing strategy for multiple models: \"fallback\" (default) uses secondary models as backups, \"sort\" sorts all endpoints together by routing criteria.
297
+ :param user:
298
+ :param session_id: 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.
239
299
  :param model:
240
300
  :param models:
241
301
  :param frequency_penalty:
@@ -256,7 +316,7 @@ class Chat(BaseSDK):
256
316
  :param tool_choice:
257
317
  :param tools:
258
318
  :param top_p:
259
- :param user:
319
+ :param debug:
260
320
  :param retries: Override the default retry configuration for this method
261
321
  :param server_url: Override the default server URL for this method
262
322
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -274,6 +334,15 @@ class Chat(BaseSDK):
274
334
  base_url = self._get_url(base_url, url_variables)
275
335
 
276
336
  request = components.ChatGenerationParams(
337
+ provider=utils.get_pydantic_model(
338
+ provider, OptionalNullable[components.ChatGenerationParamsProvider]
339
+ ),
340
+ plugins=utils.get_pydantic_model(
341
+ plugins, Optional[List[components.ChatGenerationParamsPluginUnion]]
342
+ ),
343
+ route=route,
344
+ user=user,
345
+ session_id=session_id,
277
346
  messages=utils.get_pydantic_model(messages, List[components.Message]),
278
347
  model=model,
279
348
  models=models,
@@ -304,7 +373,7 @@ class Chat(BaseSDK):
304
373
  tools, Optional[List[components.ToolDefinitionJSON]]
305
374
  ),
306
375
  top_p=top_p,
307
- user=user,
376
+ debug=utils.get_pydantic_model(debug, Optional[components.Debug]),
308
377
  )
309
378
 
310
379
  req = self._build_request(
@@ -323,6 +392,7 @@ class Chat(BaseSDK):
323
392
  get_serialized_body=lambda: utils.serialize_request_body(
324
393
  request, False, False, "json", components.ChatGenerationParams
325
394
  ),
395
+ allow_empty_value=None,
326
396
  timeout_ms=timeout_ms,
327
397
  )
328
398
 
@@ -398,6 +468,21 @@ class Chat(BaseSDK):
398
468
  self,
399
469
  *,
400
470
  messages: Union[List[components.Message], List[components.MessageTypedDict]],
471
+ provider: OptionalNullable[
472
+ Union[
473
+ components.ChatGenerationParamsProvider,
474
+ components.ChatGenerationParamsProviderTypedDict,
475
+ ]
476
+ ] = UNSET,
477
+ plugins: Optional[
478
+ Union[
479
+ List[components.ChatGenerationParamsPluginUnion],
480
+ List[components.ChatGenerationParamsPluginUnionTypedDict],
481
+ ]
482
+ ] = None,
483
+ route: OptionalNullable[components.ChatGenerationParamsRoute] = UNSET,
484
+ user: Optional[str] = None,
485
+ session_id: Optional[str] = None,
401
486
  model: Optional[str] = None,
402
487
  models: Optional[List[str]] = None,
403
488
  frequency_penalty: OptionalNullable[float] = UNSET,
@@ -437,7 +522,7 @@ class Chat(BaseSDK):
437
522
  ]
438
523
  ] = None,
439
524
  top_p: OptionalNullable[float] = UNSET,
440
- user: Optional[str] = None,
525
+ debug: Optional[Union[components.Debug, components.DebugTypedDict]] = None,
441
526
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
442
527
  server_url: Optional[str] = None,
443
528
  timeout_ms: Optional[int] = None,
@@ -448,6 +533,11 @@ class Chat(BaseSDK):
448
533
  Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
449
534
 
450
535
  :param messages:
536
+ :param provider: When multiple model providers are available, optionally indicate your routing preference.
537
+ :param plugins: Plugins you want to enable for this request, including their settings.
538
+ :param route: Routing strategy for multiple models: \"fallback\" (default) uses secondary models as backups, \"sort\" sorts all endpoints together by routing criteria.
539
+ :param user:
540
+ :param session_id: 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.
451
541
  :param model:
452
542
  :param models:
453
543
  :param frequency_penalty:
@@ -468,7 +558,7 @@ class Chat(BaseSDK):
468
558
  :param tool_choice:
469
559
  :param tools:
470
560
  :param top_p:
471
- :param user:
561
+ :param debug:
472
562
  :param retries: Override the default retry configuration for this method
473
563
  :param server_url: Override the default server URL for this method
474
564
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -481,6 +571,21 @@ class Chat(BaseSDK):
481
571
  self,
482
572
  *,
483
573
  messages: Union[List[components.Message], List[components.MessageTypedDict]],
574
+ provider: OptionalNullable[
575
+ Union[
576
+ components.ChatGenerationParamsProvider,
577
+ components.ChatGenerationParamsProviderTypedDict,
578
+ ]
579
+ ] = UNSET,
580
+ plugins: Optional[
581
+ Union[
582
+ List[components.ChatGenerationParamsPluginUnion],
583
+ List[components.ChatGenerationParamsPluginUnionTypedDict],
584
+ ]
585
+ ] = None,
586
+ route: OptionalNullable[components.ChatGenerationParamsRoute] = UNSET,
587
+ user: Optional[str] = None,
588
+ session_id: Optional[str] = None,
484
589
  model: Optional[str] = None,
485
590
  models: Optional[List[str]] = None,
486
591
  frequency_penalty: OptionalNullable[float] = UNSET,
@@ -520,7 +625,7 @@ class Chat(BaseSDK):
520
625
  ]
521
626
  ] = None,
522
627
  top_p: OptionalNullable[float] = UNSET,
523
- user: Optional[str] = None,
628
+ debug: Optional[Union[components.Debug, components.DebugTypedDict]] = None,
524
629
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
525
630
  server_url: Optional[str] = None,
526
631
  timeout_ms: Optional[int] = None,
@@ -531,6 +636,11 @@ class Chat(BaseSDK):
531
636
  Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
532
637
 
533
638
  :param messages:
639
+ :param provider: When multiple model providers are available, optionally indicate your routing preference.
640
+ :param plugins: Plugins you want to enable for this request, including their settings.
641
+ :param route: Routing strategy for multiple models: \"fallback\" (default) uses secondary models as backups, \"sort\" sorts all endpoints together by routing criteria.
642
+ :param user:
643
+ :param session_id: 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.
534
644
  :param model:
535
645
  :param models:
536
646
  :param frequency_penalty:
@@ -551,7 +661,7 @@ class Chat(BaseSDK):
551
661
  :param tool_choice:
552
662
  :param tools:
553
663
  :param top_p:
554
- :param user:
664
+ :param debug:
555
665
  :param retries: Override the default retry configuration for this method
556
666
  :param server_url: Override the default server URL for this method
557
667
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -563,6 +673,21 @@ class Chat(BaseSDK):
563
673
  self,
564
674
  *,
565
675
  messages: Union[List[components.Message], List[components.MessageTypedDict]],
676
+ provider: OptionalNullable[
677
+ Union[
678
+ components.ChatGenerationParamsProvider,
679
+ components.ChatGenerationParamsProviderTypedDict,
680
+ ]
681
+ ] = UNSET,
682
+ plugins: Optional[
683
+ Union[
684
+ List[components.ChatGenerationParamsPluginUnion],
685
+ List[components.ChatGenerationParamsPluginUnionTypedDict],
686
+ ]
687
+ ] = None,
688
+ route: OptionalNullable[components.ChatGenerationParamsRoute] = UNSET,
689
+ user: Optional[str] = None,
690
+ session_id: Optional[str] = None,
566
691
  model: Optional[str] = None,
567
692
  models: Optional[List[str]] = None,
568
693
  frequency_penalty: OptionalNullable[float] = UNSET,
@@ -602,7 +727,7 @@ class Chat(BaseSDK):
602
727
  ]
603
728
  ] = None,
604
729
  top_p: OptionalNullable[float] = UNSET,
605
- user: Optional[str] = None,
730
+ debug: Optional[Union[components.Debug, components.DebugTypedDict]] = None,
606
731
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
607
732
  server_url: Optional[str] = None,
608
733
  timeout_ms: Optional[int] = None,
@@ -613,6 +738,11 @@ class Chat(BaseSDK):
613
738
  Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes.
614
739
 
615
740
  :param messages:
741
+ :param provider: When multiple model providers are available, optionally indicate your routing preference.
742
+ :param plugins: Plugins you want to enable for this request, including their settings.
743
+ :param route: Routing strategy for multiple models: \"fallback\" (default) uses secondary models as backups, \"sort\" sorts all endpoints together by routing criteria.
744
+ :param user:
745
+ :param session_id: 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.
616
746
  :param model:
617
747
  :param models:
618
748
  :param frequency_penalty:
@@ -633,7 +763,7 @@ class Chat(BaseSDK):
633
763
  :param tool_choice:
634
764
  :param tools:
635
765
  :param top_p:
636
- :param user:
766
+ :param debug:
637
767
  :param retries: Override the default retry configuration for this method
638
768
  :param server_url: Override the default server URL for this method
639
769
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -651,6 +781,15 @@ class Chat(BaseSDK):
651
781
  base_url = self._get_url(base_url, url_variables)
652
782
 
653
783
  request = components.ChatGenerationParams(
784
+ provider=utils.get_pydantic_model(
785
+ provider, OptionalNullable[components.ChatGenerationParamsProvider]
786
+ ),
787
+ plugins=utils.get_pydantic_model(
788
+ plugins, Optional[List[components.ChatGenerationParamsPluginUnion]]
789
+ ),
790
+ route=route,
791
+ user=user,
792
+ session_id=session_id,
654
793
  messages=utils.get_pydantic_model(messages, List[components.Message]),
655
794
  model=model,
656
795
  models=models,
@@ -681,7 +820,7 @@ class Chat(BaseSDK):
681
820
  tools, Optional[List[components.ToolDefinitionJSON]]
682
821
  ),
683
822
  top_p=top_p,
684
- user=user,
823
+ debug=utils.get_pydantic_model(debug, Optional[components.Debug]),
685
824
  )
686
825
 
687
826
  req = self._build_request_async(
@@ -700,6 +839,7 @@ class Chat(BaseSDK):
700
839
  get_serialized_body=lambda: utils.serialize_request_body(
701
840
  request, False, False, "json", components.ChatGenerationParams
702
841
  ),
842
+ allow_empty_value=None,
703
843
  timeout_ms=timeout_ms,
704
844
  )
705
845
 
openrouter/completions.py CHANGED
@@ -136,6 +136,7 @@ class Completions(BaseSDK):
136
136
  get_serialized_body=lambda: utils.serialize_request_body(
137
137
  request, False, False, "json", components.CompletionCreateParams
138
138
  ),
139
+ allow_empty_value=None,
139
140
  timeout_ms=timeout_ms,
140
141
  )
141
142
 
@@ -310,6 +311,7 @@ class Completions(BaseSDK):
310
311
  get_serialized_body=lambda: utils.serialize_request_body(
311
312
  request, False, False, "json", components.CompletionCreateParams
312
313
  ),
314
+ allow_empty_value=None,
313
315
  timeout_ms=timeout_ms,
314
316
  )
315
317