# OpenClaw (/es/docs/guides/openclaw)

Usa el asistente personal de IA OpenClaw con los modelos de cheapaimodel mediante un proveedor de modelos personalizado.



OpenClaw agrega servicios compatibles con OpenAI como proveedores personalizados en `models.providers`, dentro de `~/.openclaw/openclaw.json`. Después, los agentes se refieren a los modelos como `cheapaimodel/<model-id>`.

|               | Configuración de OpenClaw                   | Valor                                                                                                                             |
| ------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| Base URL      | `models.providers.cheapaimodel.baseUrl`     | `https://api.cheapaimodel.ai/v1`                                                                                                  |
| Clave de API  | `models.providers.cheapaimodel.apiKey`      | `${CHEAPAIMODEL_API_KEY}`, que contiene tu clave de la página [Claves de API](https://console.cheapaimodel.ai/keys) de la consola |
| ID del modelo | `models.providers.cheapaimodel.models[].id` | `glm-5.3`, o cualquier ID del [catálogo](/es/models)                                                                              |

## Configuración [#set-it-up]

<Steps>
  <Step>
    ### Guarda la clave [#store-the-key]

    Pon la clave en el archivo de entorno global de OpenClaw, que el Gateway lee incluso cuando se ejecuta como servicio en segundo plano:

    ```bash title="~/.openclaw/.env"
    CHEAPAIMODEL_API_KEY=sk-...
    ```

    Si el Gateway ya está en ejecución, reinícialo con `openclaw gateway restart` para que lea el archivo.
  </Step>

  <Step>
    ### Agrega el proveedor [#add-the-provider]

    Combina esto con tu configuración:

    ```json5 title="~/.openclaw/openclaw.json"
    {
      agents: {
        defaults: {
          model: { primary: "cheapaimodel/glm-5.3" },
        },
      },
      models: {
        mode: "merge",
        providers: {
          cheapaimodel: {
            baseUrl: "https://api.cheapaimodel.ai/v1",
            apiKey: "${CHEAPAIMODEL_API_KEY}",
            api: "openai-completions",
            models: [
              {
                id: "glm-5.3",
                name: "GLM-5.3",
                compat: { supportsUsageInStreaming: true },
              },
            ],
          },
        },
      },
    }
    ```

    * `api: "openai-completions"` envía las solicitudes a `/v1/chat/completions`.
    * Agrega una entrada en `models` por cada ID de modelo. `id` es el ID del catálogo; `name` es una etiqueta, y OpenClaw lo exige.
    * Agrega `contextWindow` y `maxTokens` a cada entrada con los datos de la página del modelo, por ejemplo [la página de glm-5.3](/es/models/glm-5.3). Sin ellos, OpenClaw calcula el contexto con su propio valor de respaldo y deja el límite de salida en manos del servidor.
    * `compat.supportsUsageInStreaming` hace que OpenClaw pida el uso de tokens en el streaming, que cheapaimodel sí devuelve (consulta [Streaming](/es/docs/concepts/streaming)). Sin esta opción, OpenClaw estima el uso de contexto y registra `returned no token usage`.

    El Gateway vigila el archivo y aplica el cambio sin reiniciarse.
  </Step>

  <Step>
    ### Verifícalo [#check-it]

    ```bash title="Terminal"
    openclaw models list
    ```

    Debería aparecer `cheapaimodel/glm-5.3`. Para cambiar el modelo predeterminado más adelante, ejecuta `openclaw models set cheapaimodel/<model-id>`.
  </Step>
</Steps>

Los agentes de OpenClaw dependen de la capacidad del modelo para llamar herramientas (tool calling). Si un modelo no maneja bien las herramientas, prueba otro modelo del catálogo.

## Errores comunes [#common-mistakes]

* **OpenClaw advierte que falta `CHEAPAIMODEL_API_KEY`.** El proceso del Gateway no tiene la variable, así que `${CHEAPAIMODEL_API_KEY}` queda sin resolver. Ponla en `~/.openclaw/.env` y reinicia el Gateway.
* **`401`.** La clave es incorrecta, ya venció o se quedó sin presupuesto. Revísala en la consola.
* **La configuración se rechaza con `custom model providers must declare models`.** Un proveedor personalizado necesita un arreglo `models`, y cada entrada necesita tanto `id` como `name`.
* **`404`.** Si el cuerpo es `fault filter abort`, a `baseUrl` le falta `/v1`; si es `Invalid URL (POST /v1/chat/completions/chat/completions)`, `baseUrl` incluye la ruta del endpoint. Usa `https://api.cheapaimodel.ai/v1`.
* **`503` con `model_not_found`.** `id` debe ser un ID del catálogo, escrito exactamente igual. El prefijo `cheapaimodel/` es solo la referencia de modelo de OpenClaw y no se envía.
