continuedev/continue · error · Error
Unsupported part type: input_audio
Error message
Unsupported part type: input_audio
What it means
The Gemini adapter's message converter explicitly rejects OpenAI-style input_audio content parts — Gemini's inline media conversion only handles text and image_url, and audio is not mapped.
Source
Thrown at packages/openai-adapters/src/apis/Gemini.ts:101
);
}
private _oaiPartToGeminiPart(
part:
| OpenAI.Chat.Completions.ChatCompletionContentPart
| OpenAI.Chat.Completions.ChatCompletionContentPartRefusal,
): GeminiChatContentPart {
switch (part.type) {
case "refusal":
return {
text: part.refusal,
};
case "text":
return {
text: part.text,
};
case "input_audio":
throw new Error("Unsupported part type: input_audio");
case "image_url":
default:
return {
inlineData: {
mimeType: "image/jpeg",
data: (part as ChatCompletionContentPartImage).image_url?.url.split(
",",
)[1],
},
};
}
}
public _convertBody(
oaiBody: ChatCompletionCreateParams,
isV1API: boolean,
includeToolCallIds: boolean,
) {View on GitHub (pinned to 5522c6f44c)
Solutions
- Remove or transcribe input_audio parts before sending to Gemini.
- If audio support exists in the adapter version, upgrade; otherwise use a provider that accepts input_audio (OpenAI, or Gemini native file API with inlineData).
- Convert audio to Gemini's native inlineData/fileData format yourself if the adapter allows raw parts.
Example fix
// before
content: [{ type: 'input_audio', input_audio: { data: b64, format: 'wav' } }]
// after
content: [{ type: 'text', text: await transcribeToText(b64) }] Defensive patterns
Strategy: validation
Validate before calling
const parts = msg.content.filter((p: any) => p.type !== 'input_audio');
Type guard
const isGeminiSafePart = (p: any): boolean => p.type === 'text' || p.type === 'image_url';
Try / catch
catch (e) { if (e.message.includes('input_audio')) return stripAudioAndRetry(); throw e; } Prevention
- Transcribe audio before sending to Gemini.
- Feature-detect multimodal support per provider/model.
When it happens
Trigger: Sending a chat message whose content includes {type: 'input_audio', input_audio: {...}} to the Gemini adapter.
Common situations: Porting OpenAI voice/audio chat code to Gemini; multimodal pipelines that attach audio clips via input_audio and route to a Gemini model.
Related errors
- Unsupported part type: input_audio
- Unsupported tool call type in Gemini: ${toolCall.type}
- no url found
- Failed to fetch Gemini models: ${response.status}
- data.error.message
AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27).
Data as JSON: /api/errors/5f7da1205ffe41a3.
Report an issue: GitHub.