APIMaster.ai
Back to Blog
APIMaster Blog

Solucionar "El modelo no admite entrada de imágenes" en OpenCode — La visión de GPT y Claude no funciona

¿OpenCode no lee tu imagen con GPT o Claude? El modelo admite visión, pero OpenCode solo envía el nombre del archivo. Arréglalo declarando attachment y modalities para gpt-5.5 y modelos Claude en opencode.jsonc.

OpenCodeimage inputVisionGPTClaudeopencode.jsonc

Published 2026-07-14

Quick Answer

Adjuntaste un PNG/JPG en OpenCode, le pediste a GPT o Claude que lo describiera y recibiste algo como "el modelo actual no admite entrada de imágenes" — o el modelo solo menciona el nombre del archivo, no la imagen. En casi todos los casos el modelo admite visión; el problema es que OpenCode nunca envió la imagen como entrada multimodal.

Causa raíz: OpenCode solo reenvía una imagen cuando el modelo está declarado con capacidad de imagen en opencode.jsonc. Sin esa declaración, trata el adjunto como una simple referencia de archivo y descarta los píxeles.

Solución rápida: añade dos campos al modelo en opencode.jsonc y luego reinicia OpenCode:

"attachment": true,
"modalities": {
  "input": ["text", "image"],
  "output": ["text"]
}

Si necesitas un endpoint compatible con OpenAI y con capacidad de visión que funcione hoy con esta configuración, APIMaster ofrece gpt-5.5 y los modelos de visión de Claude en https://apimaster.ai/v1. Configuración completa: guía de configuración de OpenCode.

Cómo se ve este problema

  • Cambias a un modelo GPT o Claude en OpenCode, arrastras una captura de pantalla y preguntas "describe esta imagen".
  • La respuesta es una variación de "no puedo leer imágenes", "este modelo no admite entrada de imágenes", o el modelo responde sobre un nombre de archivo (screenshot.png) en lugar del contenido real.
  • La misma imagen funciona perfectamente cuando la pegas directamente en ChatGPT o Claude.

Esto no es una limitación del modelo ni una clave de API rota. gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 y claude-haiku-4-5 aceptan entrada de imágenes a través de la API Chat Completions compatible con OpenAI. La imagen simplemente nunca salió de OpenCode.

Por qué ocurre

OpenCode decide por modelo si se puede enviar un adjunto, y si ese adjunto puede ser una imagen. Lee esto desde tu configuración de proveedor en opencode.jsonc. Si la entrada de tu modelo se ve así:

"gpt-5.5": {
  "name": "gpt-5.5"
}

…entonces OpenCode no tiene ninguna señal de que el modelo acepte imágenes. Según la versión, o se niega a adjuntar el archivo o pasa solo el nombre del adjunto al texto del prompt. El modelo recibe "[attachment: diagram.png]" — una cadena de texto, no una imagen — y responde correctamente que no se le dio ninguna imagen.

La solución es indicarle a OpenCode dos cosas de forma explícita:

Campo Significado
"attachment": true Este modelo puede recibir adjuntos.
"modalities": { "input": ["text", "image"] } Este modelo acepta entrada de imagen, así que OpenCode convierte el archivo en un bloque de contenido multimodal image_url.

Una vez configurados ambos, OpenCode codifica la imagen en base64 y la envía como entrada de visión correcta — y el modelo la lee.

Cómo solucionarlo

1. Localiza tu opencode.jsonc

SO Ruta
macOS / Linux ~/.config/opencode/opencode.jsonc
Windows C:\Users\<username>\.config\opencode\opencode.jsonc

2. Añade attachment + modalities a cada modelo de visión

Aquí tienes un bloque de proveedor funcional para GPT y Claude en un endpoint compatible con OpenAI:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "apimaster": {
      "name": "APIMaster.ai",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://apimaster.ai/v1"
      },
      "models": {
        "gpt-5.5": {
          "name": "gpt-5.5",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          }
        },
        "claude-sonnet-4-6": {
          "name": "claude-sonnet-4-6",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          }
        }
      }
    }
  }
}

El ejemplo completo que cubre claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 y las variantes de razonamiento está en la guía de configuración de OpenCode. Puedes habilitar la entrada de imágenes para un solo modelo — solo ese modelo necesita los dos campos.

3. Usa la URL base correcta

El host compatible con OpenAI es:

https://apimaster.ai/v1

No uses https://api.apimaster.ai/v1 — el host con prefijo api. puede causar fallos de TLS / conexión.

4. Reinicia OpenCode

Los cambios de configuración se cargan al inicio. Cierra por completo y vuelve a abrir OpenCode, o como mínimo inicia una nueva sesión, o la configuración antigua (ciega a las imágenes) seguirá activa.

5. Prefiere la carga local / base64 en lugar de URLs públicas

Sube un PNG/JPG local en OpenCode — se convierte en una URL de datos base64, que es la vía fiable. Pasar directamente una URL de imagen pública puede fallar, porque el upstream tiene que descargarla y puede toparse con límites de formato, tamaño, MIME o hotlink:

Error while downloading file. Upstream status code: 400.

Si ves esto, cambia a un archivo local / URL de datos base64 en lugar de una URL remota.

Comprueba que funciona

En OpenCode

Cambia a apimaster/gpt-5.5 o apimaster/claude-sonnet-4-6, sube una imagen y pregunta:

Describe the main content of this image.

Una configuración correcta devuelve una descripción real. Si sigue viendo solo un nombre de archivo, faltan los campos attachment / modalities o no se reinició OpenCode.

Directamente vía la API (aísla el problema)

Para confirmar que el endpoint en sí gestiona la visión — separando un problema de configuración de OpenCode de un problema del proveedor — envía una imagen en base64. Nunca escribas una clave real en el código; usa una variable de entorno:

export APIMASTER_API_KEY="tu clave de API de APIMaster"

curl https://apimaster.ai/v1/chat/completions \
  -H "Authorization: Bearer $APIMASTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {
        "role": "user",
        "content": [
          { "type": "text", "text": "Describe this image." },
          {
            "type": "image_url",
            "image_url": { "url": "data:image/png;base64,YOUR_IMAGE_BASE64" }
          }
        ]
      }
    ],
    "max_tokens": 1000
  }'

Cambia model a claude-sonnet-4-6 para probar Claude de la misma manera. Una respuesta 200 que describa la imagen significa que la visión funciona en la capa de la API — así que cualquier fallo restante está en el lado de la configuración de OpenCode.

Mantén tu clave de API a salvo

  • Nunca pongas la clave de API dentro de opencode.jsonc. Ese archivo solo contiene el proveedor, los modelos y las capacidades.
  • Configura la clave a través del flujo /connect de OpenCode, la interfaz Connect Provider o una variable de entorno.
  • No pegues la clave en chats, capturas de pantalla, issues o repositorios públicos. Si se filtra, revócala y regenérala de inmediato en la consola de tu proveedor.

Cómo ayuda APIMaster

Si quieres un único endpoint compatible con OpenAI donde la visión de GPT y Claude "simplemente funcione" con la configuración anterior, APIMaster está diseñado exactamente para esto:

Ventaja Lo que obtienes
Un endpoint, muchos modelos de visión gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 — todos con capacidad de imagen, todos en https://apimaster.ai/v1 con una sola clave.
Descuento Precios del Marketplace hasta ~90% más baratos que las tarifas de lista de OpenAI y ~85% más baratos que las de Claude (precios en vivo en el sitio).
Fidelidad del modelo Un relay barato puede cambiar modelos en silencio — confirma que recibes lo auténtico con la detección de huellas.

Desde $1 de recarga, pago por uso, sin suscripción. La configuración paso a paso completa de OpenCode — incluida la entrada de imágenes — está en la guía de configuración de OpenCode.

Regístrate en APIMaster →

Guías relacionadas

Preguntas frecuentes

¿OpenCode admite entrada de imágenes en absoluto? Sí. OpenCode puede enviar imágenes a cualquier modelo con capacidad de visión, pero debes declarar attachment: true y modalities.input: ["text", "image"] para ese modelo en opencode.jsonc. Sin la declaración, solo envía el nombre del archivo.

¿Qué modelos de APIMaster pueden leer imágenes en OpenCode? gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 y claude-haiku-4-5 aceptan entrada de imágenes. Añade los dos campos de capacidad a cada uno que quieras usar con imágenes.

¿Por qué el modelo solo ve el nombre del archivo? OpenCode no convirtió el adjunto en entrada de imagen — en su lugar puso el nombre del adjunto en el texto del prompt. Esta es la señal reveladora de que faltan los campos attachment / modalities.

Añadí los campos y sigue fallando. ¿Ahora qué? Reinicia OpenCode por completo, inicia una nueva sesión y confirma que el modelo activo es el que configuraste. Luego prueba el endpoint directamente con el curl en base64 de arriba para comprobar si el problema es de OpenCode o del proveedor.

¿Por qué dio error una URL de imagen pública? El upstream tiene que descargar las URLs remotas y puede ser bloqueado por tamaño, formato, MIME o protección hotlink (Error while downloading file. Upstream status code: 400.). Usa una carga local / URL de datos base64 en su lugar.