Summary
The Bedrock Converse API's ImageSource type currently supports only two source types: inline bytes (base64-encoded) and s3Location. There is no support for passing HTTP/HTTPS image URLs directly, unlike the Anthropic Messages API (type: "image" with source.type: "url") and OpenAI's Chat Completions API (type: "image_url" with a URL string).
Problem
When building multi-provider LLM applications, image inputs often originate as HTTP/HTTPS URLs (e.g., CDN-hosted product images, user-uploaded content). With the current Bedrock Converse API, callers must:
- Download the image from the URL
- Base64-encode the bytes
- Pass them inline in the request
Or alternatively:
- Download the image
- Upload it to S3
- Reference the S3 location
This adds latency, increases payload size (base64 encoding inflates data by ~33%), and requires additional application logic that isn't needed with other providers. It also makes it harder to build provider-agnostic LLM clients since Bedrock requires a fundamentally different image input path.
Expected behavior
Support a url source type in ImageSource, allowing callers to pass an HTTP/HTTPS URL directly:
{
"image": {
"format": "png",
"source": {
"url": "https://example.com/images/photo.png"
}
}
}
This would bring Bedrock in line with:
Summary
The Bedrock Converse API's ImageSource type currently supports only two source types:
inline bytes (base64-encoded)ands3Location. There is no support for passing HTTP/HTTPS image URLs directly, unlike the Anthropic Messages API (type: "image" with source.type: "url") and OpenAI's Chat Completions API (type: "image_url" with a URL string).Problem
When building multi-provider LLM applications, image inputs often originate as HTTP/HTTPS URLs (e.g., CDN-hosted product images, user-uploaded content). With the current Bedrock Converse API, callers must:
Or alternatively:
This adds latency, increases payload size (base64 encoding inflates data by ~33%), and requires additional application logic that isn't needed with other providers. It also makes it harder to build provider-agnostic LLM clients since Bedrock requires a fundamentally different image input path.
Expected behavior
Support a url source type in ImageSource, allowing callers to pass an HTTP/HTTPS URL directly:
This would bring Bedrock in line with: