diff --git a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/MimeTypeDetector.java b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/MimeTypeDetector.java
index c82ce4d9bc..141550fbb3 100644
--- a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/MimeTypeDetector.java
+++ b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/MimeTypeDetector.java
@@ -35,6 +35,7 @@
*
image/gif
* image/png
* image/jpeg
+ * image/webp
* video/mov
* video/mpeg
* video/mp4
@@ -109,6 +110,7 @@ public static MimeType getMimeType(String path) {
GEMINI_MIME_TYPES.put("jpeg", MimeTypeUtils.IMAGE_JPEG);
GEMINI_MIME_TYPES.put("jpg", MimeTypeUtils.IMAGE_JPEG);
GEMINI_MIME_TYPES.put("gif", MimeTypeUtils.IMAGE_GIF);
+ GEMINI_MIME_TYPES.put("webp", MimeTypeUtils.parseMimeType("image/webp"));
GEMINI_MIME_TYPES.put("mov", new MimeType("video", "mov"));
GEMINI_MIME_TYPES.put("mp4", new MimeType("video", "mp4"));
GEMINI_MIME_TYPES.put("mpg", new MimeType("video", "mpg"));
diff --git a/models/spring-ai-google-genai/src/test/java/org/springframework/ai/google/genai/MimeTypeDetectorTests.java b/models/spring-ai-google-genai/src/test/java/org/springframework/ai/google/genai/MimeTypeDetectorTests.java
index 4018b7b330..3982c79122 100644
--- a/models/spring-ai-google-genai/src/test/java/org/springframework/ai/google/genai/MimeTypeDetectorTests.java
+++ b/models/spring-ai-google-genai/src/test/java/org/springframework/ai/google/genai/MimeTypeDetectorTests.java
@@ -101,7 +101,7 @@ void getMimeTypeByStringWithInvalidInputShouldThrowException(String invalidPath)
}
@ParameterizedTest
- @ValueSource(strings = { "JPG", "PNG", "GIF" })
+ @ValueSource(strings = { "JPG", "PNG", "GIF", "WEBP" })
void getMimeTypeByStringWithUppercaseExtensionsShouldWork(String uppercaseExt) {
String upperFileName = "test." + uppercaseExt;
String lowerFileName = "test." + uppercaseExt.toLowerCase();
@@ -118,7 +118,7 @@ void getMimeTypeByStringWithUppercaseExtensionsShouldWork(String uppercaseExt) {
}
@ParameterizedTest
- @ValueSource(strings = { "test.jpg", "test.png", "test.gif" })
+ @ValueSource(strings = { "test.jpg", "test.png", "test.gif", "test.webp" })
void getMimeTypeSupportedFileAcrossDifferentMethodsShouldBeConsistent(String fileName) {
MimeType stringResult = MimeTypeDetector.getMimeType(fileName);
MimeType fileResult = MimeTypeDetector.getMimeType(new File(fileName));
diff --git a/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModel.java b/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModel.java
index afa116f142..0a099c1e65 100644
--- a/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModel.java
+++ b/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModel.java
@@ -78,7 +78,8 @@ public class VertexAiMultimodalEmbeddingModel implements DocumentEmbeddingModel
private static final MimeType VIDEO_MIME_TYPE = MimeTypeUtils.parseMimeType("video/*");
private static final List SUPPORTED_IMAGE_MIME_SUB_TYPES = List.of(MimeTypeUtils.IMAGE_JPEG,
- MimeTypeUtils.IMAGE_GIF, MimeTypeUtils.IMAGE_PNG, MimeTypeUtils.parseMimeType("image/bmp"));
+ MimeTypeUtils.IMAGE_GIF, MimeTypeUtils.IMAGE_PNG, MimeTypeUtils.parseMimeType("image/bmp"),
+ MimeTypeUtils.parseMimeType("image/webp"));
private static final Map KNOWN_EMBEDDING_DIMENSIONS = Stream
.of(VertexAiMultimodalEmbeddingModelName.values())