La API de Klevy
Klevy ejecuta operaciones contra portales y organismos chilenos, medido por uso. Hay una sola primitiva, el run, y todo lo demás —widget, catálogo, webhooks— es empaque sobre ella.
run = (flujo, credencial, parámetros) → resultado normalizado + documento + evento de uso Las dos puertas de entrada
Cuál usar lo decide una sola pregunta: ¿hace falta la clave del titular? Ambas caen en el mismo núcleo de ejecución, así que el resultado es idéntico.
Servidor a servidor
Cuando el flujo sólo necesita un RUT, o ya tienes un credential_ref de una
captura anterior. Llamas a POST /v1/runs y listo.
curl -X POST https://api.klevy.cl/v1/runs \
-H 'authorization: Bearer sk_live_tu_api_key' \
-H 'idempotency-key: pedido-4821' \
-H 'content-type: application/json' \
-d '{
"flow": "registro_civil.anotaciones_vehiculo",
"params": { "patente": "KXJT52" },
"wait_ms": 10000
}'
Responde 200 si alcanzó a terminar dentro de wait_ms y
202 si sigue en la cola — en ese caso el resultado llega por webhook.
Widget
Cuando el titular tiene que entregar su clave. Abres una sesión, llevas a la persona al
widget_url, y el widget hace una sola cosa: convertir la clave en un
credential_ref. Una captura, N runs.
curl -X POST https://api.klevy.cl/v1/sessions \
-H 'authorization: Bearer sk_live_tu_api_key' \
-H 'content-type: application/json' \
-d '{
"flows": [
{ "flow": "sii.rcv_resumen",
"params": { "rut": "76192083-9", "periodo": "202607", "operacion": "compra" } },
{ "flow": "sii.rcv_detalle",
"params": { "rut": "76192083-9", "periodo": "202607", "operacion": "compra" } }
],
"subject_rut": "76192083-9",
"credential_policy": "stored",
"webhook_url": "https://tu-sistema.cl/webhooks/klevy"
}'
La credencial que exigen los flujos decide qué pantalla se abre: los de
CT abren el widget de empresas (RUT de la empresa + Clave Tributaria del SII),
los de CU el de personas (ClaveÚnica).
Las tres reglas que sostienen el diseño
- La credencial nunca circula. Sólo circula el
credential_ref. El secreto se descifra en el instante del login y vive en memoria hasta que termina el run. - La cola es transporte, no estado. La fuente de verdad es la base de datos; un run no se pierde aunque se vacíe la cola.
- Un run fallido no se factura. El evento de uso se escribe en la misma transacción que marca el run como exitoso, y un índice único impide cobrarlo dos veces.
Ambientes
No hay dos infraestructuras: el ambiente es una propiedad de la API key.
sk_test_… ejecuta con datos de prueba y no toca ningún portal;
sk_live_… ejecuta de verdad. El contrato de respuesta es el mismo, así que
puedes construir tu integración completa contra el sandbox.
Por dónde seguir
- Autenticación — las dos credenciales y dónde va cada una.
- Catálogo de flujos — qué se puede pedir y qué clave exige.
- Crear un run — la referencia del endpoint principal.
- Webhooks — cómo llega el resultado cuando no esperas.
- Errores — el catálogo cerrado y cuáles conviene reintentar.