diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index fb66374d..1a68ec12 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: 92453912467fdc8c606b911a5b8e5975 + docChecksum: ca478c9fe977377c5080ec03921023a8 docVersion: 1.0.0 speakeasyVersion: 1.787.0 generationVersion: 2.914.0 - releaseVersion: 1.3.25 - configChecksum: 197161ed7ce578b24625f5a89c79af0c + releaseVersion: 1.3.26 + configChecksum: f1f6fdb944dd84de88b781a775f1b193 repoURL: https://github.com/OpenRouterTeam/python-sdk.git installationURL: https://github.com/OpenRouterTeam/python-sdk.git published: true persistentEdits: - generation_id: 3c68b6da-5bbc-41a4-952e-6a5dba9f015e - pristine_commit_hash: 71ae1ce112aa0731f0289ec5c7db29743b949733 - pristine_tree_hash: c1fb516226b4c9d577b2086079251e204b8aca35 + generation_id: 7e99d85c-0497-46d2-8f32-30b6816934f7 + pristine_commit_hash: 6559d85090ca32fc4de97e741687929da41137e2 + pristine_tree_hash: 3d570f3d755633ea2ee0eb370a1ed7571858d615 features: python: acceptHeaders: 3.0.0 @@ -8272,8 +8272,8 @@ trackedFiles: pristine_git_object: b3a22348904b9b6e07314e82f77b08763524eb1b docs/operations/createkeysdata.mdx: id: bf8133a06827 - last_write_checksum: sha1:315420c8bb79b06c579bf9473d1f94a26b2aa626 - pristine_git_object: 7bcdd1c73d9fc389639976fb5a305b4ce436c66b + last_write_checksum: sha1:a8e15d810ead6120052ac4db3c137d500b177bae + pristine_git_object: 18bb520f75ea52e2d534f65d62f1d9c370a73e0f docs/operations/createkeysglobals.mdx: id: ebcc738c53da last_write_checksum: sha1:dcec0f5013ef76e33fc43437e5689185abf61cb1 @@ -8292,8 +8292,8 @@ trackedFiles: pristine_git_object: b07f924076b7262a3de54f708f12cd0ee87eab5b docs/operations/createkeysresponse.mdx: id: 08e825fab080 - last_write_checksum: sha1:268c49a74956884d1e3b3495fdf6ee6c7383e323 - pristine_git_object: 83f6a2a6ba3926b76f509b84b7a41bc0e10e6d58 + last_write_checksum: sha1:143b32c4d483cd13b14703816777c1947eac29a7 + pristine_git_object: ef2250aecae9ca3602cbc41cd4a99305cc730de7 docs/operations/createoauthtokenglobals.mdx: id: 253b06bd452b last_write_checksum: sha1:9f7cedf50a8fed5141d767597081ea1dc97a2469 @@ -8800,8 +8800,8 @@ trackedFiles: pristine_git_object: cd83fdf513f2e3581b526d6fd2bee78841dfd8c6 docs/operations/getkeydata.mdx: id: 6e826a999e6b - last_write_checksum: sha1:8b5426689eaf7f90b5f12991eeb52cf3780d95f4 - pristine_git_object: 1e5f092708886ee92cf4c50a3fb27228fa8572ba + last_write_checksum: sha1:839f9b181199dc3f3596227d05e6631f1dcdb459 + pristine_git_object: 3ad8cfab8c6a35553d58525f37db5d8025a3a97f docs/operations/getkeyglobals.mdx: id: e0e92d532c82 last_write_checksum: sha1:5a61d6565f3977a90314a46626caa89a8ab97c32 @@ -8812,8 +8812,8 @@ trackedFiles: pristine_git_object: 917f4073281196fdf9aa85f2d093ce3dd8b869b6 docs/operations/getkeyresponse.mdx: id: dd773bd25661 - last_write_checksum: sha1:2f5e0d69a00d8af16ea5ab66723cf638267a422a - pristine_git_object: b54168e5f08390768a2d105df374bea1457536d8 + last_write_checksum: sha1:bacb224ced61ce3b45824f4c9776c87eac29a371 + pristine_git_object: 962912273e07a640e61a46d5b949a71d69586e66 docs/operations/getmodelglobals.mdx: id: 18648d7998ae last_write_checksum: sha1:7d198dc0c69e793b6681e2f96a76b7d43431cd4f @@ -9068,8 +9068,8 @@ trackedFiles: pristine_git_object: 90add74a591950b1c08757f18063f33a49c73f65 docs/operations/listdata.mdx: id: 949d8d9f5ac7 - last_write_checksum: sha1:ad6cfad0f973f73ffc93542796af523c275eb535 - pristine_git_object: 9c01abd87d9c54b1c37d139f26ce8fbbed362a4e + last_write_checksum: sha1:85cc0dd377f335aabf60daf2cff403036ee378a1 + pristine_git_object: a68b8ca9bb2b0d8875bd04cf1f84f001f26a3553 docs/operations/listembeddingsmodelsglobals.mdx: id: b9243861091c last_write_checksum: sha1:d9c528e4b7a94045e306b112a6b10c53205fe591 @@ -9680,8 +9680,8 @@ trackedFiles: pristine_git_object: 059a2165b5a09252162e7d21d25de48eb631e29d docs/operations/updatekeysdata.mdx: id: d398ba596e27 - last_write_checksum: sha1:f028821be32f7627428ead62d856899c3d1d0fde - pristine_git_object: 763bb1b482ec1067dd01ffe0e583718bd4f27d14 + last_write_checksum: sha1:f6f5cd048b7b6037bc087eca052d0b19d22c5530 + pristine_git_object: 46e464000bc73ddda899ba6e4451448d027849b6 docs/operations/updatekeysglobals.mdx: id: b28932f180bb last_write_checksum: sha1:1f5778b747552e491bdfff8ae6f24fa13d94e772 @@ -9700,8 +9700,8 @@ trackedFiles: pristine_git_object: b293f36e7709b7bebad59271db0885d29711c2d9 docs/operations/updatekeysresponse.mdx: id: a97d51fea627 - last_write_checksum: sha1:d480d817cca85b82432bcf8f2aba01e56fe14361 - pristine_git_object: 8bd3a4f574817f49907b51a0048fd76eba0b214b + last_write_checksum: sha1:e3064726562fa278b17b113764602a46e0919ffe + pristine_git_object: 9440f9f6b4670fbb189520ec160f96c32c1ebab1 docs/operations/updateobservabilitydestinationglobals.mdx: id: f85617547bfa last_write_checksum: sha1:c1f4d1a72d38359c5bd04f2845a587d2ad09d493 @@ -9968,8 +9968,8 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:cff128d64b1561844bb58c5c3ef88161e984ec2c - pristine_git_object: 1a6ea457cdf932162660ee381611299c74ce6ceb + last_write_checksum: sha1:178fb5ebf2d5e2e9357df50216ef837c9c45174b + pristine_git_object: 112fa9a986c4f28337593041fbe9378906ee2670 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54 @@ -9996,8 +9996,8 @@ trackedFiles: pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137 src/openrouter/_version.py: id: d8d15ad6c586 - last_write_checksum: sha1:4efea9715e5b25b9b96e4363b90af25cdd0d13a7 - pristine_git_object: f0da1b704a54839fa591866a2849df749fc02813 + last_write_checksum: sha1:6e671a7634a6396b6de4bed0c69bd623b0ebbd90 + pristine_git_object: 235db3aed8d14857805c9f976a5bc57a154113b3 src/openrouter/alpha.py: id: 306c4d93308d last_write_checksum: sha1:30f55a360f41376ab194b9ea725fe4e001a5ae1a @@ -13684,8 +13684,8 @@ trackedFiles: pristine_git_object: e25761cb500ef9cc21adf91165fb9f11fb8379da src/openrouter/operations/createkeys.py: id: 64ad31fdaa6c - last_write_checksum: sha1:92e122bf7ca252e6cc1f4200cbcd6ded9a0d35a7 - pristine_git_object: 2fe95efbdbba0908f586d84148fad57b3b8a498e + last_write_checksum: sha1:ab6dc89efd3f557b263ccd2211fc5b2740d8e218 + pristine_git_object: 90b845830f0bce796bd246c59c8c14806d764d44 src/openrouter/operations/createoauthtoken.py: id: 02e1c061780d last_write_checksum: sha1:006884cfeeecfede1434f194460b7189cae89de1 @@ -13876,8 +13876,8 @@ trackedFiles: pristine_git_object: 6632fbbbe4e59918369b70cf2a365880f2d315d6 src/openrouter/operations/getkey.py: id: d9769da90865 - last_write_checksum: sha1:0a73a314d782011063d9879302dbb7b829d759e3 - pristine_git_object: ceb137da2e14569b87b579ef40f3e21a45a063bd + last_write_checksum: sha1:63a27034e350b578b6d5f29d6568111bc14c75c1 + pristine_git_object: 924bb00ec6b3bcb57c9fb8442407b9c3ccc92b9d src/openrouter/operations/getmodel.py: id: 90c926cd726f last_write_checksum: sha1:3ba2f12410841c49e329821b8eaec5f87d5882c1 @@ -13952,8 +13952,8 @@ trackedFiles: pristine_git_object: e2024274ca5a6aedb60eb9d9dfdc741e04b26c03 src/openrouter/operations/list.py: id: 3ced31e3804e - last_write_checksum: sha1:bfad6d8e4c453367e509f063825899ce72b33449 - pristine_git_object: bec5a577e95e905673b68d02fc873b0bb9a3cd8a + last_write_checksum: sha1:a81bfd1c2a41849005e61cbd11502cc3bd19d417 + pristine_git_object: 7e0c0023c907ef35c9abc797d5cf9152603e3d23 src/openrouter/operations/listbatches.py: id: 9ad1345dc956 last_write_checksum: sha1:e568e38db37703d3e2d35f460d25421f98da21a1 @@ -14152,8 +14152,8 @@ trackedFiles: pristine_git_object: d87519cfb18258224c2958076dedb16ff4abe208 src/openrouter/operations/updatekeys.py: id: 56fb213253a8 - last_write_checksum: sha1:143e7df66832596b325cc9f86aad485ba57d6cb8 - pristine_git_object: 970481df256dcdef6d95f63d9a8da6b67ef354dd + last_write_checksum: sha1:d70e4b1e06f8b0e1569a172e263b3e541edf4442 + pristine_git_object: 3862d92575f681cc5eb43fd27d3d57114972ed2e src/openrouter/operations/updateobservabilitydestination.py: id: 18e06708d1b4 last_write_checksum: sha1:d490e19e8698ed5193df9d06673f975cb3a1410f @@ -14625,7 +14625,7 @@ examples: speakeasy-default-list: responses: "200": - application/json: {"data": [{"byok_usage": 17.38, "byok_usage_daily": 17.38, "byok_usage_monthly": 17.38, "byok_usage_weekly": 17.38, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": false, "label": "Production API Key", "limit": 100, "limit_remaining": 74.5, "limit_reset": "monthly", "name": "My Production Key", "updated_at": "2025-08-24T15:45:00Z", "usage": 25.5, "usage_daily": 25.5, "usage_monthly": 25.5, "usage_weekly": 25.5, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}]} + application/json: {"data": [{"byok_usage": 17.38, "byok_usage_daily": 17.38, "byok_usage_monthly": 17.38, "byok_usage_weekly": 17.38, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": false, "label": "Production API Key", "last_used_at": "2026-09-15T15:45:00Z", "limit": 100, "limit_remaining": 74.5, "limit_reset": "monthly", "name": "My Production Key", "updated_at": "2025-08-24T15:45:00Z", "usage": 25.5, "usage_daily": 25.5, "usage_monthly": 25.5, "usage_weekly": 25.5, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}]} "401": application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} "429": @@ -14640,7 +14640,7 @@ examples: application/json: {"name": "My New API Key"} responses: "201": - application/json: {"data": {"byok_usage": 0, "byok_usage_daily": 0, "byok_usage_monthly": 0, "byok_usage_weekly": 0, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": true, "label": "My New API Key", "limit": 50, "limit_remaining": 50, "limit_reset": "monthly", "name": "My New API Key", "updated_at": null, "usage": 0, "usage_daily": 0, "usage_monthly": 0, "usage_weekly": 0, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}, "key": "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"} + application/json: {"data": {"byok_usage": 0, "byok_usage_daily": 0, "byok_usage_monthly": 0, "byok_usage_weekly": 0, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": true, "label": "My New API Key", "last_used_at": null, "limit": 50, "limit_remaining": 50, "limit_reset": "monthly", "name": "My New API Key", "updated_at": null, "usage": 0, "usage_daily": 0, "usage_monthly": 0, "usage_weekly": 0, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}, "key": "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"} "400": application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} "401": @@ -14660,7 +14660,7 @@ examples: application/json: {} responses: "200": - application/json: {"data": {"byok_usage": 17.38, "byok_usage_daily": 17.38, "byok_usage_monthly": 17.38, "byok_usage_weekly": 17.38, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": true, "label": "Updated API Key Name", "limit": 75, "limit_remaining": 49.5, "limit_reset": "daily", "name": "Updated API Key Name", "updated_at": "2025-08-24T16:00:00Z", "usage": 25.5, "usage_daily": 25.5, "usage_monthly": 25.5, "usage_weekly": 25.5, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}} + application/json: {"data": {"byok_usage": 17.38, "byok_usage_daily": 17.38, "byok_usage_monthly": 17.38, "byok_usage_weekly": 17.38, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": true, "label": "Updated API Key Name", "last_used_at": "2026-09-15T15:45:00Z", "limit": 75, "limit_remaining": 49.5, "limit_reset": "daily", "name": "Updated API Key Name", "updated_at": "2025-08-24T16:00:00Z", "usage": 25.5, "usage_daily": 25.5, "usage_monthly": 25.5, "usage_weekly": 25.5, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}} "400": application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} "401": @@ -14712,7 +14712,7 @@ examples: hash: "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943" responses: "200": - application/json: {"data": {"byok_usage": 17.38, "byok_usage_daily": 17.38, "byok_usage_monthly": 17.38, "byok_usage_weekly": 17.38, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": false, "label": "Production API Key", "limit": 100, "limit_remaining": 74.5, "limit_reset": "monthly", "name": "My Production Key", "updated_at": "2025-08-24T15:45:00Z", "usage": 25.5, "usage_daily": 25.5, "usage_monthly": 25.5, "usage_weekly": 25.5, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}} + application/json: {"data": {"byok_usage": 17.38, "byok_usage_daily": 17.38, "byok_usage_monthly": 17.38, "byok_usage_weekly": 17.38, "created_at": "2025-08-24T10:30:00Z", "creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000", "disabled": false, "external_user": null, "hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943", "include_byok_in_limit": false, "label": "Production API Key", "last_used_at": "2026-09-15T15:45:00Z", "limit": 100, "limit_remaining": 74.5, "limit_reset": "monthly", "name": "My Production Key", "updated_at": "2025-08-24T15:45:00Z", "usage": 25.5, "usage_daily": 25.5, "usage_monthly": 25.5, "usage_weekly": 25.5, "workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"}} "401": application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} "404": @@ -18264,4 +18264,9 @@ examples: "500": application/json: {"error": {"code": 500, "message": "Internal Server Error"}} examplesVersion: 1.0.2 -releaseNotes: "## Python SDK Changes:\n* `open_router.chat.send()`: \n * `request.plugins[].union(switchyard-router).judge_model` **Added**\n* `open_router.presets.create_presets_chat_completions()`: \n * `request.plugins[].union(switchyard-router).judge_model` **Added**\n* `open_router.presets.create_presets_messages()`: \n * `request.plugins[].union(switchyard-router).judge_model` **Added**\n* `open_router.presets.create_presets_responses()`: \n * `request.plugins[].union(switchyard-router).judge_model` **Added**\n* `open_router.responses.send()`: \n * `request.plugins[].union(switchyard-router).judge_model` **Added**\n* `open_router.beta.responses.send()`: \n * `request.plugins[].union(switchyard-router).judge_model` **Added**\n" +releaseNotes: | + ## Python SDK Changes: + * `open_router.api_keys.list()`: `response.data[].last_used_at` **Added** + * `open_router.api_keys.create()`: `response.data.last_used_at` **Added** + * `open_router.api_keys.get()`: `response.data.last_used_at` **Added** + * `open_router.api_keys.update()`: `response.data.last_used_at` **Added** diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index ae417ff7..dd19de0f 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -36,7 +36,7 @@ generation: documentation: mintlify preApplyUnionDiscriminators: true python: - version: 1.3.25 + version: 1.3.26 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 4ff6cf80..adc005eb 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -43111,6 +43111,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'Production API Key' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43136,6 +43137,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'Production API Key' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43163,6 +43165,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'sk-or-v1-0e6...1c96' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43233,6 +43236,13 @@ paths: description: 'Human-readable label for the API key' example: 'sk-or-v1-0e6...1c96' type: 'string' + last_used_at: + description: 'ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025' + example: '2026-09-15T15:45:00Z' + format: 'date-time' + type: + - 'string' + - 'null' limit: description: 'Spending limit for the API key in USD' example: 100 @@ -43306,6 +43316,7 @@ paths: - 'byok_usage_monthly' - 'created_at' - 'updated_at' + - 'last_used_at' - 'external_user' - 'creator_user_id' - 'workspace_id' @@ -43465,6 +43476,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true label: 'My New API Key' + last_used_at: null limit: 50 limit_remaining: 50 limit_reset: 'monthly' @@ -43491,6 +43503,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true label: 'My New API Key' + last_used_at: null limit: 50 limit_remaining: 50 limit_reset: 'monthly' @@ -43518,6 +43531,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'sk-or-v1-0e6...1c96' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43588,6 +43602,13 @@ paths: description: 'Human-readable label for the API key' example: 'sk-or-v1-0e6...1c96' type: 'string' + last_used_at: + description: 'ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025' + example: '2026-09-15T15:45:00Z' + format: 'date-time' + type: + - 'string' + - 'null' limit: description: 'Spending limit for the API key in USD' example: 100 @@ -43661,6 +43682,7 @@ paths: - 'byok_usage_monthly' - 'created_at' - 'updated_at' + - 'last_used_at' - 'external_user' - 'creator_user_id' - 'workspace_id' @@ -43837,6 +43859,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'Production API Key' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43862,6 +43885,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'Production API Key' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43888,6 +43912,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'sk-or-v1-0e6...1c96' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -43958,6 +43983,13 @@ paths: description: 'Human-readable label for the API key' example: 'sk-or-v1-0e6...1c96' type: 'string' + last_used_at: + description: 'ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025' + example: '2026-09-15T15:45:00Z' + format: 'date-time' + type: + - 'string' + - 'null' limit: description: 'Spending limit for the API key in USD' example: 100 @@ -44031,6 +44063,7 @@ paths: - 'byok_usage_monthly' - 'created_at' - 'updated_at' + - 'last_used_at' - 'external_user' - 'creator_user_id' - 'workspace_id' @@ -44162,6 +44195,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true label: 'Updated API Key Name' + last_used_at: '2026-09-15T15:45:00Z' limit: 75 limit_remaining: 49.5 limit_reset: 'daily' @@ -44187,6 +44221,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: true label: 'Updated API Key Name' + last_used_at: '2026-09-15T15:45:00Z' limit: 75 limit_remaining: 49.5 limit_reset: 'daily' @@ -44213,6 +44248,7 @@ paths: hash: 'f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943' include_byok_in_limit: false label: 'sk-or-v1-0e6...1c96' + last_used_at: '2026-09-15T15:45:00Z' limit: 100 limit_remaining: 74.5 limit_reset: 'monthly' @@ -44283,6 +44319,13 @@ paths: description: 'Human-readable label for the API key' example: 'sk-or-v1-0e6...1c96' type: 'string' + last_used_at: + description: 'ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025' + example: '2026-09-15T15:45:00Z' + format: 'date-time' + type: + - 'string' + - 'null' limit: description: 'Spending limit for the API key in USD' example: 100 @@ -44356,6 +44399,7 @@ paths: - 'byok_usage_monthly' - 'created_at' - 'updated_at' + - 'last_used_at' - 'external_user' - 'creator_user_id' - 'workspace_id' diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 04424f28..91a78bd4 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:60860108aac4bc42bde6965ab51b058bc2899b2c747747cea6304b7b2fd9e055 - sourceBlobDigest: sha256:814406dfec3321a42a6a09e93f3fe60edab725d14f8eedf34bea4ca19d53a364 + sourceRevisionDigest: sha256:d24d16338614e6343ad2fa1f47f408d2f8c3eba071a3d8a472544748a0aa6620 + sourceBlobDigest: sha256:da7dea9cc7d4012055e43f82b5e8dbf0324eda4990d380fc4968ae2e93bc5acd tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: open-router: source: OpenRouter API sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:60860108aac4bc42bde6965ab51b058bc2899b2c747747cea6304b7b2fd9e055 - sourceBlobDigest: sha256:814406dfec3321a42a6a09e93f3fe60edab725d14f8eedf34bea4ca19d53a364 + sourceRevisionDigest: sha256:d24d16338614e6343ad2fa1f47f408d2f8c3eba071a3d8a472544748a0aa6620 + sourceBlobDigest: sha256:da7dea9cc7d4012055e43f82b5e8dbf0324eda4990d380fc4968ae2e93bc5acd codeSamplesNamespace: open-router-python-code-samples - codeSamplesRevisionDigest: sha256:9d35e2b24e2c243e828f1fc71d03e8d166b3a99427ef780bba63305f4e2c4902 + codeSamplesRevisionDigest: sha256:3f73f08c00f988c928fcea61faba174a810f86938b84a2f3db39fb026966729c workflow: workflowVersion: 1.0.0 speakeasyVersion: 1.787.0 diff --git a/RELEASES.md b/RELEASES.md index 1fbb25d9..00111650 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -3019,4 +3019,14 @@ Based on: ### Generated - [python v1.3.25] . ### Releases -- [PyPI v1.3.25] https://pypi.org/project/openrouter/1.3.25 - . \ No newline at end of file +- [PyPI v1.3.25] https://pypi.org/project/openrouter/1.3.25 - . + +## 2026-10-06 18:05:42 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.3.26] . +### Releases +- [PyPI v1.3.26] https://pypi.org/project/openrouter/1.3.26 - . \ No newline at end of file diff --git a/docs/operations/createkeysdata.mdx b/docs/operations/createkeysdata.mdx index 7bcdd1c7..18bb520f 100644 --- a/docs/operations/createkeysdata.mdx +++ b/docs/operations/createkeysdata.mdx @@ -21,6 +21,7 @@ The created API key information | `hash` | *str* | :heavy_check_mark: | Unique hash identifier for the API key | f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 | | `include_byok_in_limit` | *bool* | :heavy_check_mark: | Whether to include external BYOK usage in the credit limit | false | | `label` | *str* | :heavy_check_mark: | Human-readable label for the API key | sk-or-v1-0e6...1c96 | +| `last_used_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025 | 2026-09-15T15:45:00Z | | `limit` | *Nullable[float]* | :heavy_check_mark: | Spending limit for the API key in USD | 100 | | `limit_remaining` | *Nullable[float]* | :heavy_check_mark: | Remaining spending limit in USD | 74.5 | | `limit_reset` | *Nullable[str]* | :heavy_check_mark: | Type of limit reset for the API key | monthly | diff --git a/docs/operations/createkeysresponse.mdx b/docs/operations/createkeysresponse.mdx index 83f6a2a6..ef2250ae 100644 --- a/docs/operations/createkeysresponse.mdx +++ b/docs/operations/createkeysresponse.mdx @@ -7,7 +7,7 @@ API key created successfully ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `data` | [operations.CreateKeysData](../operations/createkeysdata.mdx) | :heavy_check_mark: | The created API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"external_user": null,
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | -| `key` | *str* | :heavy_check_mark: | The actual API key string (only shown once) | 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 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [operations.CreateKeysData](../operations/createkeysdata.mdx) | :heavy_check_mark: | The created API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"external_user": null,
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"last_used_at": "2026-09-15T15:45:00Z",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | +| `key` | *str* | :heavy_check_mark: | The actual API key string (only shown once) | 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 | \ No newline at end of file diff --git a/docs/operations/getkeydata.mdx b/docs/operations/getkeydata.mdx index 1e5f0927..3ad8cfab 100644 --- a/docs/operations/getkeydata.mdx +++ b/docs/operations/getkeydata.mdx @@ -21,6 +21,7 @@ The API key information | `hash` | *str* | :heavy_check_mark: | Unique hash identifier for the API key | f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 | | `include_byok_in_limit` | *bool* | :heavy_check_mark: | Whether to include external BYOK usage in the credit limit | false | | `label` | *str* | :heavy_check_mark: | Human-readable label for the API key | sk-or-v1-0e6...1c96 | +| `last_used_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025 | 2026-09-15T15:45:00Z | | `limit` | *Nullable[float]* | :heavy_check_mark: | Spending limit for the API key in USD | 100 | | `limit_remaining` | *Nullable[float]* | :heavy_check_mark: | Remaining spending limit in USD | 74.5 | | `limit_reset` | *Nullable[str]* | :heavy_check_mark: | Type of limit reset for the API key | monthly | diff --git a/docs/operations/getkeyresponse.mdx b/docs/operations/getkeyresponse.mdx index b54168e5..96291227 100644 --- a/docs/operations/getkeyresponse.mdx +++ b/docs/operations/getkeyresponse.mdx @@ -7,6 +7,6 @@ API key details ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `data` | [operations.GetKeyData](../operations/getkeydata.mdx) | :heavy_check_mark: | The API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"external_user": null,
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [operations.GetKeyData](../operations/getkeydata.mdx) | :heavy_check_mark: | The API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"external_user": null,
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"last_used_at": "2026-09-15T15:45:00Z",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/docs/operations/listdata.mdx b/docs/operations/listdata.mdx index 9c01abd8..a68b8ca9 100644 --- a/docs/operations/listdata.mdx +++ b/docs/operations/listdata.mdx @@ -18,6 +18,7 @@ title: "ListData" | `hash` | *str* | :heavy_check_mark: | Unique hash identifier for the API key | f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 | | `include_byok_in_limit` | *bool* | :heavy_check_mark: | Whether to include external BYOK usage in the credit limit | false | | `label` | *str* | :heavy_check_mark: | Human-readable label for the API key | sk-or-v1-0e6...1c96 | +| `last_used_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025 | 2026-09-15T15:45:00Z | | `limit` | *Nullable[float]* | :heavy_check_mark: | Spending limit for the API key in USD | 100 | | `limit_remaining` | *Nullable[float]* | :heavy_check_mark: | Remaining spending limit in USD | 74.5 | | `limit_reset` | *Nullable[str]* | :heavy_check_mark: | Type of limit reset for the API key | monthly | diff --git a/docs/operations/updatekeysdata.mdx b/docs/operations/updatekeysdata.mdx index 763bb1b4..46e46400 100644 --- a/docs/operations/updatekeysdata.mdx +++ b/docs/operations/updatekeysdata.mdx @@ -21,6 +21,7 @@ The updated API key information | `hash` | *str* | :heavy_check_mark: | Unique hash identifier for the API key | f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 | | `include_byok_in_limit` | *bool* | :heavy_check_mark: | Whether to include external BYOK usage in the credit limit | false | | `label` | *str* | :heavy_check_mark: | Human-readable label for the API key | sk-or-v1-0e6...1c96 | +| `last_used_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025 | 2026-09-15T15:45:00Z | | `limit` | *Nullable[float]* | :heavy_check_mark: | Spending limit for the API key in USD | 100 | | `limit_remaining` | *Nullable[float]* | :heavy_check_mark: | Remaining spending limit in USD | 74.5 | | `limit_reset` | *Nullable[str]* | :heavy_check_mark: | Type of limit reset for the API key | monthly | diff --git a/docs/operations/updatekeysresponse.mdx b/docs/operations/updatekeysresponse.mdx index 8bd3a4f5..9440f9f6 100644 --- a/docs/operations/updatekeysresponse.mdx +++ b/docs/operations/updatekeysresponse.mdx @@ -7,6 +7,6 @@ API key updated successfully ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `data` | [operations.UpdateKeysData](../operations/updatekeysdata.mdx) | :heavy_check_mark: | The updated API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"external_user": null,
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [operations.UpdateKeysData](../operations/updatekeysdata.mdx) | :heavy_check_mark: | The updated API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"external_user": null,
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"last_used_at": "2026-09-15T15:45:00Z",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 1a6ea457..112fa9a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openrouter" -version = "1.3.25" +version = "1.3.26" 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 f0da1b70..235db3ae 100644 --- a/src/openrouter/_version.py +++ b/src/openrouter/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "openrouter" -__version__: str = "1.3.25" +__version__: str = "1.3.26" __openapi_doc_version__: str = "1.0.0" __gen_version__: str = "2.914.0" -__user_agent__: str = "speakeasy-sdk/python 1.3.25 2.914.0 1.0.0 openrouter" +__user_agent__: str = "speakeasy-sdk/python 1.3.26 2.914.0 1.0.0 openrouter" try: if __package__ is not None: diff --git a/src/openrouter/operations/createkeys.py b/src/openrouter/operations/createkeys.py index 2fe95efb..90b84583 100644 --- a/src/openrouter/operations/createkeys.py +++ b/src/openrouter/operations/createkeys.py @@ -302,6 +302,8 @@ class CreateKeysDataTypedDict(TypedDict): r"""Whether to include external BYOK usage in the credit limit""" label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" limit: Nullable[float] r"""Spending limit for the API key in USD""" limit_remaining: Nullable[float] @@ -362,6 +364,9 @@ class CreateKeysData(BaseModel): label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" + limit: Nullable[float] r"""Spending limit for the API key in USD""" @@ -403,6 +408,7 @@ def serialize_model(self, handler): "creator_user_id", "expires_at", "external_user", + "last_used_at", "limit", "limit_remaining", "limit_reset", diff --git a/src/openrouter/operations/getkey.py b/src/openrouter/operations/getkey.py index ceb137da..924bb00e 100644 --- a/src/openrouter/operations/getkey.py +++ b/src/openrouter/operations/getkey.py @@ -176,6 +176,8 @@ class GetKeyDataTypedDict(TypedDict): r"""Whether to include external BYOK usage in the credit limit""" label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" limit: Nullable[float] r"""Spending limit for the API key in USD""" limit_remaining: Nullable[float] @@ -236,6 +238,9 @@ class GetKeyData(BaseModel): label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" + limit: Nullable[float] r"""Spending limit for the API key in USD""" @@ -277,6 +282,7 @@ def serialize_model(self, handler): "creator_user_id", "expires_at", "external_user", + "last_used_at", "limit", "limit_remaining", "limit_reset", diff --git a/src/openrouter/operations/list.py b/src/openrouter/operations/list.py index bec5a577..7e0c0023 100644 --- a/src/openrouter/operations/list.py +++ b/src/openrouter/operations/list.py @@ -207,6 +207,8 @@ class ListDataTypedDict(TypedDict): r"""Whether to include external BYOK usage in the credit limit""" label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" limit: Nullable[float] r"""Spending limit for the API key in USD""" limit_remaining: Nullable[float] @@ -265,6 +267,9 @@ class ListData(BaseModel): label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" + limit: Nullable[float] r"""Spending limit for the API key in USD""" @@ -306,6 +311,7 @@ def serialize_model(self, handler): "creator_user_id", "expires_at", "external_user", + "last_used_at", "limit", "limit_remaining", "limit_reset", diff --git a/src/openrouter/operations/updatekeys.py b/src/openrouter/operations/updatekeys.py index 970481df..3862d925 100644 --- a/src/openrouter/operations/updatekeys.py +++ b/src/openrouter/operations/updatekeys.py @@ -256,6 +256,8 @@ class UpdateKeysDataTypedDict(TypedDict): r"""Whether to include external BYOK usage in the credit limit""" label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" limit: Nullable[float] r"""Spending limit for the API key in USD""" limit_remaining: Nullable[float] @@ -316,6 +318,9 @@ class UpdateKeysData(BaseModel): label: str r"""Human-readable label for the API key""" + last_used_at: Nullable[datetime] + r"""ISO 8601 UTC timestamp of the most recent usage recorded for the API key, or null if no usage has been recorded since the end of 2025""" + limit: Nullable[float] r"""Spending limit for the API key in USD""" @@ -357,6 +362,7 @@ def serialize_model(self, handler): "creator_user_id", "expires_at", "external_user", + "last_used_at", "limit", "limit_remaining", "limit_reset", diff --git a/uv.lock b/uv.lock index 0888773f..cdc856ea 100644 --- a/uv.lock +++ b/uv.lock @@ -213,7 +213,7 @@ wheels = [ [[package]] name = "openrouter" -version = "1.3.25" +version = "1.3.26" source = { editable = "." } dependencies = [ { name = "httpcore" },