Vision-capable models can analyze images sent via URL or base64 encoding. The Responses API uses input_image type, while Chat Completions uses image_url.
Two transports, one cost
Vision pricing is computed from the encoded image (dimensions × detail tiles) — not from how the bytes reached the API. URL is convenient when the image is already on a public host (S3, R2, your CDN); base64 is convenient when the image is private or generated locally. They cost the same.
For local development, base64 is the path of least resistance. For production with public CDN, URL keeps your request bodies small. Either way, the model sees the same pixels.