> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thaliq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuracion

> Referencia completa de opciones de configuracion del SDK

## ThaliqConfig

```typescript theme={null}
import { Thaliq } from '@thaliq/sdk';

const thaliq = new Thaliq({
  // --- Requerido ---
  apiKey: 'tq_live_xxx',

  // --- Opcionales ---
  baseUrl: 'https://api.thaliq.com',
  timeout: 30000,
  maxRetries: 2,
  integrationType: 'sdk',
  defaultHeaders: {},
  logger: console,
});
```

### Opciones

| Opcion            | Tipo                     | Default                  | Descripcion                                                                                                         |
| ----------------- | ------------------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| `apiKey`          | `string`                 | *requerido*              | API Key de tu tenant (`tq_live_xxx`)                                                                                |
| `baseUrl`         | `string`                 | `https://api.thaliq.com` | URL base de la API                                                                                                  |
| `agentId`         | `string`                 | (resuelto por API key)   | Agente default para todas las requests del cliente. Si la API key ya apunta a un agente, este campo lo sobreescribe |
| `timeout`         | `number`                 | `30000`                  | Timeout para requests HTTP (ms)                                                                                     |
| `maxRetries`      | `number`                 | `2`                      | Maximo de reintentos automaticos                                                                                    |
| `integrationType` | `'sdk' \| 'widget'`      | `'sdk'`                  | Tipo de integracion (controla que tools/MCP servers estan disponibles segun `requiresAuth`)                         |
| `defaultHeaders`  | `Record<string, string>` | `{}`                     | Headers custom en cada request                                                                                      |
| `logger`          | `Logger`                 | `console`                | Logger personalizado                                                                                                |
| `provider`        | `Provider`               | `ThaliqNativeProvider`   | Provider custom (avanzado)                                                                                          |

<Note>
  **Override por request:** ademas de pasar `agentId` al constructor, podes pasarlo en cada llamada via `chat({ message, agentId })` o `stream({ message, agentId })` para forzar un agente puntual sin cambiar la config global del cliente. Util cuando una sola integracion necesita rutear a varios agentes segun el caso.
</Note>

## Retry

El SDK reintenta automaticamente requests que fallan por errores transitorios:

**Se reintentan:**

* Status 500, 502, 503, 504 (errores de servidor)
* Errores de red (connection reset, timeout)

**No se reintentan:**

* Status 400 (request invalido)
* Status 401, 403 (autenticacion)
* Status 429 (rate limit)

El backoff es exponencial: `baseDelay * 2^attempt` con jitter aleatorio, hasta un maximo de 10 segundos.

## Logger personalizado

Puedes pasar un logger custom que implemente la interfaz `Logger`:

```typescript theme={null}
interface Logger {
  debug(message: string, ...args: unknown[]): void;
  info(message: string, ...args: unknown[]): void;
  warn(message: string, ...args: unknown[]): void;
  error(message: string, ...args: unknown[]): void;
}
```

Ejemplo con un logger que solo muestra errores:

```typescript theme={null}
const thaliq = new Thaliq({
  apiKey: 'tq_live_xxx',
  logger: {
    debug: () => {},
    info: () => {},
    warn: () => {},
    error: (msg, ...args) => console.error('[Thaliq]', msg, ...args),
  },
});
```

## Provider personalizado

Para casos avanzados, puedes implementar tu propio provider:

```typescript theme={null}
import { Thaliq, type Provider } from '@thaliq/sdk';

class MyProvider implements Provider {
  readonly name = 'my-custom';

  async chat(request) {
    // Tu implementacion
  }

  async *stream(request) {
    // Tu implementacion con AsyncIterable
  }
}

const thaliq = new Thaliq({
  apiKey: 'tq_live_xxx',
  provider: new MyProvider(),
});
```

<Info>
  En v1.x, el unico provider disponible es `ThaliqNativeProvider` (que se comunica con la API de Thaliq). En versiones futuras se anadiran providers directos para Anthropic, OpenAI y otros.
</Info>

## Siguiente paso

<CardGroup cols={2}>
  <Card title="Streaming" icon="bolt" href="/sdk/streaming">
    Aprende sobre los 12 tipos de eventos SSE.
  </Card>

  <Card title="Feedback e Insights" icon="thumbs-up" href="/sdk/feedback">
    Califica respuestas y consume insights.
  </Card>

  <Card title="Changelog" icon="clock-rotate-left" href="/sdk/changelog">
    Ver cambios de v1.1 y guia de migracion.
  </Card>
</CardGroup>
