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).
- 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. |
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
{
"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.
{
"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.
Ejemplos
curl
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)
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)
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);