From 97bde89f76d6138adc949f60ec005494c5a89061 Mon Sep 17 00:00:00 2001 From: OpenRouter SDK Bot Date: Fri, 25 Sep 2026 19:38:13 +0000 Subject: [PATCH] chore: update OpenAPI spec [sdk-bot] --- .speakeasy/in.openapi.yaml | 63 +++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index 3d927d93..124561bf 100644 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -23804,7 +23804,9 @@ components: - 'temperature' - 'top_p' - 'max_tokens' + supports_image_reference: false supports_implicit_caching: true + supports_multiple_audio_references: false supports_tool_choice: auto: true function: true @@ -24096,8 +24098,16 @@ components: items: $ref: '#/components/schemas/Parameter' type: 'array' + supports_image_reference: + default: false + description: 'Whether this TTS endpoint accepts an `image_url` reference describing the desired voice. Requests carrying an image reference are only routed to endpoints where this is true.' + type: 'boolean' supports_implicit_caching: type: 'boolean' + supports_multiple_audio_references: + default: false + description: 'Whether this TTS endpoint accepts more than one `input_audio` reference clip per request. Requests carrying several clips are only routed to endpoints where this is true.' + type: 'boolean' supports_tool_choice: $ref: '#/components/schemas/ToolChoiceSupport' supports_voice_cloning: @@ -25743,17 +25753,19 @@ components: - $ref: '#/components/schemas/ContainerAutoEnvironment' - $ref: '#/components/schemas/ContainerReferenceEnvironment' SpeechInputReference: - description: 'Reference content part for stateless voice cloning' + description: 'Reference content part for stateless voice cloning or voice design' discriminator: mapping: + image_url: '#/components/schemas/SpeechInputReferenceImage' input_audio: '#/components/schemas/SpeechInputReferenceAudio' text: '#/components/schemas/SpeechInputReferenceText' propertyName: 'type' oneOf: - $ref: '#/components/schemas/SpeechInputReferenceAudio' - $ref: '#/components/schemas/SpeechInputReferenceText' + - $ref: '#/components/schemas/SpeechInputReferenceImage' SpeechInputReferenceAudio: - description: 'Reference audio input for stateless voice cloning' + description: 'Reference audio input for stateless voice cloning. Up to three parts per request; the Nth audio part is addressable from `input` as `@AudioN` on providers that support multiple references.' example: input_audio: data: 'data:audio/wav;base64,UklGRuQXDABXQVZF...' @@ -25773,7 +25785,7 @@ components: description: 'Reference audio input object' properties: data: - description: 'Base64-encoded reference audio (optionally a data URI). Supported audio formats are provider-specific. Limited to 20 MiB of base64 (15 MiB of decoded audio).' + description: 'Base64-encoded reference audio (optionally a data URI). Supported audio formats are provider-specific. Limited to 20 MiB of base64 (15 MiB of decoded audio). Exactly one of `data` or `url` is required.' example: 'data:audio/wav;base64,UklGRuQXDABXQVZF...' maxLength: 20971520 minLength: 1 @@ -25782,17 +25794,50 @@ components: description: 'Audio format of the reference audio (e.g., wav, mp3). Optional; most providers detect the format from the audio bytes.' example: 'wav' type: 'string' + url: + description: 'Public http(s) URL of the reference audio. OpenRouter downloads it (15 MiB max) and forwards the bytes, never the URL. Exactly one of `data` or `url` is required.' + example: 'https://example.com/reference.wav' + format: 'uri' + maxLength: 2048 + type: 'string' + type: 'object' + SpeechInputReferenceImage: + description: 'Reference image describing the desired voice. Cannot be combined with `input_audio` parts. Only routed to endpoints that support image references.' + example: + image_url: + url: 'data:image/png;base64,iVBORw0KGgo...' + type: 'image_url' + properties: + image_url: + $ref: '#/components/schemas/SpeechInputReferenceImageInput' + type: + enum: + - 'image_url' + type: 'string' required: - - 'data' + - 'type' + - 'image_url' + type: 'object' + SpeechInputReferenceImageInput: + description: 'Reference image input object' + properties: + url: + description: 'JPEG, PNG, or WebP reference image as a base64 data URI or a public http(s) URL. Remote images are downloaded (15 MiB max) and forwarded as bytes, never as the URL.' + example: 'data:image/png;base64,iVBORw0KGgo...' + maxLength: 20971520 + minLength: 1 + type: 'string' + required: + - 'url' type: 'object' SpeechInputReferenceText: - description: 'Transcript of the accompanying reference audio' + description: 'Transcript of an `input_audio` part' example: text: 'I used to rule the world.' type: 'text' properties: text: - description: 'Transcript of the accompanying reference audio.' + description: 'Transcript of an `input_audio` part. With a single clip it may appear before or after the clip; with multiple clips it must immediately follow the clip it transcribes.' example: 'I used to rule the world.' maxLength: 10000 type: 'string' @@ -25818,7 +25863,7 @@ components: example: 'Hello world' type: 'string' input_references: - description: 'Reference content for stateless voice cloning: one `input_audio` part carrying the voice sample, optionally accompanied by one `text` part with its transcript. Only routed to endpoints that support voice cloning.' + description: 'Reference content for stateless voice cloning or voice design. Audio mode: one to three `input_audio` parts, each optionally paired with a `text` part carrying its transcript (a single clip accepts its transcript before or after it; with multiple clips each transcript immediately follows its clip); only routed to endpoints that support voice cloning (and multiple references when more than one part is sent). Image mode: exactly one `image_url` part; only routed to endpoints that support image references. The two modes cannot be mixed. An empty array is treated as no reference.' example: - input_audio: data: 'data:audio/wav;base64,UklGRuQXDABXQVZF...' @@ -33874,7 +33919,9 @@ paths: - 'temperature' - 'top_p' - 'max_tokens' + supports_image_reference: false supports_implicit_caching: true + supports_multiple_audio_references: false supports_voice_cloning: false tag: 'openai' throughput_last_30m: @@ -33911,7 +33958,9 @@ paths: - 'temperature' - 'top_p' - 'max_tokens' + supports_image_reference: false supports_implicit_caching: true + supports_multiple_audio_references: false supports_voice_cloning: false tag: 'openai' throughput_last_30m: