diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 401acf61..5f8e090b 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,19 +1,19 @@
lockVersion: 2.0.0
id: c48cf606-fb42-4a45-9c23-8f0555307828
management:
- docChecksum: 26c0a02dc101b4017015c2d0eb5ecb9b
+ docChecksum: 4131153ef3975a36cc8d72170d342480
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 1.1.31
- configChecksum: 854cfeca4a37f4eeb7a001dfa77e8fc7
+ releaseVersion: 1.1.32
+ configChecksum: edf32d3cec9d4c5f92e9eae2b5deb8eb
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: 8c390f2d-6d5f-4e7a-a8e3-5dd3d2d5188c
- pristine_commit_hash: cc90cf104c6373f0b3fd4d47e8d8d4b33c94b012
- pristine_tree_hash: 7db7d9131b39066966f1b81e6893ffca84198ad4
+ generation_id: 734c4bb5-f98f-44b8-a4db-9c538e7df340
+ pristine_commit_hash: 10cb0a4dd3ddab140f172ceac0ba940c2f051cf1
+ pristine_tree_hash: 6d7fc5b6e9e0879e726e4ecd073aedfda2b6cfbc
features:
python:
acceptHeaders: 3.0.0
@@ -830,8 +830,8 @@ trackedFiles:
pristine_git_object: 8dd2b456e53244a5eaf7e3e957b00840f6fd9601
docs/components/byokkey.mdx:
id: f67303c7207c
- last_write_checksum: sha1:034c0336049d87ffc6bb4ac2825c02513a7f25a6
- pristine_git_object: 151dd8398dc818ff4d26d6859d25efd202d03917
+ last_write_checksum: sha1:a83e7ad6fd5e38d63f039e7017d8cdf01cc97b9c
+ pristine_git_object: 10b52aa5edd1b60e6c397d608522a12257a597ad
docs/components/byokproviderslug.mdx:
id: 6ea70819f6d8
last_write_checksum: sha1:05cb53a8b2407f0f5673ed7243d5cce09ef5e02c
@@ -1490,32 +1490,32 @@ trackedFiles:
pristine_git_object: 753493b8d505e9317dcaca6fc897da7e30e91d0c
docs/components/createbyokkeyrequest.mdx:
id: 2af3019aa2a7
- last_write_checksum: sha1:cd7ec119da30ea0b5ae12e150355d2ebc3069809
- pristine_git_object: 3eaa154fa0f401f51e6f24d01140da9adf9320d8
+ last_write_checksum: sha1:8043e06630237922eaccbf4f0cea0d9c306116ad
+ pristine_git_object: 1bb9f670ee89c79fa917de5d75960818e91a237a
docs/components/createbyokkeyresponse.mdx:
id: 73f247dc0e33
last_write_checksum: sha1:c4dbcd1ccaf3465a42c9370ce785d1be420eda5c
pristine_git_object: 67494d04412539e0cb0b406ef4e4cce61b3a6c87
docs/components/createguardrailrequest.mdx:
id: c1a768f054c0
- last_write_checksum: sha1:868eb5e3fd2ea1ee01d247fafe5526c530c548b0
- pristine_git_object: f78f3b4e4d60aead92e5c347a68ebce32ac3b5d9
+ last_write_checksum: sha1:5f0f8c39e8b8e4b495686dbeadc9628fd29251b6
+ pristine_git_object: d3465e8fa07d7ea2993d676b2257a6a3feab4938
docs/components/createguardrailresponse.mdx:
id: 1477eebdf505
last_write_checksum: sha1:425860f0573dc643cab07623da9d01218e79ba65
pristine_git_object: 677f9a9f2183fa8c520143736a05c37b2c66195e
docs/components/createobservabilitydestinationrequest.mdx:
id: 8d942a601a6e
- last_write_checksum: sha1:4d6fe2dc5cc05405ccfeb84ccc0f63d412316852
- pristine_git_object: abe93cf002d475bdeb063b5b597a490f5f91e7c8
+ last_write_checksum: sha1:0021248490c5090429fcd8fe25d4f0fdfcf06ac6
+ pristine_git_object: d5091906ba8777d81d2771d658d463c24ce9dee9
docs/components/createobservabilitydestinationrequesttype.mdx:
id: 0cb269425077
last_write_checksum: sha1:f8608dbed4fcc4407be03f34d5a5ab50c5cd085e
pristine_git_object: a3f9ac29f6a4edc5a63c4a6b18c5b86754c1f945
docs/components/createobservabilitydestinationresponse.mdx:
id: ce5ac8963efc
- last_write_checksum: sha1:de29327c652aebd154ae071bcce530d8c1518012
- pristine_git_object: a6654f0998c2afe7f22e5647afd77c9bd374491f
+ last_write_checksum: sha1:5048d55d8a6fd21a25ed43c97ae2270b26520e10
+ pristine_git_object: 11ab48b33de4baca74149e87dddc9fc943c64595
docs/components/createpresetfrominferenceresponse.mdx:
id: ed0298bf47bf
last_write_checksum: sha1:01fc963af14788ca0453a09fe4f7a60e4420244a
@@ -2150,8 +2150,8 @@ trackedFiles:
pristine_git_object: 21e603e46b10fd25c932b65a82a82f37ce27ce28
docs/components/getobservabilitydestinationresponse.mdx:
id: fc89b94d297e
- last_write_checksum: sha1:43e6002bcb78df9ee766e6d97c08a6b238f8cae5
- pristine_git_object: efce02e6b84011ecee5c2ccacffb835229febd25
+ last_write_checksum: sha1:59e4dd8c6b1ec13fde7bfbee9df6c54c2912dd40
+ pristine_git_object: 15510e981d231b9251ff40f44c45d8a352669e94
docs/components/getpresetresponse.mdx:
id: c0c979f8e40b
last_write_checksum: sha1:370381ce62ad520180a59c7659ba0f72a4a1cdd5
@@ -2174,8 +2174,8 @@ trackedFiles:
pristine_git_object: 42ef3f3487d6e55ad13f7ae93edd146fd46332bf
docs/components/guardrail.mdx:
id: 91791d4c83b6
- last_write_checksum: sha1:db7056e0a0fe1f8384e549a3df295273db2dff5f
- pristine_git_object: 49929bdf74718658aed4b007b0b9bc9493de1c6d
+ last_write_checksum: sha1:36c5cd62a4514185f059d18939ac595a4232c4f4
+ pristine_git_object: 7f703db34ea13fba2a7af24b511371f2d8691b70
docs/components/guardrailinterval.mdx:
id: ccedea0ab250
last_write_checksum: sha1:08342a9cceb4f7a5dc0b574a429d46af9d9a13f4
@@ -3110,8 +3110,8 @@ trackedFiles:
pristine_git_object: e0bc365ca79475fa53de95da69e7c42e8a26a391
docs/components/observabilityarizedestination.mdx:
id: 8ab5c92ec9b5
- last_write_checksum: sha1:a61629804fb1a6417abc56ebffab80ce4f957715
- pristine_git_object: 9eefceee787aa10f465bb15c1cd4c62ec163a5ee
+ last_write_checksum: sha1:95a8e27c3dec38da7c3cefb0a9b5d81ae7a17c49
+ pristine_git_object: f7dfaeeb2ddd051156b6f85e26dbb631495417df
docs/components/observabilityarizedestinationconfig.mdx:
id: efaf5bfd1406
last_write_checksum: sha1:1425f56ed1f045643b3597c10f7c827969b4d2b2
@@ -3122,8 +3122,8 @@ trackedFiles:
pristine_git_object: 8fb879fb1be791e16ed3c2d1340983ff3e48aca7
docs/components/observabilitybraintrustdestination.mdx:
id: d4fb2aa6ff1b
- last_write_checksum: sha1:5b6aad4cb8f7a08f089a2ddbb85501f28b1c820c
- pristine_git_object: bd21dcc2f8d4c5295cda66d505db9a4127de3be2
+ last_write_checksum: sha1:96ec2b8260a2c61bb5abd296bcb2dfaad73a5998
+ pristine_git_object: f569b94af75027fbc27d8774e354a86a62e2c7ce
docs/components/observabilitybraintrustdestinationconfig.mdx:
id: 03abfca35bdc
last_write_checksum: sha1:c0ec75b1f1d28d62abe12c9ccff5d32bb98d8ad6
@@ -3134,8 +3134,8 @@ trackedFiles:
pristine_git_object: 2686027052fc88669dbe1f261baacbdeed41a895
docs/components/observabilityclickhousedestination.mdx:
id: 22672c72a47f
- last_write_checksum: sha1:390cf60319cb199a49f9029044eb5cc4164ef19c
- pristine_git_object: 1791dbf32bc671a4e17725e304de6d78da499387
+ last_write_checksum: sha1:5d13e9ca0d42c51fbf913f9df79d5bbdb260b858
+ pristine_git_object: 897e5e389431226ad795d73b1ed37d18a047399b
docs/components/observabilityclickhousedestinationconfig.mdx:
id: 31969c4f79e6
last_write_checksum: sha1:581b45aab6174219694069db5d2dd187aa3c081f
@@ -3146,8 +3146,8 @@ trackedFiles:
pristine_git_object: c450839c8b4d42ad1d2d075a948136c9dc9ac853
docs/components/observabilitydatadogdestination.mdx:
id: 9069b48e8b03
- last_write_checksum: sha1:f0c2e0a4742245f258aa9783f63d4246dae4a889
- pristine_git_object: c3a06316261b38619ce3e1fc677e8c7bcc87f209
+ last_write_checksum: sha1:c47e9779e0f7428c3900f5552929662568744d6a
+ pristine_git_object: 1df35546bd3caa20d0672e560e4fe616598995d2
docs/components/observabilitydatadogdestinationconfig.mdx:
id: 5d9352581ce2
last_write_checksum: sha1:41095359e9daf0344c5117c01b1f7fb4e97d2301
@@ -3178,8 +3178,8 @@ trackedFiles:
pristine_git_object: 842fa8f78a38e50486069046e7c2aef07997c600
docs/components/observabilitygrafanadestination.mdx:
id: 933526705b96
- last_write_checksum: sha1:75f67fe00561d8a7f163554ccec092903698df55
- pristine_git_object: f0c1cfd903a76d5ab3a5e399877db18ddf7262d0
+ last_write_checksum: sha1:1d2eb05bf582f6b1edab64b3bf6482cccab2921f
+ pristine_git_object: f1a902bee6f72984286cd5ed37be642d9a5761cb
docs/components/observabilitygrafanadestinationconfig.mdx:
id: 6dd26838a8ed
last_write_checksum: sha1:5ecf3222dc5ab0e308e7e43fa0eea88e0c00902a
@@ -3190,8 +3190,8 @@ trackedFiles:
pristine_git_object: b3a87a6bd089fdda6ef0b1b82ac9a7fd7f7b8686
docs/components/observabilitylangfusedestination.mdx:
id: a937f11e1a22
- last_write_checksum: sha1:585cafae4074fa2aa7cdd0adeb76d8246fbd78f1
- pristine_git_object: 5364c6337d550cd2c5ddaf5e7be43ef244bb2624
+ last_write_checksum: sha1:18c8596bed2b8a2a7a86010a286e81a5c0be80df
+ pristine_git_object: 47c89946438bf569b60023cf3c43fe8ce5f78789
docs/components/observabilitylangfusedestinationconfig.mdx:
id: eb6d8b96b9db
last_write_checksum: sha1:a272574f6faa764dbf291efe1852d5a4680c903b
@@ -3202,8 +3202,8 @@ trackedFiles:
pristine_git_object: 0a0ef90a75966cb1e6a01cdabca55e2854a2e65e
docs/components/observabilitylangsmithdestination.mdx:
id: 3c019b2baadd
- last_write_checksum: sha1:e864a5c5d762a558a1540594e309410d06a5c298
- pristine_git_object: 20e1a3eccc78372ed5a0e4eac6395da47abd6a3a
+ last_write_checksum: sha1:d6f60dd8f5cfb5888ed59a18297b28d049a44b2f
+ pristine_git_object: 0d5a6498cd060aeb37839eed23ceb0de52da7b20
docs/components/observabilitylangsmithdestinationconfig.mdx:
id: e8ba506f0bb6
last_write_checksum: sha1:9c000b6149bfe5f00602042e1a3230a72ae989eb
@@ -3214,8 +3214,8 @@ trackedFiles:
pristine_git_object: 4cc128c9afe496eb949236875b79455d15cc1365
docs/components/observabilitynewrelicdestination.mdx:
id: 51f825f7492d
- last_write_checksum: sha1:efca650011f54525bddbead3fb3e4e0fff8d4147
- pristine_git_object: b04a7f805638297f076ae79db9daf7e534d385f7
+ last_write_checksum: sha1:4c3df03aec007e6a22130d573035cbaf39abb7df
+ pristine_git_object: 7fb48f5372f6b6698cd6e6acc9047527df42ab35
docs/components/observabilitynewrelicdestinationconfig.mdx:
id: 1bfa0e65f66e
last_write_checksum: sha1:bb861670f63dcfdd47f92ffe04d26ce4020208be
@@ -3226,8 +3226,8 @@ trackedFiles:
pristine_git_object: 8f74ec6c80b673784e6663faced904afed9e73d7
docs/components/observabilityopikdestination.mdx:
id: f79bf0519b07
- last_write_checksum: sha1:81c620cb22af1764b9fe47a1ee912b8c53979128
- pristine_git_object: 82ab82d0849595cda0ba3fcdb0d47baadcc7d071
+ last_write_checksum: sha1:1719afdcb2eda0ba42ea5861dc733c1ee14bef24
+ pristine_git_object: 559de2d1bd815abb5fcd446618683f456dd3d020
docs/components/observabilityopikdestinationconfig.mdx:
id: a29272c1315e
last_write_checksum: sha1:afe9c9dab6b21c068e5629c4823b09b1ce076086
@@ -3238,8 +3238,8 @@ trackedFiles:
pristine_git_object: f7689374cb3fa75bfb790b12a737b10941fc9e57
docs/components/observabilityotelcollectordestination.mdx:
id: fbefa5ba48da
- last_write_checksum: sha1:baae534f030f73723a2fdeb02967bd2f5ec64144
- pristine_git_object: 43f3a5129313ccdba4d6515ab4dc5aa24f3bb481
+ last_write_checksum: sha1:f36ffcf2ee9d38b9b8ccb09e4af39f84dc0aca6d
+ pristine_git_object: bd1a83b804e1db7fdda618221e2c7f2adf66cf6d
docs/components/observabilityotelcollectordestinationconfig.mdx:
id: 204fa4b1365b
last_write_checksum: sha1:21ffeb7874cfe3cf90ee0521f3cc21a23b2c9f4b
@@ -3250,8 +3250,8 @@ trackedFiles:
pristine_git_object: 04d51fca83de0cd45e5341d5eafef87997644e08
docs/components/observabilityposthogdestination.mdx:
id: 602ebbf459aa
- last_write_checksum: sha1:14f91996137492259dbc21338f98c30c47f8a493
- pristine_git_object: e6b8ee1b2e21f6210f13ec59b3346a3fc06f897f
+ last_write_checksum: sha1:efc49b1705f34883e0923ce5e56138ff022436d5
+ pristine_git_object: 7e0644b0092975c5acc38b2a78aa690f4e4be9d6
docs/components/observabilityposthogdestinationconfig.mdx:
id: f70e6155227e
last_write_checksum: sha1:ae7c844f4507e8fc571f10e8f23ebae6f4ef5ad9
@@ -3262,8 +3262,8 @@ trackedFiles:
pristine_git_object: 15d5f4b204b6f11123e889347b9bca9d4c1bf774
docs/components/observabilityrampdestination.mdx:
id: d282b8093450
- last_write_checksum: sha1:4b8c40ae8dc8c60523ec372f737eabaacd411500
- pristine_git_object: 78218365803f4ccd7050713a6909e04c87c81534
+ last_write_checksum: sha1:e85d680ecdeba957767c94cccf295bfe9e7f9838
+ pristine_git_object: fbc07a12a949131ed034fc4e1dafbf42205f579f
docs/components/observabilityrampdestinationconfig.mdx:
id: 508afecc801d
last_write_checksum: sha1:0303440d4c32b655e5eae672157859c3f5a3d842
@@ -3274,8 +3274,8 @@ trackedFiles:
pristine_git_object: c344370154af3e48ab34d83bceeec80c163e8b4e
docs/components/observabilitys3destination.mdx:
id: fcfdc787f494
- last_write_checksum: sha1:60ec25f2f2466fc343e530c9023410e274d66f16
- pristine_git_object: 14ec127b3a65635ef1bfbbf0bc2d91f64ff80629
+ last_write_checksum: sha1:8294e3c2bd2beaab8ecf202aaa961066cf3ea1d9
+ pristine_git_object: 9fc291ed751e3f32abeb6b72534d2358ca6ea32b
docs/components/observabilitys3destinationconfig.mdx:
id: 040367f19dfe
last_write_checksum: sha1:063638b494568601ae5043fa24f40cbac6a1b641
@@ -3286,8 +3286,8 @@ trackedFiles:
pristine_git_object: 0ef939a6bbce82c2610a94f31a126bc62e32b382
docs/components/observabilitysentrydestination.mdx:
id: 9a5494b91636
- last_write_checksum: sha1:73be2892119ac49f3aaa43724cf7845cd0160d85
- pristine_git_object: 6f37f7dcbd8d5784787e1538c78504a59a84603b
+ last_write_checksum: sha1:55e0b9df295d458f8398b8655cc2c7a82660dee3
+ pristine_git_object: 029bbf4a349ccac5f69a7e40f77f11b838a8c6ce
docs/components/observabilitysentrydestinationconfig.mdx:
id: 4b59b787f138
last_write_checksum: sha1:77957ffe6671ee13d885296e609bca1f6e6bfef9
@@ -3298,8 +3298,8 @@ trackedFiles:
pristine_git_object: b4948a38975913b3ad4cd50b494566af44854935
docs/components/observabilitysnowflakedestination.mdx:
id: 50eb5d73c736
- last_write_checksum: sha1:179d196d7ed16d2dee94590b38bd856155d8e9d0
- pristine_git_object: 0cc7f73d1ded5ca0e6ae32ce6b9f673633fc1ccf
+ last_write_checksum: sha1:3203b625f505b5aed73a319d4e60511604cecade
+ pristine_git_object: 52ae75366b2042014f64fbbdc8b591770f6963ca
docs/components/observabilitysnowflakedestinationconfig.mdx:
id: 61daa1944898
last_write_checksum: sha1:aba368fd00883f348c77fcee080414ec433a6dfe
@@ -3310,8 +3310,8 @@ trackedFiles:
pristine_git_object: c3cc873227fc32fff3a1aeddfe7852856057f095
docs/components/observabilityweavedestination.mdx:
id: 16c45cebb51d
- last_write_checksum: sha1:cf3779fed0094cd4b9c6ad15c9b4a24e44ac443f
- pristine_git_object: 4f9d6b16f6e7f7ad54de5755e14b559205cd103a
+ last_write_checksum: sha1:89a2ab7469a396877ebf757c7b18f804088e9394
+ pristine_git_object: be84eb7b9d86c657a9299fdb924987d1b9cefe42
docs/components/observabilityweavedestinationconfig.mdx:
id: 27ab1f4389f1
last_write_checksum: sha1:26f0010d5e544c9856f09b63136ff4584cc3443f
@@ -3322,8 +3322,8 @@ trackedFiles:
pristine_git_object: dcaffb2070e7203e06a6747111b6df950465b5ff
docs/components/observabilitywebhookdestination.mdx:
id: ac114793a610
- last_write_checksum: sha1:43788ee2fb614098a1c7f6b122c89b46393fa50d
- pristine_git_object: 6be7531c12764bacdb38857b0a2b6d2a412880b0
+ last_write_checksum: sha1:bb09f99041dfc29cf127311a66af85885ae76017
+ pristine_git_object: dce0e333af029f19ad7fdce287bc0a93daca56bb
docs/components/observabilitywebhookdestinationconfig.mdx:
id: 3f56a0517583
last_write_checksum: sha1:50a935198381531354a979579be97e2f61f1ad46
@@ -5350,12 +5350,12 @@ trackedFiles:
pristine_git_object: 9afd1bfd1a9140422831bb7a13567382bbd8dada
docs/components/updateobservabilitydestinationrequest.mdx:
id: b54091567003
- last_write_checksum: sha1:9e12578f78f48311412291d5e39c101bbdad9e62
- pristine_git_object: 56bffb4ea7a9897806c0b5e8f14e08bfeca8bd6e
+ last_write_checksum: sha1:5e1ca1d49b7a6a202ab0c8b8aa0b4f1a78a6246d
+ pristine_git_object: 3ec5c2811fe63bd9ef043ad67ae775b2e77e21a8
docs/components/updateobservabilitydestinationresponse.mdx:
id: be9661c3676e
- last_write_checksum: sha1:c8fde493ab2c8285b0a800795e6106f2dbf3a63f
- pristine_git_object: c7aba4370fef4f13a7640e16f1a5404bc640f78c
+ last_write_checksum: sha1:0e661f2facf7780455f8891b4437bfa619d6f97d
+ pristine_git_object: d3f4360ed2bcd686b69125c549deec63dede21c9
docs/components/updatescimgroupmappingrequest.mdx:
id: 4318f4ed22f5
last_write_checksum: sha1:80947ab2421cee078a515582fc49381bfc2641a7
@@ -6402,8 +6402,8 @@ trackedFiles:
pristine_git_object: 67a37d54c875cac0897804741a900aacacd3ddca
docs/operations/listbyokkeysrequest.mdx:
id: 4e8166d10be3
- last_write_checksum: sha1:b677e49119e0c9d318bee611f024f663ba3d94c0
- pristine_git_object: 178868c31848afeb0542a999cc3f61b6fc0c503c
+ last_write_checksum: sha1:c9c466a619d0470c1cdbd853dfebbf8f7b9be989
+ pristine_git_object: f55e2c02b03447091d650816e02b71aa2d5ee562
docs/operations/listbyokkeysresponse.mdx:
id: ad2f5a3c160a
last_write_checksum: sha1:8496c7f3080cd0ec5a42401a6cccfbd1be87968d
@@ -6582,8 +6582,8 @@ trackedFiles:
pristine_git_object: 939ce50afe886df24246d91e5a037677042f06a2
docs/operations/listobservabilitydestinationsresponse.mdx:
id: 7da9d153805e
- last_write_checksum: sha1:d24fd1ff10e5422270e71b6a89f71cd1da952d59
- pristine_git_object: da49e5fe54162c246f3e194847ddb7faf88fa8da
+ last_write_checksum: sha1:6ddd543447209c7ee1e2ff8b8160bec50139b70a
+ pristine_git_object: 0f02272edfdbb69d0293a6ca15823737b63ef15a
docs/operations/listorganizationmembersdata.mdx:
id: d96ba08cbfe4
last_write_checksum: sha1:d947bba247f864f0420d6184495be6b26845a966
@@ -7002,8 +7002,8 @@ trackedFiles:
pristine_git_object: 08ef8d73c050b6baab18ef6e246a1d074179b21f
docs/sdks/byok/README.mdx:
id: 17792f3b180d
- last_write_checksum: sha1:2ba79baccc659bbdce058ce833af31da689f7b02
- pristine_git_object: dbbd72608c5b05c2c44c7e33ab9f44ef3cf7ec76
+ last_write_checksum: sha1:1520e531278af50a90ab6fb38e06a36fad90138f
+ pristine_git_object: d86220a274db607e8f15025c7e173563e47f3794
docs/sdks/chat/README.mdx:
id: 1dd859c23fe1
last_write_checksum: sha1:75cf7ecf14bdaae4b3e2c767dc3d2c9d9e41d31c
@@ -7038,8 +7038,8 @@ trackedFiles:
pristine_git_object: f262b34982a18293f5ae22bfbbf385010bfcdc9c
docs/sdks/guardrails/README.mdx:
id: a0cd4218b8fa
- last_write_checksum: sha1:816c0e8d6a5d4dcefd9f0b32b120628fb7f16f4e
- pristine_git_object: 3c7827be2c4c4a7106a4c02ecf1bd21531d6e8e2
+ last_write_checksum: sha1:a1382f5db5f769469ee8c236eb60d5a44068bc88
+ pristine_git_object: 99ea282ff9a0a1fd1436d984b08b5bc387f9fce0
docs/sdks/images/README.mdx:
id: 534a6c102c4f
last_write_checksum: sha1:1c0a9c704bdd9090f5a0a74f4d9ae0c4360707bb
@@ -7054,8 +7054,8 @@ trackedFiles:
pristine_git_object: c8f7dfd9fd46b60a5814250f8cb2de313166e2c3
docs/sdks/observability/README.mdx:
id: 75811527e651
- last_write_checksum: sha1:939e6208f7d7a62992e2df529ccfa763afa7a646
- pristine_git_object: 3a4d24cc8068f03f5319035abce43527103e8c32
+ last_write_checksum: sha1:8dcbcdd3a6ec358ebafd8246f0bf7bf9071c2967
+ pristine_git_object: 3884960effcbf6df6d8209a716c048e265e88c5a
docs/sdks/organization/README.mdx:
id: f41b85542db0
last_write_checksum: sha1:3d384483978c2c141bc145ac7bf9d8b1a4120593
@@ -7102,8 +7102,8 @@ trackedFiles:
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:8cf0bdbe21b12f553070e2882fe59bb48641e7ed
- pristine_git_object: 6c3b8a8af99cfb2a57a9c6bc6c30a1aa25040433
+ last_write_checksum: sha1:65343bcdff44f49aa04254e5a1641625cb4cd8f4
+ pristine_git_object: 049afe5af688a8782651d3ee9c7c1f6929e3e009
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -7130,8 +7130,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:279eb10773c31092be7da44094b59f56083dac33
- pristine_git_object: 3cc5f0ce8d496f48c44181f9a34179c3ed626a28
+ last_write_checksum: sha1:64bc411e30ab25dff899a976fd19988601df598a
+ pristine_git_object: 00ac74e9c910e33e163ec1cb772d4f99703b9dd1
src/openrouter/analytics.py:
id: cb406b5aaabb
last_write_checksum: sha1:3ea0f1c73fb9c101b7bc5719da4dd7bf62ff469a
@@ -7162,8 +7162,8 @@ trackedFiles:
pristine_git_object: 412aed86e32b1fd166d27e06e562463fa2b04395
src/openrouter/byok.py:
id: bec352462ae1
- last_write_checksum: sha1:fd64fc0dbaec3e03966737417cfb02b61e13011d
- pristine_git_object: 63fab85e63ac2d40fb05e71c47a3f3a14d9620a3
+ last_write_checksum: sha1:cc8870e008a6a2b86ca173a99800792d06097205
+ pristine_git_object: 627c6084130e7c8a9821950b9dd62ae0f5ac1281
src/openrouter/chat.py:
id: 723fdce15c1d
last_write_checksum: sha1:1a4e5375fb95884be6db0f508e1c2c9cda27b20e
@@ -7534,8 +7534,8 @@ trackedFiles:
pristine_git_object: 219148fc990faf0541310cf55cf11ffbcccc2e55
src/openrouter/components/byokkey.py:
id: 94a3339e7dfc
- last_write_checksum: sha1:11e7b469b0d452443fbda99208bd1af4e020796b
- pristine_git_object: 47ef267b5e0f7b615b0cd66018728e3f47440a66
+ last_write_checksum: sha1:b851b9c1057db4191214dc790b222eb2877c2bca
+ pristine_git_object: c6788cf31cadfdbb0e34fe3ae5d35be9432c2bb4
src/openrouter/components/byokproviderslug.py:
id: 6738a8516caf
last_write_checksum: sha1:86e50c5fb13205b138c3bd966a758b6e173e789d
@@ -7826,24 +7826,24 @@ trackedFiles:
pristine_git_object: dbafc2878cb3185fac34919e2f789b26dc86f70e
src/openrouter/components/createbyokkeyrequest.py:
id: 238e868445b4
- last_write_checksum: sha1:c6523331919e4e590567d570ecc47ac51152a23b
- pristine_git_object: 4202c110ce2032a2378b06202319731b1d74b1ba
+ last_write_checksum: sha1:71d253f65eb95fd04de90ef120623375708592f7
+ pristine_git_object: d79f38d162da4661affe6dddc4eaf9e956b79582
src/openrouter/components/createbyokkeyresponse.py:
id: 2b6c5e13270a
last_write_checksum: sha1:a7a2a40b9ac16a975a4c5ecc8802fc0b7785691c
pristine_git_object: fcfd9d646f216fdbb715cbbaefa4382d75750b79
src/openrouter/components/createguardrailrequest.py:
id: 34d69149fb33
- last_write_checksum: sha1:26f43cea556073b5fcf1c17d8f6ce33690fb891d
- pristine_git_object: d79e08fbfc9a989d53803e1beba0310efdad86f5
+ last_write_checksum: sha1:374cfec194bcb61afee830b30cff563002cff088
+ pristine_git_object: 3a11053d14ce02190734af3263ec9661943cc1a0
src/openrouter/components/createguardrailresponse.py:
id: b4e1bdf1de5b
last_write_checksum: sha1:ae20a5e7425510c240e5697d847b1cae65940bd6
pristine_git_object: d6c4a4dc73222668daddc2a1788d314ff30e8fe6
src/openrouter/components/createobservabilitydestinationrequest.py:
id: 58587fb98a32
- last_write_checksum: sha1:027005213cc1f3cbaef6c17bd51076f0f1cdca20
- pristine_git_object: ad54eb7ac853549861c5cc2f671afe48a941fcc6
+ last_write_checksum: sha1:73aa94c36e15c990e3f908e83ca40472087ddc55
+ pristine_git_object: 07258838e652b2ca968c31002c3bb4adfb39ae66
src/openrouter/components/createobservabilitydestinationresponse.py:
id: 9a8561661e52
last_write_checksum: sha1:730054c12ad209d5f83b88825c946fd6f322e6e9
@@ -8142,8 +8142,8 @@ trackedFiles:
pristine_git_object: acda534cb0ced2a391479b720434cf0f57f46276
src/openrouter/components/guardrail.py:
id: 67ee78dd06e6
- last_write_checksum: sha1:993c5e9349a994fa0bf12fff207cf5a9ebf699d7
- pristine_git_object: 010fdd405a141e668d48f9e4c5f09d98bb2e6d0a
+ last_write_checksum: sha1:56faacd2e781c742ccb3430e8f01d66f34e5fb3c
+ pristine_git_object: 6c518ce64d7b32f8a553f7ec2af28a3da0bca532
src/openrouter/components/guardrailinterval.py:
id: 01687fc135ab
last_write_checksum: sha1:430f886f371b85777346de663202d62708cd84cf
@@ -8514,20 +8514,20 @@ trackedFiles:
pristine_git_object: 7f9b6c70ef10b154e67db68ce62b326ab629cde8
src/openrouter/components/observabilityarizedestination.py:
id: 8926882c1d18
- last_write_checksum: sha1:6cbe740aa20cd27d81b5d5f4e229f3cb99520972
- pristine_git_object: d1fb60540d3025e8291ae44d11fa70292a03075f
+ last_write_checksum: sha1:a85ef87c067e35b9523ff45a6fe9e41b88261c4e
+ pristine_git_object: c5abf260ad6c6f71844eb82e14d8a69193aee82e
src/openrouter/components/observabilitybraintrustdestination.py:
id: 432de20d1c77
- last_write_checksum: sha1:cb07d68cd8e5ebdebd80df9002670edfbb387b03
- pristine_git_object: 37016dc2b49d4a53c2cd52693cca6b1c22a33a75
+ last_write_checksum: sha1:941faf4b1d9a674e1ee8e11f6a99626415ca26ce
+ pristine_git_object: 8d7def693da6dfb4344c32569d69f1137e9115f7
src/openrouter/components/observabilityclickhousedestination.py:
id: 0bafb43cfee3
- last_write_checksum: sha1:58837a323c39db28cf1d9f62a492581e11153b52
- pristine_git_object: 6281200824a518e2f99fb8b40812f950ea02e78f
+ last_write_checksum: sha1:012ae9d144ba1265f84466dcf1bb7ba3b16d83d1
+ pristine_git_object: 61d6beb89a37b76be793621dcd483333aafada39
src/openrouter/components/observabilitydatadogdestination.py:
id: 2b99c86aa089
- last_write_checksum: sha1:457bd1f4c85b6e63456f2975fb915aba7d293a14
- pristine_git_object: 40cafb2eefd976ca48e6b5c77b9b00b2cc2fc348
+ last_write_checksum: sha1:eb3f1a84273fdce0cff5512490a36ccf748ff7c1
+ pristine_git_object: b2f26edbbeca3fbc4a2392804f61b0538882d40a
src/openrouter/components/observabilitydestination.py:
id: f02862444a3d
last_write_checksum: sha1:182ba82fb2aee3f33a975ce8eb2ef978bc0b46d2
@@ -8546,56 +8546,56 @@ trackedFiles:
pristine_git_object: 80ac61fe6a5044a15f9508a12a746b01085a558d
src/openrouter/components/observabilitygrafanadestination.py:
id: 36c8f26bcf6f
- last_write_checksum: sha1:d7fc978dd9c663490f1a7a8c12b07097d7985688
- pristine_git_object: 677a4cf65e3b058e7ef1f071d7f8bc5c01c61b66
+ last_write_checksum: sha1:dbf4f9c180232602f73252ca32b683e3088ed2f7
+ pristine_git_object: c132c9aa087cb43f1b6c2ef2890d14e0d8a9195c
src/openrouter/components/observabilitylangfusedestination.py:
id: 46cb7e3719a7
- last_write_checksum: sha1:0c2467b00f95fe865e9642559ec446c785f5ce03
- pristine_git_object: 961d42456fce6d3776f789b003cb80155c752e51
+ last_write_checksum: sha1:ed3dec953ecb3b4637945a037ecc53c0cb32e338
+ pristine_git_object: 1737ce962dcc5fbb10178fbb935fcfa978721cad
src/openrouter/components/observabilitylangsmithdestination.py:
id: 90dfe215aead
- last_write_checksum: sha1:6438444257ddcf7b0dd960b7c3c9def0d35c9a30
- pristine_git_object: 84d1b83002e6cf1f607640ffd9b5eeec1de36503
+ last_write_checksum: sha1:d4837b1e703024aea124676338b394ec3dd999c7
+ pristine_git_object: e273ba1cf5a2423c3b901f98c2d3bcd2c79c743a
src/openrouter/components/observabilitynewrelicdestination.py:
id: 6294b06c08ec
- last_write_checksum: sha1:196806cfff2c8f12ba1b6f9bb6633313e8cd3b5d
- pristine_git_object: 3cae22bcb04d6094f03a12366172bb1977e8b527
+ last_write_checksum: sha1:7919977eecbe09b11d16303cf59c04d26e133724
+ pristine_git_object: e42315690c7e95345fed0180bb254c58ce62d147
src/openrouter/components/observabilityopikdestination.py:
id: 404c6ff48b85
- last_write_checksum: sha1:8d75f916c39e2edf1edd163863c35fdddb2cf154
- pristine_git_object: 1be42b17ae73de94549bcc95df4d21aae2c751d2
+ last_write_checksum: sha1:fcada22ec084bbf10ceeb5606850da4a6cf13217
+ pristine_git_object: abf3edd27037fa8c890541a304d0d1a2874cc100
src/openrouter/components/observabilityotelcollectordestination.py:
id: dc77f211456a
- last_write_checksum: sha1:9ba48f1c3485f2b25fad34418b3521a3b433d051
- pristine_git_object: 00e7086f0b662bdcd4bf9d00fb868a4b20c4ccec
+ last_write_checksum: sha1:c27bef2ac2ff6a9936ae523570dc0a211de02428
+ pristine_git_object: 4a8a8a90d6971003aee6be9a7c52fb2efbff8e94
src/openrouter/components/observabilityposthogdestination.py:
id: 3a9f4942fcf9
- last_write_checksum: sha1:172b08b0319de0c958df70569fd72879f374c1a3
- pristine_git_object: 3062e97464b4fe247f74dd91854dcb030d045081
+ last_write_checksum: sha1:4213bc26545af8314ffccc2be70e1e8d51c614b9
+ pristine_git_object: 5cfe0565c2b192de4565a7711166ca2d2303da5c
src/openrouter/components/observabilityrampdestination.py:
id: 8559b9e7501b
- last_write_checksum: sha1:7982e1567132bc31a979208c7736734292e04c6b
- pristine_git_object: dd28ccf7866ed9fb8d5c5c661a953bf4dbb15993
+ last_write_checksum: sha1:322d6a545da4a249ac70edcdab8ce986b2b71300
+ pristine_git_object: 78df4a419bc3e6e4ff3f23e5b6312758a43aa7be
src/openrouter/components/observabilitys3destination.py:
id: 2022d25fe7d6
- last_write_checksum: sha1:c05eef3b3b935f0f5889afa2f63d467965beb333
- pristine_git_object: 5c400317212875cb2656d9097838b8b5b3d04587
+ last_write_checksum: sha1:0e27a0140ebc64f326f57324878bce0b3342bf79
+ pristine_git_object: f3f839f47674fcb6f506bd5f3d443af66749840d
src/openrouter/components/observabilitysentrydestination.py:
id: d27b8b37d1f8
- last_write_checksum: sha1:b76c6eac97e52bf9543711d21ab575e97fe1439c
- pristine_git_object: 2c1a346e9a0493ac54a69be42631f83f537daf84
+ last_write_checksum: sha1:10233f7d1df296cfdaaa9dc4f7c301865ffd0797
+ pristine_git_object: 77c1359305a3d100447c48a937825ba6f797385a
src/openrouter/components/observabilitysnowflakedestination.py:
id: 4e4136c11a0f
- last_write_checksum: sha1:d39b4fff4f9c39643e5cf02123540e3eb22e573b
- pristine_git_object: 9dd853c88111c1f2f729ec82736832d1b391f73c
+ last_write_checksum: sha1:a94fe17cccef92bf64332311a96b6564df36f1b0
+ pristine_git_object: 077a345f0f65bd5623c85dff9d63d3811e83dea2
src/openrouter/components/observabilityweavedestination.py:
id: 6ee5e9677e6c
- last_write_checksum: sha1:a47c8b7e71a1d6095e6a2e55b15dfcc1fd8fd9c3
- pristine_git_object: 81e7305b843bd67a80917ec5698b430ab7c5f6cb
+ last_write_checksum: sha1:0106f8ef5183456216dd8b1afe2dfdbda2e15454
+ pristine_git_object: 1fd8e8dd94d35d1da32a1584d06a882553d8c91b
src/openrouter/components/observabilitywebhookdestination.py:
id: 2f942be86581
- last_write_checksum: sha1:03c3c17e3dea02893688ce46784f9ea8461bacc4
- pristine_git_object: 344abac0c40b1b4e21d986e70be1e7ee80fc2b4d
+ last_write_checksum: sha1:a1c44a1390c0f50a4f48f9dfddb177aa6ef62a1d
+ pristine_git_object: 336851b5859a7550ed7c77765e537f5bf05e2e00
src/openrouter/components/openaifile.py:
id: fd021f0cb031
last_write_checksum: sha1:b44d0b18a4c9b119382e224786191e8d5c49960b
@@ -9410,8 +9410,8 @@ trackedFiles:
pristine_git_object: df833960211cc7ed2a2a42fddbeafda0092e1c0c
src/openrouter/components/updateobservabilitydestinationrequest.py:
id: d7a39fe04386
- last_write_checksum: sha1:6c7101d98b85614cc5768f9a9568d87763769a2e
- pristine_git_object: 7325eabc6e6dac69cf98266a0acacdd0e4b14709
+ last_write_checksum: sha1:401e5b576f8631d08e0592b6f9af9eab602c78d4
+ pristine_git_object: 2a17255000032e895ba9dc65917aa17c0f5ccef8
src/openrouter/components/updateobservabilitydestinationresponse.py:
id: 187c51d2b3a4
last_write_checksum: sha1:cadc62b37feddb4281e471d15627a9a1bef32cb1
@@ -9662,8 +9662,8 @@ trackedFiles:
pristine_git_object: f6dbf5440466ba6b1d92442cad1b91e2b3587c52
src/openrouter/guardrails.py:
id: 705839f34e66
- last_write_checksum: sha1:2880419c2b3f79cce2f1326b80c4b283de6ef56a
- pristine_git_object: c90c233e63bcae52461ce48c12326fd2e891b7e1
+ last_write_checksum: sha1:51cf6938e2307e3834dbeaf45e454fdbec040352
+ pristine_git_object: 464675f78cb10d1aa31fdc8eae5eb18c14fca042
src/openrouter/httpclient.py:
id: e9311185443d
last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7
@@ -9694,8 +9694,8 @@ trackedFiles:
pristine_git_object: d6a938412d5c82be874e958ba4a3043bd46284d3
src/openrouter/observability.py:
id: 6a17f32d3f33
- last_write_checksum: sha1:99f4ecf43d1846288ced461f300cd2d5c8070b13
- pristine_git_object: 0f62389a8410522fe76eed82c64227903a8605c5
+ last_write_checksum: sha1:cfa8495534fa7d219e42cc4a2425417738279b85
+ pristine_git_object: 5c553b76ab24d9eaef51c3bf6d85aa74391e335e
src/openrouter/operations/__init__.py:
id: 9afcea1e7161
last_write_checksum: sha1:7462feea63bad287e4382464c6a5bf24b401eaa2
@@ -9930,8 +9930,8 @@ trackedFiles:
pristine_git_object: 75480914b4db49d02f606f22d17d1a6ef52eea2a
src/openrouter/operations/listbyokkeys.py:
id: b6dd42b3e05f
- last_write_checksum: sha1:be628812911918e1b749cae0215e44fcaeb9eafd
- pristine_git_object: 5d2702bd8e0c72635f6ee8f8c4be7a7873d1a329
+ last_write_checksum: sha1:22e0872d1265a8bd11b31b3b070f5f2de210e975
+ pristine_git_object: c2daf3ad8039c3971beb9ef0e40cad8506d4a63c
src/openrouter/operations/listembeddingsmodels.py:
id: bf749a1f23d6
last_write_checksum: sha1:938440c9b9df0c3d8430792f262bffced0207d13
@@ -11167,7 +11167,7 @@ examples:
limit: 50
responses:
"200":
- application/json: {"data": [{"api_key_hashes": null, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}], "total_count": 1}
+ application/json: {"data": [{"api_key_hashes": null, "broadcast_generation_cost": false, "broadcast_generation_identity": false, "broadcast_generation_request_context": false, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}], "total_count": 1}
"401":
application/json: {"error": {"code": 401, "message": "Missing Authentication header"}}
"500":
@@ -11177,10 +11177,10 @@ examples:
createObservabilityDestination:
speakeasy-default-create-observability-destination:
requestBody:
- application/json: {"config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "enabled": true, "name": "Production Langfuse", "privacy_mode": false, "type": "langfuse"}
+ application/json: {"broadcast_generation_cost": false, "broadcast_generation_identity": false, "broadcast_generation_request_context": false, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "enabled": true, "name": "Production Langfuse", "privacy_mode": false, "type": "langfuse"}
responses:
"201":
- application/json: {"data": {"api_key_hashes": null, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}}
+ application/json: {"data": {"api_key_hashes": null, "broadcast_generation_cost": false, "broadcast_generation_identity": false, "broadcast_generation_request_context": false, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}}
"400":
application/json: {"error": {"code": 400, "message": "Invalid request parameters"}}
"401":
@@ -11212,7 +11212,7 @@ examples:
id: "99999999-aaaa-bbbb-cccc-dddddddddddd"
responses:
"200":
- application/json: {"data": {"api_key_hashes": null, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}}
+ application/json: {"data": {"api_key_hashes": null, "broadcast_generation_cost": false, "broadcast_generation_identity": false, "broadcast_generation_request_context": false, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}}
"401":
application/json: {"error": {"code": 401, "message": "Missing Authentication header"}}
"404":
@@ -11228,7 +11228,7 @@ examples:
application/json: {}
responses:
"200":
- application/json: {"data": {"api_key_hashes": null, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}}
+ application/json: {"data": {"api_key_hashes": null, "broadcast_generation_cost": false, "broadcast_generation_identity": false, "broadcast_generation_request_context": false, "config": {"baseUrl": "https://us.cloud.langfuse.com", "publicKey": "pk-l...EfGh", "secretKey": "sk-l...AbCd"}, "created_at": "2025-08-24T10:30:00Z", "enabled": true, "filter_rules": null, "id": "99999999-aaaa-bbbb-cccc-dddddddddddd", "name": "Production Langfuse", "privacy_mode": false, "sampling_rate": 1, "type": "langfuse", "updated_at": "2025-08-24T15:45:00Z", "workspace_id": "550e8400-e29b-41d4-a716-446655440000"}}
"400":
application/json: {"error": {"code": 400, "message": "Invalid request parameters"}}
"401":
@@ -11239,6 +11239,8 @@ examples:
application/json: {"error": {"code": 409, "message": "Resource conflict. Please try again later."}}
"500":
application/json: {"error": {"code": 500, "message": "Internal Server Error"}}
+ "403":
+ application/json: {"error": {"code": 403, "message": "Only management keys can perform this operation"}}
listPresets:
speakeasy-default-list-presets:
parameters:
@@ -11929,3 +11931,4 @@ examples:
"500":
application/json: {"error": {"code": 500, "message": "Internal Server Error"}}
examplesVersion: 1.0.2
+releaseNotes: "## Python SDK Changes:\n* `open_router.byok.list()`: `response.data[].workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.byok.create()`: `response.data.workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.byok.get()`: `response.data.workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.byok.update()`: `response.data.workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.guardrails.list()`: `response.data[].workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.guardrails.create()`: `response.data.workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.guardrails.get()`: `response.data.workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.guardrails.update()`: `response.data.workspace_id` **Changed** (Breaking ⚠️)\n* `open_router.observability.list()`: `response.data[]` **Changed**\n* `open_router.observability.create()`: \n * `request` **Changed**\n * `response.data` **Changed**\n* `open_router.observability.get()`: `response.data` **Changed**\n* `open_router.observability.update()`: \n * `request` **Changed**\n * `response.data` **Changed**\n * `error.status[403]` **Added**\n"
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 7c87ad47..69579dcb 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 1.1.31
+ version: 1.1.32
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 959f13a2..ab27ce43 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -4463,10 +4463,12 @@ components:
example: 0
type: 'integer'
workspace_id:
- description: 'ID of the workspace this credential belongs to.'
+ description: 'The workspace this credential is scoped to, or `null` when it is global — usable across every workspace in the account. A `null` value does not mean the default workspace.'
example: '550e8400-e29b-41d4-a716-446655440000'
format: 'uuid'
- type: 'string'
+ type:
+ - 'string'
+ - 'null'
required:
- 'id'
- 'provider'
@@ -6889,7 +6891,7 @@ components:
provider:
$ref: '#/components/schemas/BYOKProviderSlug'
workspace_id:
- description: 'Optional workspace ID. Defaults to the authenticated entity''s default workspace.'
+ description: 'Optional workspace ID to scope the credential to. When omitted, the credential is created in the account''s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.'
example: '550e8400-e29b-41d4-a716-446655440000'
format: 'uuid'
type: 'string'
@@ -7129,7 +7131,7 @@ components:
reset_interval:
$ref: '#/components/schemas/GuardrailInterval'
workspace_id:
- description: 'The workspace to create the guardrail in. Defaults to the default workspace if not provided.'
+ description: 'The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.'
example: '0df9e665-d932-5740-b2c7-b52af166bc11'
format: 'uuid'
type: 'string'
@@ -7192,6 +7194,21 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ default: false
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ default: false
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ default: false
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
additionalProperties: {}
description: 'Provider-specific configuration. The shape depends on `type` and is validated server-side.'
@@ -7258,6 +7275,9 @@ components:
example:
data:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -9554,6 +9574,9 @@ components:
example:
data:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -9914,9 +9937,11 @@ components:
- 'string'
- 'null'
workspace_id:
- description: 'The workspace ID this guardrail belongs to.'
+ description: 'The workspace this guardrail is scoped to, or `null` for an unscoped legacy guardrail predating workspaces. A `null` value does not mean the default workspace, and does not apply the guardrail across every workspace.'
example: '0df9e665-d932-5740-b2c7-b52af166bc11'
- type: 'string'
+ type:
+ - 'string'
+ - 'null'
required:
- 'id'
- 'name'
@@ -11683,6 +11708,9 @@ components:
example:
data:
- api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -14476,6 +14504,9 @@ components:
ObservabilityArizeDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: 'arize_...AbCd'
baseUrl: 'https://otlp.arize.com'
@@ -14500,6 +14531,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -14574,6 +14617,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -14585,6 +14631,9 @@ components:
ObservabilityBraintrustDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: 'sk-...AbCd'
baseUrl: 'https://api.braintrust.dev'
@@ -14608,6 +14657,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -14677,6 +14738,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -14688,6 +14752,9 @@ components:
ObservabilityClickhouseDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
database: 'analytics'
host: 'https://clickhouse.example.com:8123'
@@ -14713,6 +14780,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
database:
@@ -14791,6 +14870,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -14802,6 +14884,9 @@ components:
ObservabilityDatadogDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: '************...AbCd'
mlApp: 'my-llm-app'
@@ -14825,6 +14910,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -14897,6 +14994,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -14928,6 +15028,9 @@ components:
propertyName: 'type'
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -15058,6 +15161,9 @@ components:
ObservabilityGrafanaDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: 'glc_...AbCd'
baseUrl: 'https://otlp-gateway-prod-us-west-0.grafana.net'
@@ -15081,6 +15187,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -15150,6 +15268,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15161,6 +15282,9 @@ components:
ObservabilityLangfuseDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -15184,6 +15308,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
baseUrl:
@@ -15253,6 +15389,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15264,6 +15403,9 @@ components:
ObservabilityLangsmithDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: 'lsv2_...AbCd'
endpoint: 'https://api.smith.langchain.com'
@@ -15287,6 +15429,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -15360,6 +15514,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15371,6 +15528,9 @@ components:
ObservabilityNewrelicDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
licenseKey: '****...AbCd'
region: 'us'
@@ -15393,6 +15553,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
headers:
@@ -15462,6 +15634,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15473,6 +15648,9 @@ components:
ObservabilityOpikDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: '****...AbCd'
projectName: 'openrouter-prod'
@@ -15496,6 +15674,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -15566,6 +15756,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15577,6 +15770,9 @@ components:
ObservabilityOtelCollectorDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
endpoint: 'https://otel.example.com:4318'
created_at: '2025-08-24T10:30:00Z'
@@ -15598,6 +15794,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
endpoint:
@@ -15659,6 +15867,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15670,6 +15881,9 @@ components:
ObservabilityPosthogDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: 'phc_...AbCd'
endpoint: 'https://us.i.posthog.com'
@@ -15692,6 +15906,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -15757,6 +15983,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15768,6 +15997,9 @@ components:
ObservabilityRampDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: 'rmp_...AbCd'
baseUrl: 'https://api.ramp.com/developer/v1/ai-usage/openrouter'
@@ -15790,6 +16022,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -15856,6 +16100,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15867,6 +16114,9 @@ components:
ObservabilityS3Destination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
accessKeyId: 'AKIA...AbCd'
bucketName: 'openrouter-traces'
@@ -15890,6 +16140,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
accessKeyId:
@@ -15975,6 +16237,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -15986,6 +16251,9 @@ components:
ObservabilitySentryDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
dsn: 'https://abc123@o0.ingest.sentry.io/0'
otlpEndpoint: 'https://o0.ingest.sentry.io/api/0/otlp'
@@ -16008,6 +16276,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
dsn:
@@ -16074,6 +16354,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -16085,6 +16368,9 @@ components:
ObservabilitySnowflakeDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
account: 'xy12345.us-east-1'
token: '****...AbCd'
@@ -16107,6 +16393,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
account:
@@ -16187,6 +16485,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -16198,6 +16499,9 @@ components:
ObservabilityWeaveDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
apiKey: '****...AbCd'
baseUrl: 'https://trace.wandb.ai'
@@ -16222,6 +16526,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
apiKey:
@@ -16295,6 +16611,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -16306,6 +16625,9 @@ components:
ObservabilityWebhookDestination:
example:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
url: 'https://example.com/openrouter-events'
created_at: '2025-08-24T10:30:00Z'
@@ -16327,6 +16649,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'When true, include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'When true, include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'When true, include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
properties:
headers:
@@ -16394,6 +16728,9 @@ components:
- 'name'
- 'enabled'
- 'privacy_mode'
+ - 'broadcast_generation_cost'
+ - 'broadcast_generation_identity'
+ - 'broadcast_generation_request_context'
- 'sampling_rate'
- 'api_key_hashes'
- 'filter_rules'
@@ -24175,6 +24512,18 @@ components:
type:
- 'array'
- 'null'
+ broadcast_generation_cost:
+ description: 'Whether to include cost and billing generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_identity:
+ description: 'Whether to include identity generation metadata.'
+ example: false
+ type: 'boolean'
+ broadcast_generation_request_context:
+ description: 'Whether to include request-context generation metadata.'
+ example: false
+ type: 'boolean'
config:
additionalProperties: {}
description: 'Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value.'
@@ -24209,6 +24558,9 @@ components:
example:
data:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -26883,12 +27235,12 @@ paths:
maximum: 100
minimum: 1
type: 'integer'
- - description: 'Optional workspace ID to filter by. Defaults to the authenticated entity''s default workspace.'
+ - description: 'Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.'
in: 'query'
name: 'workspace_id'
required: false
schema:
- description: 'Optional workspace ID to filter by. Defaults to the authenticated entity''s default workspace.'
+ description: 'Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.'
example: '550e8400-e29b-41d4-a716-446655440000'
format: 'uuid'
type: 'string'
@@ -27070,7 +27422,7 @@ paths:
results: '$.data'
type: 'offsetLimit'
post:
- description: 'Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. Defaults to the authenticated entity''s default workspace; use the `workspace_id` body field to scope to a different workspace. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.'
+ description: 'Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. When `workspace_id` is omitted, the credential is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.'
operationId: 'createBYOKKey'
requestBody:
content:
@@ -33843,6 +34195,9 @@ paths:
example:
data:
- api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -33929,6 +34284,9 @@ paths:
example:
data:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -34081,6 +34439,9 @@ paths:
example:
data:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -34161,6 +34522,9 @@ paths:
example:
data:
api_key_hashes: null
+ broadcast_generation_cost: false
+ broadcast_generation_identity: false
+ broadcast_generation_request_context: false
config:
baseUrl: 'https://us.cloud.langfuse.com'
publicKey: 'pk-l...EfGh'
@@ -34198,6 +34562,12 @@ paths:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: 'Unauthorized - Authentication required or invalid credentials'
+ '403':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ForbiddenResponse'
+ description: 'Privacy settings are locked'
'404':
content:
application/json:
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index f8e55d55..36381fe8 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -2,8 +2,8 @@ speakeasyVersion: 1.787.0
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:1808b9c2cbf76d4f339acc1cee8b4dc13915b6c06bdf9d514e01f1635f8ce76e
- sourceBlobDigest: sha256:a27fe5ccbc198e8c87371f2d63802e8a7ce0a99f88c9099c6bec3c5615886390
+ sourceRevisionDigest: sha256:307eefb0b9cb80c7bcd6e8274233f680bc999188ac10bfd6df393496842ff095
+ sourceBlobDigest: sha256:af592609339a6378d4829dc21a1dfe904782c6c517d33c8ad8941ebf20d5f4fa
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:1808b9c2cbf76d4f339acc1cee8b4dc13915b6c06bdf9d514e01f1635f8ce76e
- sourceBlobDigest: sha256:a27fe5ccbc198e8c87371f2d63802e8a7ce0a99f88c9099c6bec3c5615886390
+ sourceRevisionDigest: sha256:307eefb0b9cb80c7bcd6e8274233f680bc999188ac10bfd6df393496842ff095
+ sourceBlobDigest: sha256:af592609339a6378d4829dc21a1dfe904782c6c517d33c8ad8941ebf20d5f4fa
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:efe4bfc0a359b6ef93324c45343e5c60ab1d6de3005597332f794bb26f7e735e
+ codeSamplesRevisionDigest: sha256:57f73a362ecb31a48b07b3155670b4271701680caa3f627935a36747a7df3dd0
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index 69c3774d..e50de21d 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1099,4 +1099,14 @@ Based on:
### Generated
- [python v1.1.31] .
### Releases
-- [PyPI v1.1.31] https://pypi.org/project/openrouter/1.1.31 - .
\ No newline at end of file
+- [PyPI v1.1.31] https://pypi.org/project/openrouter/1.1.31 - .
+
+## 2026-08-07 17:14:00
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.1.32] .
+### Releases
+- [PyPI v1.1.32] https://pypi.org/project/openrouter/1.1.32 - .
\ No newline at end of file
diff --git a/docs/components/byokkey.mdx b/docs/components/byokkey.mdx
index 151dd839..10b52aa5 100644
--- a/docs/components/byokkey.mdx
+++ b/docs/components/byokkey.mdx
@@ -4,17 +4,17 @@ title: "BYOKKey"
## Fields
-| Field | Type | Required | Description | Example |
-| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
-| `allowed_api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) that may use this credential. `null` means no restriction. | [
"f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943"
] |
-| `allowed_models` | List[*str*] | :heavy_check_mark: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null |
-| `allowed_user_ids` | List[*str*] | :heavy_check_mark: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null |
-| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the credential was created. | 2025-08-24T10:30:00Z |
-| `disabled` | *bool* | :heavy_check_mark: | Whether this credential is currently disabled. | false |
-| `id` | *str* | :heavy_check_mark: | Stable public identifier for this BYOK credential. | 11111111-2222-3333-4444-555555555555 |
-| `is_fallback` | *bool* | :heavy_check_mark: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false |
-| `label` | *str* | :heavy_check_mark: | Short masked snippet of the key (e.g. the first/last few characters) used to identify it in the UI. | sk-...AbCd |
-| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key |
-| `provider` | [components.BYOKProviderSlug](../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
-| `sort_order` | *int* | :heavy_check_mark: | Position within the provider — credentials are tried in ascending sort order. | 0 |
-| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this credential belongs to. | 550e8400-e29b-41d4-a716-446655440000 |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `allowed_api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) that may use this credential. `null` means no restriction. | [
"f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943"
] |
+| `allowed_models` | List[*str*] | :heavy_check_mark: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null |
+| `allowed_user_ids` | List[*str*] | :heavy_check_mark: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null |
+| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the credential was created. | 2025-08-24T10:30:00Z |
+| `disabled` | *bool* | :heavy_check_mark: | Whether this credential is currently disabled. | false |
+| `id` | *str* | :heavy_check_mark: | Stable public identifier for this BYOK credential. | 11111111-2222-3333-4444-555555555555 |
+| `is_fallback` | *bool* | :heavy_check_mark: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false |
+| `label` | *str* | :heavy_check_mark: | Short masked snippet of the key (e.g. the first/last few characters) used to identify it in the UI. | sk-...AbCd |
+| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key |
+| `provider` | [components.BYOKProviderSlug](../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
+| `sort_order` | *int* | :heavy_check_mark: | Position within the provider — credentials are tried in ascending sort order. | 0 |
+| `workspace_id` | *Nullable[str]* | :heavy_check_mark: | The workspace this credential is scoped to, or `null` when it is global — usable across every workspace in the account. A `null` value does not mean the default workspace. | 550e8400-e29b-41d4-a716-446655440000 |
\ No newline at end of file
diff --git a/docs/components/createbyokkeyrequest.mdx b/docs/components/createbyokkeyrequest.mdx
index 3eaa154f..1bb9f670 100644
--- a/docs/components/createbyokkeyrequest.mdx
+++ b/docs/components/createbyokkeyrequest.mdx
@@ -4,13 +4,13 @@ title: "CreateBYOKKeyRequest"
## Fields
-| Field | Type | Required | Description | Example |
-| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
-| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null |
-| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null |
-| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential should be created in a disabled state. | false |
-| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false |
-| `key` | *str* | :heavy_check_mark: | The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. | sk-proj-abc123... |
-| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key |
-| `provider` | [components.BYOKProviderSlug](../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
-| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null |
+| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null |
+| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential should be created in a disabled state. | false |
+| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false |
+| `key` | *str* | :heavy_check_mark: | The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. | sk-proj-abc123... |
+| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key |
+| `provider` | [components.BYOKProviderSlug](../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
+| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to scope the credential to. When omitted, the credential is created in the account's default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. | 550e8400-e29b-41d4-a716-446655440000 |
\ No newline at end of file
diff --git a/docs/components/createguardrailrequest.mdx b/docs/components/createguardrailrequest.mdx
index f78f3b4e..d3465e8f 100644
--- a/docs/components/createguardrailrequest.mdx
+++ b/docs/components/createguardrailrequest.mdx
@@ -26,4 +26,4 @@ title: "CreateGuardrailRequest"
| `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | Spending limit in USD | 50 |
| `name` | *str* | :heavy_check_mark: | Name for the new guardrail | My New Guardrail |
| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly |
-| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the guardrail in. Defaults to the default workspace if not provided. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
\ No newline at end of file
+| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
\ No newline at end of file
diff --git a/docs/components/createobservabilitydestinationrequest.mdx b/docs/components/createobservabilitydestinationrequest.mdx
index abe93cf0..d5091906 100644
--- a/docs/components/createobservabilitydestinationrequest.mdx
+++ b/docs/components/createobservabilitydestinationrequest.mdx
@@ -7,6 +7,9 @@ title: "CreateObservabilityDestinationRequest"
| Field | Type | Required | Description | Example |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided. | null |
+| `broadcast_generation_cost` | *Optional[bool]* | :heavy_minus_sign: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *Optional[bool]* | :heavy_minus_sign: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *Optional[bool]* | :heavy_minus_sign: | When true, include request-context generation metadata. | false |
| `config` | Dict[str, *Any*] | :heavy_check_mark: | Provider-specific configuration. The shape depends on `type` and is validated server-side. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} |
| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this destination should be enabled immediately. | true |
| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfigNullable]](../components/observabilityfilterrulesconfignullable.mdx) | :heavy_minus_sign: | Optional structured filter rules controlling which events are forwarded. | null |
diff --git a/docs/components/createobservabilitydestinationresponse.mdx b/docs/components/createobservabilitydestinationresponse.mdx
index a6654f09..11ab48b3 100644
--- a/docs/components/createobservabilitydestinationresponse.mdx
+++ b/docs/components/createobservabilitydestinationresponse.mdx
@@ -4,6 +4,6 @@ title: "CreateObservabilityDestinationResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"broadcast_generation_cost": false,
"broadcast_generation_identity": false,
"broadcast_generation_request_context": false,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} |
\ No newline at end of file
diff --git a/docs/components/getobservabilitydestinationresponse.mdx b/docs/components/getobservabilitydestinationresponse.mdx
index efce02e6..15510e98 100644
--- a/docs/components/getobservabilitydestinationresponse.mdx
+++ b/docs/components/getobservabilitydestinationresponse.mdx
@@ -4,6 +4,6 @@ title: "GetObservabilityDestinationResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"broadcast_generation_cost": false,
"broadcast_generation_identity": false,
"broadcast_generation_request_context": false,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} |
\ No newline at end of file
diff --git a/docs/components/guardrail.mdx b/docs/components/guardrail.mdx
index 49929bdf..7f703db3 100644
--- a/docs/components/guardrail.mdx
+++ b/docs/components/guardrail.mdx
@@ -29,4 +29,4 @@ title: "Guardrail"
| `name` | *str* | :heavy_check_mark: | Name of the guardrail | Production Guardrail |
| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly |
| `updated_at` | *OptionalNullable[str]* | :heavy_minus_sign: | ISO 8601 timestamp of when the guardrail was last updated | 2025-08-24T15:45:00Z |
-| `workspace_id` | *str* | :heavy_check_mark: | The workspace ID this guardrail belongs to. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
\ No newline at end of file
+| `workspace_id` | *Nullable[str]* | :heavy_check_mark: | The workspace this guardrail is scoped to, or `null` for an unscoped legacy guardrail predating workspaces. A `null` value does not mean the default workspace, and does not apply the guardrail across every workspace. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
\ No newline at end of file
diff --git a/docs/components/observabilityarizedestination.mdx b/docs/components/observabilityarizedestination.mdx
index 9eefceee..f7dfaeeb 100644
--- a/docs/components/observabilityarizedestination.mdx
+++ b/docs/components/observabilityarizedestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityArizeDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityArizeDestinationConfig](../components/observabilityarizedestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitybraintrustdestination.mdx b/docs/components/observabilitybraintrustdestination.mdx
index bd21dcc2..f569b94a 100644
--- a/docs/components/observabilitybraintrustdestination.mdx
+++ b/docs/components/observabilitybraintrustdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityBraintrustDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityBraintrustDestinationConfig](../components/observabilitybraintrustdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilityclickhousedestination.mdx b/docs/components/observabilityclickhousedestination.mdx
index 1791dbf3..897e5e38 100644
--- a/docs/components/observabilityclickhousedestination.mdx
+++ b/docs/components/observabilityclickhousedestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityClickhouseDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityClickhouseDestinationConfig](../components/observabilityclickhousedestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitydatadogdestination.mdx b/docs/components/observabilitydatadogdestination.mdx
index c3a06316..1df35546 100644
--- a/docs/components/observabilitydatadogdestination.mdx
+++ b/docs/components/observabilitydatadogdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityDatadogDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityDatadogDestinationConfig](../components/observabilitydatadogdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitygrafanadestination.mdx b/docs/components/observabilitygrafanadestination.mdx
index f0c1cfd9..f1a902be 100644
--- a/docs/components/observabilitygrafanadestination.mdx
+++ b/docs/components/observabilitygrafanadestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityGrafanaDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityGrafanaDestinationConfig](../components/observabilitygrafanadestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitylangfusedestination.mdx b/docs/components/observabilitylangfusedestination.mdx
index 5364c633..47c89946 100644
--- a/docs/components/observabilitylangfusedestination.mdx
+++ b/docs/components/observabilitylangfusedestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityLangfuseDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityLangfuseDestinationConfig](../components/observabilitylangfusedestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitylangsmithdestination.mdx b/docs/components/observabilitylangsmithdestination.mdx
index 20e1a3ec..0d5a6498 100644
--- a/docs/components/observabilitylangsmithdestination.mdx
+++ b/docs/components/observabilitylangsmithdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityLangsmithDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityLangsmithDestinationConfig](../components/observabilitylangsmithdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitynewrelicdestination.mdx b/docs/components/observabilitynewrelicdestination.mdx
index b04a7f80..7fb48f53 100644
--- a/docs/components/observabilitynewrelicdestination.mdx
+++ b/docs/components/observabilitynewrelicdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityNewrelicDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityNewrelicDestinationConfig](../components/observabilitynewrelicdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilityopikdestination.mdx b/docs/components/observabilityopikdestination.mdx
index 82ab82d0..559de2d1 100644
--- a/docs/components/observabilityopikdestination.mdx
+++ b/docs/components/observabilityopikdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityOpikDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityOpikDestinationConfig](../components/observabilityopikdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilityotelcollectordestination.mdx b/docs/components/observabilityotelcollectordestination.mdx
index 43f3a512..bd1a83b8 100644
--- a/docs/components/observabilityotelcollectordestination.mdx
+++ b/docs/components/observabilityotelcollectordestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityOtelCollectorDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityOtelCollectorDestinationConfig](../components/observabilityotelcollectordestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilityposthogdestination.mdx b/docs/components/observabilityposthogdestination.mdx
index e6b8ee1b..7e0644b0 100644
--- a/docs/components/observabilityposthogdestination.mdx
+++ b/docs/components/observabilityposthogdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityPosthogDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityPosthogDestinationConfig](../components/observabilityposthogdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilityrampdestination.mdx b/docs/components/observabilityrampdestination.mdx
index 78218365..fbc07a12 100644
--- a/docs/components/observabilityrampdestination.mdx
+++ b/docs/components/observabilityrampdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityRampDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityRampDestinationConfig](../components/observabilityrampdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitys3destination.mdx b/docs/components/observabilitys3destination.mdx
index 14ec127b..9fc291ed 100644
--- a/docs/components/observabilitys3destination.mdx
+++ b/docs/components/observabilitys3destination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityS3Destination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityS3DestinationConfig](../components/observabilitys3destinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitysentrydestination.mdx b/docs/components/observabilitysentrydestination.mdx
index 6f37f7dc..029bbf4a 100644
--- a/docs/components/observabilitysentrydestination.mdx
+++ b/docs/components/observabilitysentrydestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilitySentryDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilitySentryDestinationConfig](../components/observabilitysentrydestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitysnowflakedestination.mdx b/docs/components/observabilitysnowflakedestination.mdx
index 0cc7f73d..52ae7536 100644
--- a/docs/components/observabilitysnowflakedestination.mdx
+++ b/docs/components/observabilitysnowflakedestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilitySnowflakeDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilitySnowflakeDestinationConfig](../components/observabilitysnowflakedestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilityweavedestination.mdx b/docs/components/observabilityweavedestination.mdx
index 4f9d6b16..be84eb7b 100644
--- a/docs/components/observabilityweavedestination.mdx
+++ b/docs/components/observabilityweavedestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityWeaveDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityWeaveDestinationConfig](../components/observabilityweavedestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/observabilitywebhookdestination.mdx b/docs/components/observabilitywebhookdestination.mdx
index 6be7531c..dce0e333 100644
--- a/docs/components/observabilitywebhookdestination.mdx
+++ b/docs/components/observabilitywebhookdestination.mdx
@@ -7,6 +7,9 @@ title: "ObservabilityWebhookDestination"
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null |
+| `broadcast_generation_cost` | *bool* | :heavy_check_mark: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *bool* | :heavy_check_mark: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *bool* | :heavy_check_mark: | When true, include request-context generation metadata. | false |
| `config` | [components.ObservabilityWebhookDestinationConfig](../components/observabilitywebhookdestinationconfig.mdx) | :heavy_check_mark: | N/A | |
| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z |
| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true |
diff --git a/docs/components/updateobservabilitydestinationrequest.mdx b/docs/components/updateobservabilitydestinationrequest.mdx
index 56bffb4e..3ec5c281 100644
--- a/docs/components/updateobservabilitydestinationrequest.mdx
+++ b/docs/components/updateobservabilitydestinationrequest.mdx
@@ -7,6 +7,9 @@ title: "UpdateObservabilityDestinationRequest"
| Field | Type | Required | Description | Example |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided. | null |
+| `broadcast_generation_cost` | *Optional[bool]* | :heavy_minus_sign: | Whether to include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *Optional[bool]* | :heavy_minus_sign: | Whether to include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *Optional[bool]* | :heavy_minus_sign: | Whether to include request-context generation metadata. | false |
| `config` | Dict[str, *Any*] | :heavy_minus_sign: | Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} |
| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the destination is enabled. | true |
| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfigNullable]](../components/observabilityfilterrulesconfignullable.mdx) | :heavy_minus_sign: | N/A | null |
diff --git a/docs/components/updateobservabilitydestinationresponse.mdx b/docs/components/updateobservabilitydestinationresponse.mdx
index c7aba437..d3f4360e 100644
--- a/docs/components/updateobservabilitydestinationresponse.mdx
+++ b/docs/components/updateobservabilitydestinationresponse.mdx
@@ -4,6 +4,6 @@ title: "UpdateObservabilityDestinationResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"broadcast_generation_cost": false,
"broadcast_generation_identity": false,
"broadcast_generation_request_context": false,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} |
\ No newline at end of file
diff --git a/docs/operations/listbyokkeysrequest.mdx b/docs/operations/listbyokkeysrequest.mdx
index 178868c3..f55e2c02 100644
--- a/docs/operations/listbyokkeysrequest.mdx
+++ b/docs/operations/listbyokkeysrequest.mdx
@@ -4,12 +4,12 @@ title: "ListBYOKKeysRequest"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `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.
This is used to track API usage per application.
| |
-| `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.
| |
-| `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.
| |
-| `offset` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 |
-| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 |
-| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 |
-| `provider` | [Optional[operations.Provider]](../operations/provider.mdx) | :heavy_minus_sign: | Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `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.
This is used to track API usage per application.
| |
+| `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.
| |
+| `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.
| |
+| `offset` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 |
+| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 |
+| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. | 550e8400-e29b-41d4-a716-446655440000 |
+| `provider` | [Optional[operations.Provider]](../operations/provider.mdx) | :heavy_minus_sign: | Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
\ No newline at end of file
diff --git a/docs/operations/listobservabilitydestinationsresponse.mdx b/docs/operations/listobservabilitydestinationsresponse.mdx
index da49e5fe..0f02272e 100644
--- a/docs/operations/listobservabilitydestinationsresponse.mdx
+++ b/docs/operations/listobservabilitydestinationsresponse.mdx
@@ -4,6 +4,6 @@ title: "ListObservabilityDestinationsResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `result` | [components.ListObservabilityDestinationsResponse](../components/listobservabilitydestinationsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
}
],
"total_count": 1
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.ListObservabilityDestinationsResponse](../components/listobservabilitydestinationsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"api_key_hashes": null,
"broadcast_generation_cost": false,
"broadcast_generation_identity": false,
"broadcast_generation_request_context": false,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
}
],
"total_count": 1
} |
\ No newline at end of file
diff --git a/docs/sdks/byok/README.mdx b/docs/sdks/byok/README.mdx
index dbbd7260..d86220a2 100644
--- a/docs/sdks/byok/README.mdx
+++ b/docs/sdks/byok/README.mdx
@@ -44,16 +44,16 @@ with OpenRouter(
### Parameters
-| Parameter | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `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.
This is used to track API usage per application.
| |
-| `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.
| |
-| `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.
| |
-| `offset` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 |
-| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 |
-| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 |
-| `provider` | [Optional[operations.Provider]](../../operations/provider.mdx) | :heavy_minus_sign: | Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
+| Parameter | Type | Required | Description | Example |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `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.
This is used to track API usage per application.
| |
+| `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.
| |
+| `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.
| |
+| `offset` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 |
+| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 |
+| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. | 550e8400-e29b-41d4-a716-446655440000 |
+| `provider` | [Optional[operations.Provider]](../../operations/provider.mdx) | :heavy_minus_sign: | Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
@@ -70,7 +70,7 @@ with OpenRouter(
## create
-Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.
+Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. When `workspace_id` is omitted, the credential is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.
### Example Usage
@@ -95,20 +95,20 @@ with OpenRouter(
### Parameters
-| Parameter | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `key` | *str* | :heavy_check_mark: | The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. | sk-proj-abc123... |
-| `provider` | [components.BYOKProviderSlug](../../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
-| `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.
This is used to track API usage per application.
| |
-| `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.
| |
-| `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.
| |
-| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null |
-| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null |
-| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential should be created in a disabled state. | false |
-| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false |
-| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key |
-| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
+| Parameter | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `key` | *str* | :heavy_check_mark: | The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. | sk-proj-abc123... |
+| `provider` | [components.BYOKProviderSlug](../../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai |
+| `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.
This is used to track API usage per application.
| |
+| `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.
| |
+| `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.
| |
+| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null |
+| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null |
+| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential should be created in a disabled state. | false |
+| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false |
+| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key |
+| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to scope the credential to. When omitted, the credential is created in the account's default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. | 550e8400-e29b-41d4-a716-446655440000 |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
diff --git a/docs/sdks/guardrails/README.mdx b/docs/sdks/guardrails/README.mdx
index 3c7827be..99ea282f 100644
--- a/docs/sdks/guardrails/README.mdx
+++ b/docs/sdks/guardrails/README.mdx
@@ -131,7 +131,7 @@ with OpenRouter(
| `include_byok_in_budgets` | *Optional[bool]* | :heavy_minus_sign: | Whether BYOK (bring-your-own-key) inference spend counts toward this guardrail's limit_usd, in addition to OpenRouter credit spend. Defaults to false. | false |
| `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | Spending limit in USD | 50 |
| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly |
-| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the guardrail in. Defaults to the default workspace if not provided. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
+| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
diff --git a/docs/sdks/observability/README.mdx b/docs/sdks/observability/README.mdx
index 3a4d24cc..3884960e 100644
--- a/docs/sdks/observability/README.mdx
+++ b/docs/sdks/observability/README.mdx
@@ -89,7 +89,7 @@ with OpenRouter(
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd",
- }, name="Production Langfuse", type_="langfuse", enabled=True, privacy_mode=False)
+ }, name="Production Langfuse", type_="langfuse", broadcast_generation_cost=False, broadcast_generation_identity=False, broadcast_generation_request_context=False, enabled=True, privacy_mode=False)
# Handle response
print(res)
@@ -107,6 +107,9 @@ with OpenRouter(
| `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.
| |
| `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.
| |
| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided. | null |
+| `broadcast_generation_cost` | *Optional[bool]* | :heavy_minus_sign: | When true, include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *Optional[bool]* | :heavy_minus_sign: | When true, include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *Optional[bool]* | :heavy_minus_sign: | When true, include request-context generation metadata. | false |
| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this destination should be enabled immediately. | true |
| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfigNullable]](../../components/observabilityfilterrulesconfignullable.mdx) | :heavy_minus_sign: | Optional structured filter rules controlling which events are forwarded. | null |
| `privacy_mode` | *Optional[bool]* | :heavy_minus_sign: | When true, request/response bodies are not forwarded — only metadata. | false |
@@ -259,6 +262,9 @@ with OpenRouter(
| `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.
| |
| `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.
| |
| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided. | null |
+| `broadcast_generation_cost` | *Optional[bool]* | :heavy_minus_sign: | Whether to include cost and billing generation metadata. | false |
+| `broadcast_generation_identity` | *Optional[bool]* | :heavy_minus_sign: | Whether to include identity generation metadata. | false |
+| `broadcast_generation_request_context` | *Optional[bool]* | :heavy_minus_sign: | Whether to include request-context generation metadata. | false |
| `config` | Dict[str, *Any*] | :heavy_minus_sign: | Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} |
| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the destination is enabled. | true |
| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfigNullable]](../../components/observabilityfilterrulesconfignullable.mdx) | :heavy_minus_sign: | N/A | null |
@@ -277,6 +283,7 @@ with OpenRouter(
| ---------------------------------- | ---------------------------------- | ---------------------------------- |
| 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 |
diff --git a/pyproject.toml b/pyproject.toml
index 6c3b8a8a..049afe5a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "1.1.31"
+version = "1.1.32"
description = "Official Python Client SDK for OpenRouter."
authors = [{ name = "OpenRouter" },]
readme = "README-PYPI.md"
diff --git a/src/openrouter/_version.py b/src/openrouter/_version.py
index 3cc5f0ce..00ac74e9 100644
--- a/src/openrouter/_version.py
+++ b/src/openrouter/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
-__version__: str = "1.1.31"
+__version__: str = "1.1.32"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 1.1.31 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 1.1.32 2.914.0 1.0.0 openrouter"
try:
if __package__ is not None:
diff --git a/src/openrouter/byok.py b/src/openrouter/byok.py
index 63fab85e..627c6084 100644
--- a/src/openrouter/byok.py
+++ b/src/openrouter/byok.py
@@ -41,7 +41,7 @@ def list(
:param offset: Number of records to skip for pagination
:param limit: Maximum number of records to return (max 100)
- :param workspace_id: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace.
+ :param workspace_id: Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.
:param provider: Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`).
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -212,7 +212,7 @@ async def list_async(
:param offset: Number of records to skip for pagination
:param limit: Maximum number of records to return (max 100)
- :param workspace_id: Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace.
+ :param workspace_id: Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.
:param provider: Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`).
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -379,7 +379,7 @@ def create(
) -> components.CreateBYOKKeyResponse:
r"""Create a BYOK provider credential
- Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.
+ Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. When `workspace_id` is omitted, the credential is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.
:param key: The raw provider API key or credential. This value is encrypted at rest and never returned in API responses.
:param provider: The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`).
@@ -395,7 +395,7 @@ def create(
:param disabled: Whether this credential should be created in a disabled state.
:param is_fallback: Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried.
:param name: Optional human-readable name for the credential.
- :param workspace_id: Optional workspace ID. Defaults to the authenticated entity's default workspace.
+ :param workspace_id: Optional workspace ID to scope the credential to. When omitted, the credential is created in the account's default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -546,7 +546,7 @@ async def create_async(
) -> components.CreateBYOKKeyResponse:
r"""Create a BYOK provider credential
- Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.
+ Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. When `workspace_id` is omitted, the credential is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required.
:param key: The raw provider API key or credential. This value is encrypted at rest and never returned in API responses.
:param provider: The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`).
@@ -562,7 +562,7 @@ async def create_async(
:param disabled: Whether this credential should be created in a disabled state.
:param is_fallback: Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried.
:param name: Optional human-readable name for the credential.
- :param workspace_id: Optional workspace ID. Defaults to the authenticated entity's default workspace.
+ :param workspace_id: Optional workspace ID to scope the credential to. When omitted, the credential is created in the account's default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
diff --git a/src/openrouter/components/byokkey.py b/src/openrouter/components/byokkey.py
index 47ef267b..c6788cf3 100644
--- a/src/openrouter/components/byokkey.py
+++ b/src/openrouter/components/byokkey.py
@@ -35,8 +35,8 @@ class BYOKKeyTypedDict(TypedDict):
r"""The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`)."""
sort_order: int
r"""Position within the provider — credentials are tried in ascending sort order."""
- workspace_id: str
- r"""ID of the workspace this credential belongs to."""
+ workspace_id: Nullable[str]
+ r"""The workspace this credential is scoped to, or `null` when it is global — usable across every workspace in the account. A `null` value does not mean the default workspace."""
name: NotRequired[Nullable[str]]
r"""Optional human-readable name for the credential."""
@@ -72,8 +72,8 @@ class BYOKKey(BaseModel):
sort_order: int
r"""Position within the provider — credentials are tried in ascending sort order."""
- workspace_id: str
- r"""ID of the workspace this credential belongs to."""
+ workspace_id: Nullable[str]
+ r"""The workspace this credential is scoped to, or `null` when it is global — usable across every workspace in the account. A `null` value does not mean the default workspace."""
name: OptionalNullable[str] = UNSET
r"""Optional human-readable name for the credential."""
@@ -82,7 +82,13 @@ class BYOKKey(BaseModel):
def serialize_model(self, handler):
optional_fields = set(["name"])
nullable_fields = set(
- ["allowed_api_key_hashes", "allowed_models", "allowed_user_ids", "name"]
+ [
+ "allowed_api_key_hashes",
+ "allowed_models",
+ "allowed_user_ids",
+ "name",
+ "workspace_id",
+ ]
)
serialized = handler(self)
m = {}
diff --git a/src/openrouter/components/createbyokkeyrequest.py b/src/openrouter/components/createbyokkeyrequest.py
index 4202c110..d79f38d1 100644
--- a/src/openrouter/components/createbyokkeyrequest.py
+++ b/src/openrouter/components/createbyokkeyrequest.py
@@ -30,7 +30,7 @@ class CreateBYOKKeyRequestTypedDict(TypedDict):
name: NotRequired[Nullable[str]]
r"""Optional human-readable name for the credential."""
workspace_id: NotRequired[str]
- r"""Optional workspace ID. Defaults to the authenticated entity's default workspace."""
+ r"""Optional workspace ID to scope the credential to. When omitted, the credential is created in the account's default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly."""
class CreateBYOKKeyRequest(BaseModel):
@@ -56,7 +56,7 @@ class CreateBYOKKeyRequest(BaseModel):
r"""Optional human-readable name for the credential."""
workspace_id: Optional[str] = None
- r"""Optional workspace ID. Defaults to the authenticated entity's default workspace."""
+ r"""Optional workspace ID to scope the credential to. When omitted, the credential is created in the account's default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/src/openrouter/components/createguardrailrequest.py b/src/openrouter/components/createguardrailrequest.py
index d79e08fb..3a11053d 100644
--- a/src/openrouter/components/createguardrailrequest.py
+++ b/src/openrouter/components/createguardrailrequest.py
@@ -64,7 +64,7 @@ class CreateGuardrailRequestTypedDict(TypedDict):
reset_interval: NotRequired[Nullable[GuardrailInterval]]
r"""Interval at which the limit resets (daily, weekly, monthly)"""
workspace_id: NotRequired[str]
- r"""The workspace to create the guardrail in. Defaults to the default workspace if not provided."""
+ r"""The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly."""
class CreateGuardrailRequest(BaseModel):
@@ -136,7 +136,7 @@ class CreateGuardrailRequest(BaseModel):
r"""Interval at which the limit resets (daily, weekly, monthly)"""
workspace_id: Optional[str] = None
- r"""The workspace to create the guardrail in. Defaults to the default workspace if not provided."""
+ r"""The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/src/openrouter/components/createobservabilitydestinationrequest.py b/src/openrouter/components/createobservabilitydestinationrequest.py
index ad54eb7a..07258838 100644
--- a/src/openrouter/components/createobservabilitydestinationrequest.py
+++ b/src/openrouter/components/createobservabilitydestinationrequest.py
@@ -52,6 +52,12 @@ class CreateObservabilityDestinationRequestTypedDict(TypedDict):
r"""The destination type. Only stable destination types are accepted."""
api_key_hashes: NotRequired[Nullable[List[str]]]
r"""Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided."""
+ broadcast_generation_cost: NotRequired[bool]
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: NotRequired[bool]
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: NotRequired[bool]
+ r"""When true, include request-context generation metadata."""
enabled: NotRequired[bool]
r"""Whether this destination should be enabled immediately."""
filter_rules: NotRequired[Nullable[ObservabilityFilterRulesConfigNullableTypedDict]]
@@ -77,6 +83,15 @@ class CreateObservabilityDestinationRequest(BaseModel):
api_key_hashes: OptionalNullable[List[str]] = UNSET
r"""Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided."""
+ broadcast_generation_cost: Optional[bool] = False
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: Optional[bool] = False
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: Optional[bool] = False
+ r"""When true, include request-context generation metadata."""
+
enabled: Optional[bool] = True
r"""Whether this destination should be enabled immediately."""
@@ -97,6 +112,9 @@ def serialize_model(self, handler):
optional_fields = set(
[
"api_key_hashes",
+ "broadcast_generation_cost",
+ "broadcast_generation_identity",
+ "broadcast_generation_request_context",
"enabled",
"filter_rules",
"privacy_mode",
diff --git a/src/openrouter/components/guardrail.py b/src/openrouter/components/guardrail.py
index 010fdd40..6c518ce6 100644
--- a/src/openrouter/components/guardrail.py
+++ b/src/openrouter/components/guardrail.py
@@ -29,8 +29,8 @@ class GuardrailTypedDict(TypedDict):
r"""Whether BYOK (bring-your-own-key) inference spend counts toward this guardrail's limit_usd, in addition to OpenRouter credit spend."""
name: str
r"""Name of the guardrail"""
- workspace_id: str
- r"""The workspace ID this guardrail belongs to."""
+ workspace_id: Nullable[str]
+ r"""The workspace this guardrail is scoped to, or `null` for an unscoped legacy guardrail predating workspaces. A `null` value does not mean the default workspace, and does not apply the guardrail across every workspace."""
allowed_models: NotRequired[Nullable[List[str]]]
r"""Array of model canonical_slugs (immutable identifiers)"""
allowed_providers: NotRequired[Nullable[List[str]]]
@@ -86,8 +86,8 @@ class Guardrail(BaseModel):
name: str
r"""Name of the guardrail"""
- workspace_id: str
- r"""The workspace ID this guardrail belongs to."""
+ workspace_id: Nullable[str]
+ r"""The workspace this guardrail is scoped to, or `null` for an unscoped legacy guardrail predating workspaces. A `null` value does not mean the default workspace, and does not apply the guardrail across every workspace."""
allowed_models: OptionalNullable[List[str]] = UNSET
r"""Array of model canonical_slugs (immutable identifiers)"""
@@ -197,6 +197,7 @@ def serialize_model(self, handler):
"limit_usd",
"reset_interval",
"updated_at",
+ "workspace_id",
]
)
serialized = handler(self)
diff --git a/src/openrouter/components/observabilityarizedestination.py b/src/openrouter/components/observabilityarizedestination.py
index d1fb6054..c5abf260 100644
--- a/src/openrouter/components/observabilityarizedestination.py
+++ b/src/openrouter/components/observabilityarizedestination.py
@@ -60,6 +60,12 @@ def serialize_model(self, handler):
class ObservabilityArizeDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityArizeDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -86,6 +92,15 @@ class ObservabilityArizeDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityArizeDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitybraintrustdestination.py b/src/openrouter/components/observabilitybraintrustdestination.py
index 37016dc2..8d7def69 100644
--- a/src/openrouter/components/observabilitybraintrustdestination.py
+++ b/src/openrouter/components/observabilitybraintrustdestination.py
@@ -55,6 +55,12 @@ def serialize_model(self, handler):
class ObservabilityBraintrustDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityBraintrustDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -81,6 +87,15 @@ class ObservabilityBraintrustDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityBraintrustDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilityclickhousedestination.py b/src/openrouter/components/observabilityclickhousedestination.py
index 62812008..61d6beb8 100644
--- a/src/openrouter/components/observabilityclickhousedestination.py
+++ b/src/openrouter/components/observabilityclickhousedestination.py
@@ -60,6 +60,12 @@ def serialize_model(self, handler):
class ObservabilityClickhouseDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityClickhouseDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -86,6 +92,15 @@ class ObservabilityClickhouseDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityClickhouseDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitydatadogdestination.py b/src/openrouter/components/observabilitydatadogdestination.py
index 40cafb2e..b2f26edb 100644
--- a/src/openrouter/components/observabilitydatadogdestination.py
+++ b/src/openrouter/components/observabilitydatadogdestination.py
@@ -59,6 +59,12 @@ def serialize_model(self, handler):
class ObservabilityDatadogDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityDatadogDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -85,6 +91,15 @@ class ObservabilityDatadogDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityDatadogDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitygrafanadestination.py b/src/openrouter/components/observabilitygrafanadestination.py
index 677a4cf6..c132c9aa 100644
--- a/src/openrouter/components/observabilitygrafanadestination.py
+++ b/src/openrouter/components/observabilitygrafanadestination.py
@@ -55,6 +55,12 @@ def serialize_model(self, handler):
class ObservabilityGrafanaDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityGrafanaDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -81,6 +87,15 @@ class ObservabilityGrafanaDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityGrafanaDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitylangfusedestination.py b/src/openrouter/components/observabilitylangfusedestination.py
index 961d4245..1737ce96 100644
--- a/src/openrouter/components/observabilitylangfusedestination.py
+++ b/src/openrouter/components/observabilitylangfusedestination.py
@@ -55,6 +55,12 @@ def serialize_model(self, handler):
class ObservabilityLangfuseDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityLangfuseDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -81,6 +87,15 @@ class ObservabilityLangfuseDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityLangfuseDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitylangsmithdestination.py b/src/openrouter/components/observabilitylangsmithdestination.py
index 84d1b830..e273ba1c 100644
--- a/src/openrouter/components/observabilitylangsmithdestination.py
+++ b/src/openrouter/components/observabilitylangsmithdestination.py
@@ -60,6 +60,12 @@ def serialize_model(self, handler):
class ObservabilityLangsmithDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityLangsmithDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -86,6 +92,15 @@ class ObservabilityLangsmithDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityLangsmithDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitynewrelicdestination.py b/src/openrouter/components/observabilitynewrelicdestination.py
index 3cae22bc..e4231569 100644
--- a/src/openrouter/components/observabilitynewrelicdestination.py
+++ b/src/openrouter/components/observabilitynewrelicdestination.py
@@ -59,6 +59,12 @@ def serialize_model(self, handler):
class ObservabilityNewrelicDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityNewrelicDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -85,6 +91,15 @@ class ObservabilityNewrelicDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityNewrelicDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilityopikdestination.py b/src/openrouter/components/observabilityopikdestination.py
index 1be42b17..abf3edd2 100644
--- a/src/openrouter/components/observabilityopikdestination.py
+++ b/src/openrouter/components/observabilityopikdestination.py
@@ -53,6 +53,12 @@ def serialize_model(self, handler):
class ObservabilityOpikDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityOpikDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -79,6 +85,15 @@ class ObservabilityOpikDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityOpikDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilityotelcollectordestination.py b/src/openrouter/components/observabilityotelcollectordestination.py
index 00e7086f..4a8a8a90 100644
--- a/src/openrouter/components/observabilityotelcollectordestination.py
+++ b/src/openrouter/components/observabilityotelcollectordestination.py
@@ -46,6 +46,12 @@ def serialize_model(self, handler):
class ObservabilityOtelCollectorDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityOtelCollectorDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -72,6 +78,15 @@ class ObservabilityOtelCollectorDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityOtelCollectorDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilityposthogdestination.py b/src/openrouter/components/observabilityposthogdestination.py
index 3062e974..5cfe0565 100644
--- a/src/openrouter/components/observabilityposthogdestination.py
+++ b/src/openrouter/components/observabilityposthogdestination.py
@@ -50,6 +50,12 @@ def serialize_model(self, handler):
class ObservabilityPosthogDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityPosthogDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -76,6 +82,15 @@ class ObservabilityPosthogDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityPosthogDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilityrampdestination.py b/src/openrouter/components/observabilityrampdestination.py
index dd28ccf7..78df4a41 100644
--- a/src/openrouter/components/observabilityrampdestination.py
+++ b/src/openrouter/components/observabilityrampdestination.py
@@ -54,6 +54,12 @@ def serialize_model(self, handler):
class ObservabilityRampDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityRampDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -80,6 +86,15 @@ class ObservabilityRampDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityRampDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitys3destination.py b/src/openrouter/components/observabilitys3destination.py
index 5c400317..f3f839f4 100644
--- a/src/openrouter/components/observabilitys3destination.py
+++ b/src/openrouter/components/observabilitys3destination.py
@@ -76,6 +76,12 @@ def serialize_model(self, handler):
class ObservabilityS3DestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityS3DestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -102,6 +108,15 @@ class ObservabilityS3Destination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityS3DestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitysentrydestination.py b/src/openrouter/components/observabilitysentrydestination.py
index 2c1a346e..77c13593 100644
--- a/src/openrouter/components/observabilitysentrydestination.py
+++ b/src/openrouter/components/observabilitysentrydestination.py
@@ -50,6 +50,12 @@ def serialize_model(self, handler):
class ObservabilitySentryDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilitySentryDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -76,6 +82,15 @@ class ObservabilitySentryDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilitySentryDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitysnowflakedestination.py b/src/openrouter/components/observabilitysnowflakedestination.py
index 9dd853c8..077a345f 100644
--- a/src/openrouter/components/observabilitysnowflakedestination.py
+++ b/src/openrouter/components/observabilitysnowflakedestination.py
@@ -62,6 +62,12 @@ def serialize_model(self, handler):
class ObservabilitySnowflakeDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilitySnowflakeDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -88,6 +94,15 @@ class ObservabilitySnowflakeDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilitySnowflakeDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilityweavedestination.py b/src/openrouter/components/observabilityweavedestination.py
index 81e7305b..1fd8e8dd 100644
--- a/src/openrouter/components/observabilityweavedestination.py
+++ b/src/openrouter/components/observabilityweavedestination.py
@@ -58,6 +58,12 @@ def serialize_model(self, handler):
class ObservabilityWeaveDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityWeaveDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -84,6 +90,15 @@ class ObservabilityWeaveDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityWeaveDestinationConfig
created_at: str
diff --git a/src/openrouter/components/observabilitywebhookdestination.py b/src/openrouter/components/observabilitywebhookdestination.py
index 344abac0..336851b5 100644
--- a/src/openrouter/components/observabilitywebhookdestination.py
+++ b/src/openrouter/components/observabilitywebhookdestination.py
@@ -56,6 +56,12 @@ def serialize_model(self, handler):
class ObservabilityWebhookDestinationTypedDict(TypedDict):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
config: ObservabilityWebhookDestinationConfigTypedDict
created_at: str
r"""ISO timestamp of when the destination was created."""
@@ -82,6 +88,15 @@ class ObservabilityWebhookDestination(BaseModel):
api_key_hashes: Nullable[List[str]]
r"""Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys."""
+ broadcast_generation_cost: bool
+ r"""When true, include cost and billing generation metadata."""
+
+ broadcast_generation_identity: bool
+ r"""When true, include identity generation metadata."""
+
+ broadcast_generation_request_context: bool
+ r"""When true, include request-context generation metadata."""
+
config: ObservabilityWebhookDestinationConfig
created_at: str
diff --git a/src/openrouter/components/updateobservabilitydestinationrequest.py b/src/openrouter/components/updateobservabilitydestinationrequest.py
index 7325eabc..2a172550 100644
--- a/src/openrouter/components/updateobservabilitydestinationrequest.py
+++ b/src/openrouter/components/updateobservabilitydestinationrequest.py
@@ -20,6 +20,12 @@
class UpdateObservabilityDestinationRequestTypedDict(TypedDict):
api_key_hashes: NotRequired[Nullable[List[str]]]
r"""Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided."""
+ broadcast_generation_cost: NotRequired[bool]
+ r"""Whether to include cost and billing generation metadata."""
+ broadcast_generation_identity: NotRequired[bool]
+ r"""Whether to include identity generation metadata."""
+ broadcast_generation_request_context: NotRequired[bool]
+ r"""Whether to include request-context generation metadata."""
config: NotRequired[Dict[str, Any]]
r"""Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value."""
enabled: NotRequired[bool]
@@ -37,6 +43,15 @@ class UpdateObservabilityDestinationRequest(BaseModel):
api_key_hashes: OptionalNullable[List[str]] = UNSET
r"""Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided."""
+ broadcast_generation_cost: Optional[bool] = None
+ r"""Whether to include cost and billing generation metadata."""
+
+ broadcast_generation_identity: Optional[bool] = None
+ r"""Whether to include identity generation metadata."""
+
+ broadcast_generation_request_context: Optional[bool] = None
+ r"""Whether to include request-context generation metadata."""
+
config: Optional[Dict[str, Any]] = None
r"""Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value."""
@@ -59,6 +74,9 @@ def serialize_model(self, handler):
optional_fields = set(
[
"api_key_hashes",
+ "broadcast_generation_cost",
+ "broadcast_generation_identity",
+ "broadcast_generation_request_context",
"config",
"enabled",
"filter_rules",
diff --git a/src/openrouter/guardrails.py b/src/openrouter/guardrails.py
index c90c233e..464675f7 100644
--- a/src/openrouter/guardrails.py
+++ b/src/openrouter/guardrails.py
@@ -423,7 +423,7 @@ def create(
:param include_byok_in_budgets: Whether BYOK (bring-your-own-key) inference spend counts toward this guardrail's limit_usd, in addition to OpenRouter credit spend. Defaults to false.
:param limit_usd: Spending limit in USD
:param reset_interval: Interval at which the limit resets (daily, weekly, monthly)
- :param workspace_id: The workspace to create the guardrail in. Defaults to the default workspace if not provided.
+ :param workspace_id: The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -649,7 +649,7 @@ async def create_async(
:param include_byok_in_budgets: Whether BYOK (bring-your-own-key) inference spend counts toward this guardrail's limit_usd, in addition to OpenRouter credit spend. Defaults to false.
:param limit_usd: Spending limit in USD
:param reset_interval: Interval at which the limit resets (daily, weekly, monthly)
- :param workspace_id: The workspace to create the guardrail in. Defaults to the default workspace if not provided.
+ :param workspace_id: The workspace to create the guardrail in. When omitted, the guardrail is created in the default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly.
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
diff --git a/src/openrouter/observability.py b/src/openrouter/observability.py
index 0f62389a..5c553b76 100644
--- a/src/openrouter/observability.py
+++ b/src/openrouter/observability.py
@@ -362,6 +362,9 @@ def create(
x_open_router_title: Optional[str] = None,
x_open_router_categories: Optional[str] = None,
api_key_hashes: OptionalNullable[Iterable[str]] = UNSET,
+ broadcast_generation_cost: Optional[bool] = False,
+ broadcast_generation_identity: Optional[bool] = False,
+ broadcast_generation_request_context: Optional[bool] = False,
enabled: Optional[bool] = True,
filter_rules: OptionalNullable[
Union[
@@ -392,6 +395,9 @@ def create(
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
:param api_key_hashes: Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided.
+ :param broadcast_generation_cost: When true, include cost and billing generation metadata.
+ :param broadcast_generation_identity: When true, include identity generation metadata.
+ :param broadcast_generation_request_context: When true, include request-context generation metadata.
:param enabled: Whether this destination should be enabled immediately.
:param filter_rules: Optional structured filter rules controlling which events are forwarded.
:param privacy_mode: When true, request/response bodies are not forwarded — only metadata.
@@ -420,6 +426,9 @@ def create(
api_key_hashes=utils.unmarshal(
api_key_hashes, OptionalNullable[List[str]]
),
+ broadcast_generation_cost=broadcast_generation_cost,
+ broadcast_generation_identity=broadcast_generation_identity,
+ broadcast_generation_request_context=broadcast_generation_request_context,
config=utils.unmarshal(config, Dict[str, Any]),
enabled=enabled,
filter_rules=utils.get_pydantic_model(
@@ -545,6 +554,9 @@ async def create_async(
x_open_router_title: Optional[str] = None,
x_open_router_categories: Optional[str] = None,
api_key_hashes: OptionalNullable[Iterable[str]] = UNSET,
+ broadcast_generation_cost: Optional[bool] = False,
+ broadcast_generation_identity: Optional[bool] = False,
+ broadcast_generation_request_context: Optional[bool] = False,
enabled: Optional[bool] = True,
filter_rules: OptionalNullable[
Union[
@@ -575,6 +587,9 @@ async def create_async(
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
:param api_key_hashes: Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided.
+ :param broadcast_generation_cost: When true, include cost and billing generation metadata.
+ :param broadcast_generation_identity: When true, include identity generation metadata.
+ :param broadcast_generation_request_context: When true, include request-context generation metadata.
:param enabled: Whether this destination should be enabled immediately.
:param filter_rules: Optional structured filter rules controlling which events are forwarded.
:param privacy_mode: When true, request/response bodies are not forwarded — only metadata.
@@ -603,6 +618,9 @@ async def create_async(
api_key_hashes=utils.unmarshal(
api_key_hashes, OptionalNullable[List[str]]
),
+ broadcast_generation_cost=broadcast_generation_cost,
+ broadcast_generation_identity=broadcast_generation_identity,
+ broadcast_generation_request_context=broadcast_generation_request_context,
config=utils.unmarshal(config, Dict[str, Any]),
enabled=enabled,
filter_rules=utils.get_pydantic_model(
@@ -1246,6 +1264,9 @@ def update(
x_open_router_title: Optional[str] = None,
x_open_router_categories: Optional[str] = None,
api_key_hashes: OptionalNullable[Iterable[str]] = UNSET,
+ broadcast_generation_cost: Optional[bool] = None,
+ broadcast_generation_identity: Optional[bool] = None,
+ broadcast_generation_request_context: Optional[bool] = None,
config: Optional[Mapping[str, Any]] = None,
enabled: Optional[bool] = None,
filter_rules: OptionalNullable[
@@ -1275,6 +1296,9 @@ def update(
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
:param api_key_hashes: Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided.
+ :param broadcast_generation_cost: Whether to include cost and billing generation metadata.
+ :param broadcast_generation_identity: Whether to include identity generation metadata.
+ :param broadcast_generation_request_context: Whether to include request-context generation metadata.
:param config: Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value.
:param enabled: Whether the destination is enabled.
:param filter_rules:
@@ -1305,6 +1329,9 @@ def update(
api_key_hashes=utils.unmarshal(
api_key_hashes, OptionalNullable[List[str]]
),
+ broadcast_generation_cost=broadcast_generation_cost,
+ broadcast_generation_identity=broadcast_generation_identity,
+ broadcast_generation_request_context=broadcast_generation_request_context,
config=utils.unmarshal(config, Optional[Dict[str, Any]]),
enabled=enabled,
filter_rules=utils.get_pydantic_model(
@@ -1390,6 +1417,11 @@ def update(
errors.UnauthorizedResponseErrorData, http_res
)
raise errors.UnauthorizedResponseError(response_data, http_res)
+ if utils.match_response(http_res, "403", "application/json"):
+ response_data = unmarshal_json_response(
+ errors.ForbiddenResponseErrorData, http_res
+ )
+ raise errors.ForbiddenResponseError(response_data, http_res)
if utils.match_response(http_res, "404", "application/json"):
response_data = unmarshal_json_response(
errors.NotFoundResponseErrorData, http_res
@@ -1426,6 +1458,9 @@ async def update_async(
x_open_router_title: Optional[str] = None,
x_open_router_categories: Optional[str] = None,
api_key_hashes: OptionalNullable[Iterable[str]] = UNSET,
+ broadcast_generation_cost: Optional[bool] = None,
+ broadcast_generation_identity: Optional[bool] = None,
+ broadcast_generation_request_context: Optional[bool] = None,
config: Optional[Mapping[str, Any]] = None,
enabled: Optional[bool] = None,
filter_rules: OptionalNullable[
@@ -1455,6 +1490,9 @@ async def update_async(
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
:param api_key_hashes: Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided.
+ :param broadcast_generation_cost: Whether to include cost and billing generation metadata.
+ :param broadcast_generation_identity: Whether to include identity generation metadata.
+ :param broadcast_generation_request_context: Whether to include request-context generation metadata.
:param config: Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value.
:param enabled: Whether the destination is enabled.
:param filter_rules:
@@ -1485,6 +1523,9 @@ async def update_async(
api_key_hashes=utils.unmarshal(
api_key_hashes, OptionalNullable[List[str]]
),
+ broadcast_generation_cost=broadcast_generation_cost,
+ broadcast_generation_identity=broadcast_generation_identity,
+ broadcast_generation_request_context=broadcast_generation_request_context,
config=utils.unmarshal(config, Optional[Dict[str, Any]]),
enabled=enabled,
filter_rules=utils.get_pydantic_model(
@@ -1570,6 +1611,11 @@ async def update_async(
errors.UnauthorizedResponseErrorData, http_res
)
raise errors.UnauthorizedResponseError(response_data, http_res)
+ if utils.match_response(http_res, "403", "application/json"):
+ response_data = unmarshal_json_response(
+ errors.ForbiddenResponseErrorData, http_res
+ )
+ raise errors.ForbiddenResponseError(response_data, http_res)
if utils.match_response(http_res, "404", "application/json"):
response_data = unmarshal_json_response(
errors.NotFoundResponseErrorData, http_res
diff --git a/src/openrouter/operations/listbyokkeys.py b/src/openrouter/operations/listbyokkeys.py
index 5d2702bd..c2daf3ad 100644
--- a/src/openrouter/operations/listbyokkeys.py
+++ b/src/openrouter/operations/listbyokkeys.py
@@ -209,7 +209,7 @@ class ListBYOKKeysRequestTypedDict(TypedDict):
limit: NotRequired[int]
r"""Maximum number of records to return (max 100)"""
workspace_id: NotRequired[str]
- r"""Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace."""
+ r"""Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly."""
provider: NotRequired[Provider]
r"""Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`)."""
@@ -259,7 +259,7 @@ class ListBYOKKeysRequest(BaseModel):
Optional[str],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
- r"""Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace."""
+ r"""Optional workspace ID to filter by. When omitted, resolves to the account’s default workspace; if that default has been deleted, the request returns a 400 and you must pass `workspace_id` explicitly."""
provider: Annotated[
Optional[Provider],
diff --git a/uv.lock b/uv.lock
index 4cf113d4..ffd19ac8 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "1.1.31"
+version = "1.1.32"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },