Providers

OpenRouter

OpenRouter enruta solicitudes a muchos modelos mediante una API y una clave. Es compatible con OpenAI, por lo que OpenClaw se comunica con él mediante el mismo transporte de estilo openai-completions utilizado para otros proveedores proxy.

Primeros pasos

OAuth

  • Ejecutar la incorporación mediante OAuth

    bash
    openclaw onboard --auth-choice openrouter-oauth

    OpenClaw abre el flujo de inicio de sesión de OpenRouter en el navegador (PKCE), intercambia el código por una clave de API de OpenRouter y la almacena en el perfil de autenticación predeterminado de OpenRouter. En hosts remotos o sin interfaz gráfica, OpenClaw muestra la URL de inicio de sesión y solicita que se pegue la URL de redirección después de iniciar sesión.

  • (Opcional) Cambiar a un modelo específico

    La incorporación usa openrouter/auto de forma predeterminada. Se puede elegir un modelo concreto más adelante:

    bash
    openclaw models set openrouter/<provider>/<model>
  • Clave de API

  • Obtener la clave de API

    Cree una clave de API en openrouter.ai/keys.

  • Ejecutar la incorporación mediante clave de API

    bash
    openclaw onboard --auth-choice openrouter-api-key
  • (Opcional) Cambiar a un modelo específico

    La incorporación usa openrouter/auto de forma predeterminada. Se puede elegir un modelo concreto más adelante:

    bash
    openclaw models set openrouter/<provider>/<model>
  • Ejemplo de configuración

    json5
    {  env: { OPENROUTER_API_KEY: "sk-or-..." },  agents: {    defaults: {      model: { primary: "openrouter/auto" },    },  },}

    Referencias de modelos

    Modelos alternativos incluidos, utilizados cuando el descubrimiento del catálogo en vivo no está disponible:

    Referencia del modelo Notas
    openrouter/auto Enrutamiento automático de OpenRouter
    openrouter/moonshotai/kimi-k2.6 Kimi K2.6 mediante MoonshotAI
    openrouter/moonshotai/kimi-k2.5 Kimi K2.5 mediante MoonshotAI

    Cualquier otra referencia openrouter/<provider>/<model>, incluida openrouter/openrouter/fusion (véase Enrutador Fusion), se resuelve dinámicamente mediante el catálogo de modelos en vivo de OpenRouter.

    Generación de imágenes

    OpenRouter puede respaldar la herramienta image_generate. Configure un modelo de imágenes de OpenRouter en agents.defaults.mediaModels.image:

    json5
    {  env: { OPENROUTER_API_KEY: "sk-or-..." },  agents: {    defaults: {      imageGenerationModel: {        primary: "openrouter/google/gemini-3.1-flash-image-preview",        timeoutMs: 180_000,      },    },  },}

    OpenClaw envía solicitudes de imágenes a la API de imágenes de finalizaciones de chat de OpenRouter con modalities: ["image", "text"]. Los modelos de imágenes Gemini reciben además indicaciones aspectRatio y resolution mediante image_config de OpenRouter; los demás modelos de imágenes no. Utilice agents.defaults.mediaModels.image.timeoutMs para modelos más lentos; el valor timeoutMs por llamada de la herramienta image_generate sigue teniendo prioridad.

    Generación de vídeo

    OpenRouter puede respaldar la herramienta video_generate mediante su API asíncrona /videos. Configure un modelo de vídeo de OpenRouter en agents.defaults.mediaModels.video:

    json5
    {  env: { OPENROUTER_API_KEY: "sk-or-..." },  agents: {    defaults: {      videoGenerationModel: {        primary: "openrouter/google/veo-3.1-fast",      },    },  },}

    OpenClaw envía tareas de texto a vídeo e imagen a vídeo, consulta periódicamente el polling_url devuelto y descarga el vídeo terminado desde unsigned_urls de OpenRouter o desde el endpoint de contenido de la tarea. Las imágenes de referencia se usan de forma predeterminada como fotogramas iniciales o finales; las imágenes etiquetadas con reference_image se envían en su lugar como referencias de entrada. El valor predeterminado incluido google/veo-3.1-fast admite duraciones de 4/6/8 segundos, resoluciones 720P/1080P y relaciones de aspecto 16:9/9:16. No se admite la conversión de vídeo a vídeo: la API ascendente solo acepta referencias de texto e imágenes.

    Generación de música

    OpenRouter puede respaldar la herramienta music_generate mediante la salida de audio de finalizaciones de chat. Configure un modelo de audio de OpenRouter en agents.defaults.mediaModels.music:

    json5
    {  env: { OPENROUTER_API_KEY: "sk-or-..." },  agents: {    defaults: {      musicGenerationModel: {        primary: "openrouter/google/lyria-3-pro-preview",        timeoutMs: 180_000,      },    },  },}

    El proveedor de música de OpenRouter incluido usa google/lyria-3-pro-preview de forma predeterminada y también expone google/lyria-3-clip-preview. OpenClaw envía modalities: ["text", "audio"], transmite la respuesta, recopila los fragmentos de audio y guarda el resultado como contenido multimedia generado para entregarlo al canal. Los modelos Lyria aceptan una imagen de referencia mediante el parámetro compartido music_generate image=.... El audio en streaming, la conservación de la transcripción y el sobre de eventos SSE derivado están limitados por agents.defaults.mediaMaxMb (el límite de audio predeterminado es de 16 MB).

    Texto a voz

    OpenRouter puede actuar como proveedor de TTS mediante su endpoint /audio/speech compatible con OpenAI.

    json5
    {  tts: {    auto: "always",    provider: "openrouter",    providers: {      openrouter: {        model: "hexgrad/kokoro-82m",        speakerVoice: "af_alloy",        responseFormat: "mp3",      },    },  },}

    Si se omite tts.providers.openrouter.apiKey, TTS recurre a models.providers.openrouter.apiKey y después a OPENROUTER_API_KEY.

    Voz a texto (audio entrante)

    OpenRouter puede transcribir archivos adjuntos entrantes de voz o audio mediante la ruta compartida tools.media.audio, utilizando su endpoint de STT (/audio/transcriptions). Esto se aplica a cualquier plugin de canal que reenvíe voz o audio entrante a la comprobación preliminar de comprensión multimedia.

    json5
    {  tools: {    media: {      audio: {        enabled: true,        models: [{ provider: "openrouter", model: "openai/whisper-large-v3-turbo" }],      },    },  },}

    OpenClaw envía las solicitudes de STT de OpenRouter como JSON con audio en base64 en input_audio (el contrato de STT de OpenRouter), no como cargas de formularios multipart de OpenAI.

    Enrutador Fusion

    OpenRouter Fusion envía una referencia de modelo de OpenClaw a varios modelos de OpenRouter en paralelo, hace que OpenRouter evalúe sus respuestas y devuelve una respuesta final mediante el endpoint habitual de OpenRouter. El slug del modelo ascendente es openrouter/fusion, por lo que la referencia de modelo de OpenClaw contiene tanto el prefijo del proveedor de OpenClaw como el espacio de nombres ascendente de OpenRouter:

    bash
    openclaw models set openrouter/openrouter/fusion

    Configure el panel y el evaluador de Fusion mediante params.extraBody del modelo; esos campos se reenvían directamente al cuerpo de la solicitud de finalizaciones de chat de OpenRouter. Fusion funciona con la incorporación mediante OAuth o clave de API; si se utiliza OAuth, omita la línea env.OPENROUTER_API_KEY siguiente.

    json5
    {  env: { OPENROUTER_API_KEY: "sk-or-..." },  agents: {    defaults: {      model: { primary: "openrouter/openrouter/fusion" },      models: {        "openrouter/openrouter/fusion": {          params: {            extraBody: {              plugins: [                {                  id: "fusion",                  analysis_models: [                    "google/gemini-3.5-flash",                    "moonshotai/kimi-k2.6",                    "deepseek/deepseek-v4-pro",                  ],                  model: "google/gemini-3.5-flash",                },              ],            },          },        },      },    },  },}

    analysis_models es el panel paralelo; model en la configuración del plugin Fusion es el modelo evaluador. No establezca tool_choice de nivel superior en "required" durante turnos normales del agente o del chat para intentar forzar Fusion: los turnos de OpenClaw pueden incluir sus propias definiciones de herramientas y una elección obligatoria de herramienta de nivel superior puede seleccionar una de ellas en lugar del enrutador Fusion. Cuando esta configuración del plugin Fusion está presente, OpenClaw añade una nota depurada al prompt del sistema que enumera los modelos de análisis configurados y el modelo evaluador, para que el agente pueda responder preguntas sobre su propio panel Fusion. Los demás campos extraBody no se copian al prompt.

    Fusion es más lento por diseño: OpenRouter distribuye el prompt entre varios modelos de análisis y después ejecuta un paso de evaluación y síntesis, por lo que la latencia es mayor que la de una solicitud directa a un único modelo. Utilícelo para respuestas deliberadas y de alta calidad o rutas de escalamiento, no como opción predeterminada cuando la latencia sea crítica. Mantenga el panel pequeño y elija modelos de análisis y evaluación más rápidos para obtener respuestas más rápidas.

    Pruebe una referencia configurada con una llamada local única:

    bash
    openclaw infer model run --local \  --model openrouter/openrouter/fusion \  --prompt "Responde exactamente con: FUSION_OK" \  --json

    Autenticación y encabezados

    OpenRouter utiliza un token Bearer procedente de la clave de API. OAuth de OpenRouter es un flujo de inicio de sesión PKCE que emite una clave de API de OpenRouter, por lo que OpenClaw almacena el resultado en el mismo perfil de autenticación mediante clave de API openrouter:default utilizado por la configuración manual de la clave de API.

    Para iniciar sesión o rotar la clave almacenada en una instalación existente sin volver a ejecutar toda la incorporación:

    bash
    openclaw models auth login --provider openrouter --method oauthopenclaw models auth login --provider openrouter --method api-key

    En las solicitudes verificadas de OpenRouter (https://openrouter.ai/api/v1), OpenClaw añade los encabezados documentados de atribución de aplicaciones de OpenRouter:

    Encabezado Valor
    HTTP-Referer https://openclaw.ai
    X-OpenRouter-Title OpenClaw
    X-OpenRouter-Categories cli-agent,cloud-agent,programming-app,creative-writing,writing-assistant,general-chat,personal-agent

    Configuración avanzada

    Almacenamiento en caché de respuestas

    El almacenamiento en caché de respuestas de OpenRouter es opcional. Actívelo para cada modelo:

    json5
    {  agents: {    defaults: {      models: {        "openrouter/auto": {          params: {            responseCache: true,            responseCacheTtlSeconds: 300,          },        },      },    },  },}

    OpenClaw envía X-OpenRouter-Cache: true y, cuando está configurado, X-OpenRouter-Cache-TTL. responseCacheClear: true fuerza una actualización para la solicitud actual y almacena la respuesta de sustitución. Se aceptan alias en snake_case (response_cache, response_cache_ttl_seconds, response_cache_clear), así como responseCacheTtl / response_cache_ttl sin el sufijo Seconds.

    Esto es independiente del almacenamiento en caché de prompts del proveedor y de los marcadores cache_control de Anthropic de OpenRouter. Solo se aplica a rutas verificadas openrouter.ai, no a URL base de proxies personalizados.

    Marcadores de caché de Anthropic

    En las rutas verificadas de OpenRouter, las referencias de modelos Anthropic conservan los marcadores cache_control de Anthropic de OpenRouter para mejorar la reutilización de la caché de prompts en los bloques de prompts del sistema o del desarrollador.

    Prefill de razonamiento de Anthropic

    En las rutas verificadas de OpenRouter, las referencias de modelos Anthropic con el razonamiento habilitado descartan los turnos finales de prefill del asistente antes de que la solicitud llegue a OpenRouter, de acuerdo con el requisito de Anthropic de que las conversaciones de razonamiento terminen con un turno del usuario.

    Inyección de pensamiento / razonamiento

    En las rutas compatibles que no son auto, OpenClaw asigna el nivel de pensamiento seleccionado a las cargas útiles de razonamiento del proxy de OpenRouter. openrouter/auto y las indicaciones de modelos no compatibles omiten esa inyección. Las referencias obsoletas openrouter/hunter-alpha también la omiten, porque OpenRouter podría devolver el texto de la respuesta final en los campos de razonamiento de esa ruta retirada.

    Reproducción del razonamiento de DeepSeek V4

    En las rutas verificadas de OpenRouter, openrouter/deepseek/deepseek-v4-flash y openrouter/deepseek/deepseek-v4-pro completan los reasoning_content que faltan en los turnos reproducidos del asistente, lo que mantiene las conversaciones de pensamiento y herramientas con la estructura de seguimiento requerida por DeepSeek V4. OpenClaw envía los valores reasoning.effort compatibles con OpenRouter para estas rutas: xhigh/max se asignan a xhigh; cualquier otro nivel distinto de desactivado se asigna a high.

    Adaptación de solicitudes exclusiva de OpenAI

    OpenRouter se ejecuta mediante la ruta compatible con OpenAI de estilo proxy, por lo que no se reenvía la adaptación de solicitudes exclusiva del OpenAI nativo, como serviceTier, store de Responses, las cargas útiles de compatibilidad con el razonamiento de OpenAI y las indicaciones de caché de prompts.

    Rutas respaldadas por Gemini

    Las referencias de OpenRouter respaldadas por Gemini permanecen en la ruta proxy de Gemini: OpenClaw mantiene allí la depuración de firmas de pensamiento de Gemini, pero no habilita la validación de reproducción nativa de Gemini ni las reescrituras de arranque.

    Metadatos de enrutamiento de proveedores

    OpenRouter admite un objeto de solicitud provider para el enrutamiento del proveedor subyacente. Configure una política predeterminada para todas las solicitudes de modelos de texto de OpenRouter con models.providers.openrouter.params.provider:

    json5
    {  models: {    providers: {      openrouter: {        params: {          provider: {            sort: "latency",            require_parameters: true,            data_collection: "deny",          },        },      },    },  },}

    OpenClaw reenvía ese objeto a OpenRouter como carga útil provider de la solicitud. Utilice los campos snake_case documentados de OpenRouter, incluidos sort, only, ignore, order, allow_fallbacks, require_parameters, data_collection, quantizations, max_price, preferred_max_latency, preferred_min_throughput, zdr y enforce_distillable_text.

    Los parámetros específicos de cada modelo prevalecen sobre el objeto de enrutamiento general del proveedor:

    json5
    {  agents: {    defaults: {      models: {        "openrouter/anthropic/claude-sonnet-4-6": {          params: {            provider: {              order: ["anthropic"],              allow_fallbacks: false,            },          },        },      },    },  },}

    Esto solo se aplica a las rutas de finalización de chat de OpenRouter. Las rutas directas de Anthropic, Google, OpenAI o proveedores personalizados ignoran los parámetros de enrutamiento de OpenRouter.

    Contenido relacionado

    Was this useful?
    On this page

    On this page