لم تُترجَم هذه الصفحة إلى العربية بعد. يتم عرض النص الإنجليزي الأصلي.
Multimodal inputs
Sending images alongside text
Some models accept images as part of a message. The wire format is the standard OpenAI content-parts array, so any client that can send images to an OpenAI-compatible endpoint can send them to us unchanged.
Image input is the only extra modality we support. There is no image, video, audio, or speech output — those endpoints return 404 not_supported. See Unsupported endpoints.
Which models accept images
Only models whose architecture.input_modalities contains "image". Ask the catalog rather than guessing:
curl "https://openrouter.myip.co.kr/api/v1/models?input_modalities=text,image"Today that is google/gemma-4-26b-a4b, our default model, served from our own GPU. lgai/exaone-4.0-32b is text-only; sending it an image part will not work.
Message format
Replace the string content with an array of parts. Each part is either {"type": "text", …} or {"type": "image_url", …}:
{
"model": "google/gemma-4-26b-a4b",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "이 이미지에서 보이는 것을 한국어로 설명해 줘." },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}
]
}The url may be a public HTTPS URL or a data: URI with base64 content. A data URI is the safer choice: it does not require the model host to be able to reach your server, and it does not leak the image URL anywhere.
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA…Multiple images in one message are allowed — put several image_url parts in the array — as long as the whole prompt fits the model's context window.
Examples
IMAGE_B64=$(base64 -w0 photo.jpg)
curl https://openrouter.myip.co.kr/api/v1/chat/completions \
-H "Authorization: Bearer $MYIP_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<JSON
{
"model": "google/gemma-4-26b-a4b",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "이 사진을 한 문장으로 설명해 줘." },
{ "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,$IMAGE_B64" } }
]
}]
}
JSONHow images are billed
An image is converted to tokens by the model's own processor, and those tokens arrive in usage.prompt_tokens. We bill them at the model's normal input rate — ₩30 / 1M tokens for google/gemma-4-26b-a4b. There is no separate per-image charge; pricing.image in the catalog is always "0" because we have no such billing line.
The practical consequence is that images are not free and not cheap: a high-resolution photo can be worth hundreds of prompt tokens. Downscale before sending if you do not need the detail.
What is not supported
| You might expect | Reality |
|---|---|
| Image generation | Not implemented. /images/* returns 404 not_supported |
| Audio input or output, TTS, STT | Not implemented. /audio/* returns 404 not_supported |
| Video input | Not implemented |
| PDF or file attachments | Not implemented. We do not run the file-parsing plugins some gateways offer — plugins in the request body is discarded. Extract the text yourself, or render the pages to images |
If your prompt is too large once images are added, nothing shrinks it for you. See Message transforms for how to fit a conversation into the context window yourself.
آخر تحديث ٠٥/٠٩/٢٠٢٦