From 338beb2ce0a7f045e1fc187bc01dde76f927b21e Mon Sep 17 00:00:00 2001 From: OpenRouter SDK Bot Date: Mon, 13 Jul 2026 17:53:25 +0000 Subject: [PATCH] chore: update OpenAPI spec [sdk-bot] --- .speakeasy/in.openapi.yaml | 503 ++++++++++++++++++++++++++++--------- 1 file changed, 385 insertions(+), 118 deletions(-) diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index dec6619..f40b69a 100644 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -199,7 +199,7 @@ components: - $ref: '#/components/schemas/FilesServerTool' - $ref: '#/components/schemas/FusionServerTool_OpenRouter' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - - $ref: '#/components/schemas/ChatSearchModelsServerTool' + - $ref: '#/components/schemas/SearchModelsServerTool_OpenRouter' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter' - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter' @@ -965,6 +965,42 @@ components: - start_block_index - end_block_index type: object + AnthropicCitationSearchResultLocationParam: + example: + cited_text: Example cited text + end_block_index: 1 + search_result_index: 0 + source: example_source + start_block_index: 0 + title: Example Result + type: search_result_location + properties: + cited_text: + type: string + end_block_index: + type: integer + search_result_index: + type: integer + source: + type: string + start_block_index: + type: integer + title: + nullable: true + type: string + type: + enum: + - search_result_location + type: string + required: + - type + - cited_text + - search_result_index + - source + - title + - start_block_index + - end_block_index + type: object AnthropicCitationWebSearchResultLocation: example: cited_text: Example cited text @@ -993,6 +1029,34 @@ components: - title - url type: object + AnthropicCitationWebSearchResultLocationParam: + example: + cited_text: Example cited text + encrypted_index: enc_idx_0 + title: Example Page + type: web_search_result_location + url: https://example.com + properties: + cited_text: + type: string + encrypted_index: + type: string + title: + nullable: true + type: string + type: + enum: + - web_search_result_location + type: string + url: + type: string + required: + - type + - cited_text + - encrypted_index + - title + - url + type: object AnthropicCodeExecution20250825Caller: example: tool_id: toolu_01abc @@ -1607,15 +1671,15 @@ components: char_location: '#/components/schemas/AnthropicCitationCharLocationParam' content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocationParam' page_location: '#/components/schemas/AnthropicCitationPageLocationParam' - search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation' - web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation' + search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocationParam' + web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocationParam' propertyName: type oneOf: - $ref: '#/components/schemas/AnthropicCitationCharLocationParam' - $ref: '#/components/schemas/AnthropicCitationPageLocationParam' - $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam' - - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation' - - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation' + - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocationParam' + - $ref: '#/components/schemas/AnthropicCitationSearchResultLocationParam' nullable: true type: array text: @@ -4596,6 +4660,18 @@ components: - type - grammar type: object + ChatFormatJsonObjectConfig: + description: JSON object response format + example: + type: json_object + properties: + type: + enum: + - json_object + type: string + required: + - type + type: object ChatFormatJsonSchemaConfig: description: JSON Schema response format for structured outputs example: @@ -5026,7 +5102,7 @@ components: discriminator: mapping: grammar: '#/components/schemas/ChatFormatGrammarConfig' - json_object: '#/components/schemas/FormatJsonObjectConfig' + json_object: '#/components/schemas/ChatFormatJsonObjectConfig' json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig' python: '#/components/schemas/ChatFormatPythonConfig' text: '#/components/schemas/ChatFormatTextConfig' @@ -5035,7 +5111,7 @@ components: type: json_object oneOf: - $ref: '#/components/schemas/ChatFormatTextConfig' - - $ref: '#/components/schemas/FormatJsonObjectConfig' + - $ref: '#/components/schemas/ChatFormatJsonObjectConfig' - $ref: '#/components/schemas/ChatFormatJsonSchemaConfig' - $ref: '#/components/schemas/ChatFormatGrammarConfig' - $ref: '#/components/schemas/ChatFormatPythonConfig' @@ -6783,7 +6859,7 @@ components: example: true type: boolean filter_rules: - $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + $ref: '#/components/schemas/ObservabilityFilterRulesConfigNullable' name: description: Human-readable name for the destination. example: Production Langfuse @@ -10041,6 +10117,15 @@ components: - text - phase type: object + ImageInputModality: + enum: + - text + - image + - file + - audio + - video + example: text + type: string ImageModelArchitecture: example: input_modalities: @@ -10052,7 +10137,7 @@ components: input_modalities: description: Supported input modalities items: - $ref: '#/components/schemas/InputModality' + $ref: '#/components/schemas/ImageInputModality' type: array output_modalities: description: Supported output modalities @@ -10768,11 +10853,22 @@ components: - input_video type: string video_url: - $ref: '#/components/schemas/ChatContentVideoInput' + $ref: '#/components/schemas/Legacy_ChatContentVideoInput' required: - type - video_url type: object + Legacy_ChatContentVideoInput: + description: Video input object + example: + url: https://example.com/video.mp4 + properties: + url: + description: 'URL of the video (data: URLs supported)' + type: string + required: + - url + type: object Legacy_WebSearchServerTool: description: Web search tool configuration example: @@ -12570,7 +12666,7 @@ components: - $ref: '#/components/schemas/BashServerTool' - $ref: '#/components/schemas/DatetimeServerTool' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - - $ref: '#/components/schemas/ChatSearchModelsServerTool' + - $ref: '#/components/schemas/MessagesSearchModelsServerTool' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/OpenRouterWebSearchServerTool' - additionalProperties: @@ -12680,6 +12776,22 @@ components: output_tokens: 15 server_tool_use: null service_tier: standard + MessagesSearchModelsServerTool: + description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter' + example: + parameters: + max_results: 5 + type: openrouter:experimental__search_models + properties: + parameters: + $ref: '#/components/schemas/SearchModelsServerToolConfig' + type: + enum: + - openrouter:experimental__search_models + type: string + required: + - type + type: object MessagesStartEvent: description: Event sent at the start of a streaming message example: @@ -13101,34 +13213,7 @@ components: $ref: '#/components/schemas/InputModality' type: array instruct_type: - description: Instruction format type - enum: - - none - - airoboros - - alpaca - - alpaca-modif - - chatml - - claude - - code-llama - - gemma - - llama2 - - llama3 - - mistral - - nemotron - - neural - - openchat - - phi3 - - rwkv - - vicuna - - zephyr - - deepseek-r1 - - deepseek-v3.1 - - qwq - - qwen3 - - null - example: chatml - nullable: true - type: string + $ref: '#/components/schemas/InstructType' modality: description: Primary modality of the model example: text->text @@ -13337,7 +13422,7 @@ components: id: openai/gpt-4 knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-5.4/endpoints + details: /api/v1/models/openai/gpt-4/endpoints name: GPT-4 per_request_limits: null pricing: @@ -13356,11 +13441,31 @@ components: context_length: 8192 is_moderated: true max_completion_tokens: 4096 + links: + next: /api/v1/models?offset=500&limit=500 + total_count: 150 properties: data: $ref: '#/components/schemas/ModelsListResponseData' + links: + description: Pagination links + properties: + next: + description: URL for the next page of results, or null if this is the last page + example: /api/v1/models?offset=500&limit=500 + nullable: true + type: string + required: + - next + type: object + total_count: + description: Total number of models matching the query + example: 150 + type: integer required: - data + - total_count + - links type: object ModelsListResponseData: description: List of available models @@ -13382,7 +13487,7 @@ components: id: openai/gpt-4 knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-5.4/endpoints + details: /api/v1/models/openai/gpt-4/endpoints name: GPT-4 per_request_limits: null pricing: @@ -13953,6 +14058,66 @@ components: - $ref: '#/components/schemas/ObservabilitySnowflakeDestination' - $ref: '#/components/schemas/ObservabilityWeaveDestination' - $ref: '#/components/schemas/ObservabilityWebhookDestination' + ObservabilityFilterRuleGroup: + example: + logic: and + rules: + - field: model + operator: equals + value: openai/gpt-4o + properties: + logic: + default: and + enum: + - and + - or + type: string + rules: + items: + properties: + field: + enum: + - model + - provider + - session_id + - user_id + - api_key_name + - finish_reason + - input + - output + - total_cost + - total_tokens + - prompt_tokens + - completion_tokens + type: string + operator: + enum: + - equals + - not_equals + - contains + - not_contains + - regex + - starts_with + - ends_with + - gt + - lt + - gte + - lte + - exists + - not_exists + type: string + value: + anyOf: + - type: string + - type: number + required: + - field + - operator + type: object + type: array + required: + - rules + type: object ObservabilityFilterRulesConfig: description: Optional structured filter rules controlling which events are forwarded. example: null @@ -13963,59 +14128,22 @@ components: type: boolean groups: items: - properties: - logic: - default: and - enum: - - and - - or - type: string - rules: - items: - properties: - field: - enum: - - model - - provider - - session_id - - user_id - - api_key_name - - finish_reason - - input - - output - - total_cost - - total_tokens - - prompt_tokens - - completion_tokens - type: string - operator: - enum: - - equals - - not_equals - - contains - - not_contains - - regex - - starts_with - - ends_with - - gt - - lt - - gte - - lte - - exists - - not_exists - type: string - value: - anyOf: - - type: string - - type: number - required: - - field - - operator - type: object - type: array - required: - - rules - type: object + $ref: '#/components/schemas/ObservabilityFilterRuleGroup' + type: array + required: + - groups + type: object + ObservabilityFilterRulesConfigNullable: + description: Optional structured filter rules controlling which events are forwarded. + example: null + nullable: true + properties: + enabled: + default: true + type: boolean + groups: + items: + $ref: '#/components/schemas/ObservabilityFilterRuleGroup' type: array required: - groups @@ -20312,7 +20440,7 @@ components: - $ref: '#/components/schemas/FilesServerTool' - $ref: '#/components/schemas/FusionServerTool_OpenRouter' - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter' - - $ref: '#/components/schemas/ChatSearchModelsServerTool' + - $ref: '#/components/schemas/SearchModelsServerTool_OpenRouter' - $ref: '#/components/schemas/WebFetchServerTool' - $ref: '#/components/schemas/WebSearchServerTool_OpenRouter' - $ref: '#/components/schemas/ApplyPatchServerTool_OpenRouter' @@ -20410,6 +20538,22 @@ components: - high example: medium type: string + SearchModelsServerTool_OpenRouter: + description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter' + example: + parameters: + max_results: 5 + type: openrouter:experimental__search_models + properties: + parameters: + $ref: '#/components/schemas/SearchModelsServerToolConfig' + type: + enum: + - openrouter:experimental__search_models + type: string + required: + - type + type: object SearchModelsServerToolConfig: description: Configuration for the openrouter:experimental__search_models server tool example: @@ -22522,7 +22666,7 @@ components: type: boolean filter_rules: allOf: - - $ref: '#/components/schemas/ObservabilityFilterRulesConfig' + - $ref: '#/components/schemas/ObservabilityFilterRulesConfigNullable' - description: Optional structured filter rules. `null` clears the rules. Omitting keeps the current value. name: description: Human-readable name for the destination. @@ -25122,6 +25266,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -25132,6 +25277,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -26723,27 +26869,7 @@ paths: format: double type: number cost_details: - description: Breakdown of upstream inference costs - example: - upstream_inference_completions_cost: 0.0004 - upstream_inference_cost: null - upstream_inference_prompt_cost: 0.0008 - nullable: true - properties: - upstream_inference_completions_cost: - format: double - type: number - upstream_inference_cost: - format: double - nullable: true - type: number - upstream_inference_prompt_cost: - format: double - type: number - required: - - upstream_inference_prompt_cost - - upstream_inference_completions_cost - type: object + $ref: '#/components/schemas/CostDetails' is_byok: description: Whether a request was made using a Bring Your Own Key configuration type: boolean @@ -26903,6 +27029,35 @@ paths: get: description: Returns a list of all available embeddings models and their properties operationId: listEmbeddingsModels + parameters: + - description: Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned + in: query + name: offset + required: false + schema: + default: 0 + description: >- + Number of records to skip for pagination. When both offset and limit are omitted, the full list is + returned + example: 0 + minimum: 0 + nullable: true + type: integer + - description: >- + Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is + returned + in: query + name: limit + required: false + schema: + default: 500 + description: >- + Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is + returned + example: 500 + maximum: 1000 + minimum: 1 + type: integer responses: '200': content: @@ -26967,6 +27122,17 @@ paths: tags: - Embeddings x-speakeasy-name-override: listModels + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit /endpoints/zdr: get: operationId: listEndpointsZdr @@ -27863,6 +28029,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -27873,6 +28040,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -28295,6 +28463,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -28305,6 +28474,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -28548,6 +28718,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -28558,6 +28729,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -28793,6 +28965,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -28803,6 +28976,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -28872,6 +29046,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -28882,6 +29057,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -31016,6 +31192,34 @@ paths: get: operationId: getModels parameters: + - description: Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned + in: query + name: offset + required: false + schema: + default: 0 + description: >- + Number of records to skip for pagination. When both offset and limit are omitted, the full list is + returned + example: 0 + minimum: 0 + nullable: true + type: integer + - description: >- + Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is + returned + in: query + name: limit + required: false + schema: + default: 500 + description: >- + Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is + returned + example: 500 + maximum: 1000 + minimum: 1 + type: integer - description: Filter models by use case category in: query name: category @@ -31408,6 +31612,17 @@ paths: tags: - Models x-speakeasy-name-override: list + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit /models/{author}/{slug}/endpoints: get: operationId: listEndpoints @@ -31586,6 +31801,35 @@ paths: `eu.openrouter.ai/api/v1/...` the results will be filtered to models that satisfy [EU in-region routing](https://openrouter.ai/docs/guides/privacy/provider-logging#enterprise-eu-in-region-routing). operationId: listModelsUser + parameters: + - description: Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned + in: query + name: offset + required: false + schema: + default: 0 + description: >- + Number of records to skip for pagination. When both offset and limit are omitted, the full list is + returned + example: 0 + minimum: 0 + nullable: true + type: integer + - description: >- + Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is + returned + in: query + name: limit + required: false + schema: + default: 500 + description: >- + Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is + returned + example: 500 + maximum: 1000 + minimum: 1 + type: integer responses: '200': content: @@ -31609,7 +31853,7 @@ paths: id: openai/gpt-4 knowledge_cutoff: null links: - details: /api/v1/models/openai/gpt-5.4/endpoints + details: /api/v1/models/openai/gpt-4/endpoints name: GPT-4 per_request_limits: null pricing: @@ -31665,6 +31909,17 @@ paths: tags: - Models x-speakeasy-name-override: listForUser + x-speakeasy-pagination: + inputs: + - in: parameters + name: offset + type: offset + - in: parameters + name: limit + type: limit + outputs: + results: $.data + type: offsetLimit /observability/destinations: get: description: >- @@ -31679,6 +31934,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -31689,6 +31945,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -32106,6 +32363,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -32116,6 +32374,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -32236,6 +32495,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -32246,6 +32506,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -32801,6 +33062,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -32811,6 +33073,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -34413,6 +34676,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -34423,6 +34687,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100 @@ -35068,6 +35333,7 @@ paths: name: offset required: false schema: + default: 0 description: Number of records to skip for pagination example: 0 minimum: 0 @@ -35078,6 +35344,7 @@ paths: name: limit required: false schema: + default: 50 description: Maximum number of records to return (max 100) example: 50 maximum: 100