# POST /api/check

Crea un Check de antecedentes para un RUT, o reutiliza el Check existente del mes calendario actual si ya hay uno.

- **URL completa:** `https://app.chapi.cl/api/check`
- **Método:** `POST`
- **Auth:** `Authorization: Token <token>` o cookie `sessionid` ([más](/docs/api/authentication)).
- **Tag OpenAPI:** `Checks`

## Headers requeridos

| Header | Valor |
|---|---|
| `Authorization` | `Token <token>` (si no usas cookie auth) |
| `Content-Type` | `application/json` |

## Request body

| Campo | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
| `rut` | string | sí | — | RUT a verificar. Patrón: `\d{1,2}\.?\d{3}\.?\d{3}-[\dkK]$`. Ver [Convenciones](/docs/api/conventions). |
| `ai_summary` | boolean | no | `false` | Si `true`, genera adicionalmente un resumen en lenguaje natural del Check (campo `ai_summary` de la respuesta). |

### Ejemplo válido

```json
{
  "rut": "22222222-2",
  "ai_summary": true
}
```

### Ejemplos inválidos

| Body | Resultado |
|---|---|
| `{"rut": "22222222"}` | `400 Invalid RUT` (falta dígito verificador) |
| `{"rut": "abc"}` | `400 Invalid RUT` |
| `{}` | `400 Invalid RUT` (`rut` requerido) |

## Respuestas

### `200 OK`

Devuelve el Check creado o el existente del mes calendario en curso. Schema: `ACheck`.

```json
{
  "id": "5c7e0a1e-3c1d-4e0a-bf5a-2a0a9b1c0d1e",
  "permalink": "https://app.chapi.cl/check/5c7e0a1e-3c1d-4e0a-bf5a-2a0a9b1c0d1e",
  "rut": "22222222-2",
  "name": "Nombre Apellido",
  "data": {
    "causas_penales_count": 0,
    "causas_penales_rut_match_count": 0,
    "causas_penales_name_match_count": 0,
    "causas_civiles_count": 2,
    "causas_laborales_count": 0,
    "causas_sindicales_count": 0,
    "international_sanctions_count": 0,
    "pep": false
  },
  "created_at": "2026-05-01T12:00:00Z",
  "score": { "value": 0.18, "label": "low" },
  "pdf_report_url": "https://app.chapi.cl/checks/5c7e0a1e/report.pdf",
  "ai_summary": "El RUT presenta 2 causas civiles..."
}
```

#### Campos de la respuesta

| Campo | Tipo | Descripción |
|---|---|---|
| `id` | string (uuid) | Identificador único del Check. |
| `permalink` | string (uri) | URL al detalle del Check en el panel `app.chapi.cl`. |
| `rut` | string (≤ 10 chars) | RUT consultado (normalizado). |
| `name` | string | Nombre completo asociado al RUT. |
| `data` | object | Contadores y flags agregados — ver tabla abajo. |
| `created_at` | string (ISO 8601) | Fecha y hora de creación del Check. |
| `score` | object | Score de riesgo — ver tabla abajo. |
| `pdf_report_url` | string (uri) | URL al PDF del reporte. |
| `ai_summary` | string | Resumen en lenguaje natural si `ai_summary=true` en el request; cadena vacía si no. |

#### `data` (CheckData)

| Campo | Tipo | Descripción |
|---|---|---|
| `causas_penales_count` | integer | Total de causas penales detectadas. |
| `causas_penales_rut_match_count` | integer | Causas penales con match exacto por RUT. |
| `causas_penales_name_match_count` | integer | Causas penales con match por nombre (sin RUT). |
| `causas_civiles_count` | integer | Total de causas civiles. |
| `causas_laborales_count` | integer | Total de causas laborales. |
| `causas_sindicales_count` | integer | Total de causas sindicales. |
| `international_sanctions_count` | integer | Coincidencias en listas de sanciones internacionales. |
| `pep` | boolean | `true` si la persona aparece como PEP (Persona Expuesta Políticamente). |

#### `score` (CheckScore)

| Campo | Tipo | Descripción |
|---|---|---|
| `value` | number (double) | Valor numérico del score. |
| `label` | string enum | Exactamente uno de: `"low"`, `"medium"`, `"high"`. |

### Errores

| Código | `message` | Causa |
|---|---|---|
| `400` | `Invalid RUT` | El RUT no calza el regex. |
| `402` | `Insufficient balance` | Saldo de créditos agotado. |
| `404` | `No data found` | No se encontró persona o empresa asociada al RUT. |

Schema de error: `{ "message": "..." }`. Más detalles en [Errores](/docs/api/errors).

## Ejemplos

### curl

```bash
curl -X POST https://app.chapi.cl/api/check \
  -H "Authorization: Token TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"rut": "22222222-2", "ai_summary": true}'
```

### Python (`requests`)

```python
import requests

resp = requests.post(
    "https://app.chapi.cl/api/check",
    headers={"Authorization": "Token TU_TOKEN"},
    json={"rut": "22222222-2", "ai_summary": True},
    timeout=30,
)
resp.raise_for_status()
check = resp.json()
print(check["score"]["label"], check["data"]["causas_penales_count"])
```

### JavaScript (`fetch`)

```javascript
const resp = await fetch("https://app.chapi.cl/api/check", {
  method: "POST",
  headers: {
    "Authorization": "Token TU_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ rut: "22222222-2", ai_summary: true }),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const check = await resp.json();
console.log(check.score.label, check.data.causas_penales_count);
```

---

Última actualización: 2026-05-01
