Diese Seite ist noch nicht auf Deutsch übersetzt. Es wird das englische Original angezeigt.

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:

bash
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", …}:

json
{
  "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" } }
    ]
  }]
}
JSON

How 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 expectReality
Image generationNot implemented. /images/* returns 404 not_supported
Audio input or output, TTS, STTNot implemented. /audio/* returns 404 not_supported
Video inputNot implemented
PDF or file attachmentsNot 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.

Zuletzt aktualisiert am 05.09.2026