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

# SDK de navegador

> Señales de dispositivo en checkout con claves clm_pub_* — SDK v1.3.0

El SDK de navegador (**v1.3.0**) recopila **señales de dispositivo y sesión** en páginas de checkout. **No** reemplaza [assess](/es/guides/realtime-assessment) del lado del servidor — tu backend debe seguir llamando `POST /api/v1/assess` con **`clm_sk_*`** antes del capture.

## Cargar el script

**Producción:**

```html theme={null}
<script
  src="https://api.clausum.ai/sdk/clausum.js"
  data-clausum-key="clm_pub_xxxxxxxx"
  data-clausum-api-url="https://api.clausum.ai/api/v1/assess"
  defer
></script>
```

**Sandbox:**

```html theme={null}
<script
  src="https://sandbox.clausum.ai/sdk/clausum.js"
  data-clausum-key="clm_pub_sbx_xxxxxxxx"
  data-clausum-api-url="https://sandbox.clausum.ai/api/v1/assess"
  defer
></script>
```

Atributo alias: `data-clausum-api-url` (igual que `data-clausum-api-url` en la etiqueta script).

## Inicializar manualmente

```javascript theme={null}
Clausum.init({
  apiKey: "clm_pub_xxxxxxxx",
  apiUrl: "https://api.clausum.ai/api/v1/assess",
  debug: false,
});
```

## Assess en el navegador

```javascript theme={null}
const result = await Clausum.assess({
  amount: 4500,
  currency: "USD",
  email: "buyer@example.com",
});

if (result.shouldDecline || result.decision === "decline") {
  /* stop checkout */
}

// PSP metadata
const sessionId = result.sessionId || Clausum.getSessionId();
```

### Helpers de respuesta v1.3

| Campo / helper | Significado |
| - | - |
| `recommended_action` | `block_payment`, `step_up_verification`, `allow_with_monitoring`, … |
| `protection_scope` | Org de reglas, conteos de reglas/blocklists activas (debug) |
| `shouldDecline` / `requiresChallenge` | Booleanos de conveniencia |

## Handoff al servidor (v1.3)

Pasa las señales del navegador a assess en tu backend:

```javascript theme={null}
const handoff = Clausum.getHandoffPayload({
  amount: 4500,
  currency: "USD",
  email: "buyer@example.com",
  metadata: { order_id: "ORD-1" },
});

// POST handoff + device.ip from your server to POST /api/v1/assess
```

Fragmentos listos para copiar: **Panel de Control → Conexiones → Prevención (SDK)** (pestañas Checkout, Handoff, Outcome).

## Resultados post-pago

El SDK **no** llama APIs de outcome. Desde tu servidor usa [Outcome de assess](/es/guides/assess-outcome-feedback) (`POST /api/v1/assess/outcome`, solo `clm_sk_*`).

## CSP

Permite la carga del script desde tu host Clausum en `script-src` si usas una Content-Security-Policy estricta.

## Relacionado

* [Evaluación en tiempo real](/es/guides/realtime-assessment)
* [Feedback de outcome de assess](/es/guides/assess-outcome-feedback)
* [Claves API](/es/guides/api-keys)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.