Empezar

Prueba y producción

Diferencias entre modo test y live, y qué consume tokens.

Toda sesión nace en uno de dos modos, y lo decide la clave con la que se creó: sk_test_… crea sesiones test, sk_live_… crea sesiones live.

Qué cambia entre los dos modos

CampoTipoDescripción
Consumo de tokensNo consumeUna sesión test nunca descuenta saldo y nunca falla por falta de él: podés probar el flujo entero con la cuenta en cero.
Configuración del proyectoPuntero propioEl proyecto tiene una versión activa en test y otra en live. Si no publicaste config en el modo de tu clave, crear una sesión falla con 422.
Cuenta pendiente de aprobaciónTambién bloqueadaLa API pública exige que la cuenta esté activa para cualquier clave. En el dashboard sí podés armar proyectos y flujos mientras esperás.
WebhooksMismos endpointsLos endpoints son por cuenta, no por modo: el mismo destino recibe los eventos de las dos. Filtrá por data.object.mode.
Flujo de la personaIdénticoMismos pasos, mismos validadores, mismos reason codes. El modo no relaja las reglas de decisión.

Qué consume tokens

El consumo es prepago y por sesión, no por request de API:

  • se descuenta al crear la sesión, no al terminarla;
  • se descuenta una sola vez por sesión, sin importar cuántos reintentos haga la persona dentro del flujo;
  • no se devuelve si la persona abandona, si el link expira o si cancelás la sesión: el costo de los proveedores ya se incurrió.

Lo que no consume tokens: consultar sesiones, listar, cancelar, administrar webhook endpoints, disparar una prueba de webhook, re-entregar un evento, consultar uso o exportar el CSV.

Cómo se calcula el costo de una sesión

El costo se computa al publicar la configuración del proyecto y queda congelado en esa versión. Una sesión se cobra al precio vigente cuando se publicó el flujo, no al de hoy: cambiar la matriz de precios no re-tarifa las versiones ya publicadas.

Estos son los valores por defecto de la plataforma. Tu cuenta puede tener otros acordados; el costo efectivo de tu flujo lo ves en el dashboard al publicarlo.

CampoTipoTokensDescripción
consentPaso0Lo antepone la plataforma; no es configurable ni se cobra.
choicePaso0El grupo no cuesta: cuestan las opciones que se ejecutan.
otp_emailPaso1Código de un solo uso por email.
otp_whatsappPaso2Código de un solo uso por WhatsApp.
formPaso1Formulario propio.
document_arPaso5Validación de documento argentino.
face_livenessPaso5Prueba de vida y face match.

El presupuesto es de peor caso

El total no es la suma de flow.sequence: se calcula sobre el grafo completo de ejecución, con criterio defensivo. Ante ambigüedad se presupuesta de más, nunca de menos.

  • Cada aparición de un paso en la secuencia suma su costo.
  • Un choice suma su costo propio más las minRequired opciones más caras que ofrece.
  • Cada regla goto suma además el costo de su destino, sin importar sobre qué resultado dispare. Dos reglas hacia el mismo destino suman dos veces.

Esto último es deliberado: si sólo se cobrara la secuencia, colgar todos los validadores caros de una regla goto sobre approved —que dispara en el 100% de las sesiones— sería un flujo que cuesta casi cero y corre igual.

Saldo insuficiente

Si el saldo no alcanza, POST /v1/verification-sessions responde 402 y no crea nada: ni sesión, ni link, ni asiento contable.

{
  "type": "https://docs.kyc.ar/errores#insufficient_tokens",
  "title": "insufficient_tokens",
  "status": 402,
  "code": "insufficient_tokens",
  "detail": "saldo insuficiente: esta sesión cuesta 11 tokens y tenés 4. Recargá para seguir verificando.",
  "required": 11,
  "balance": 4,
  "top_up_url": "https://app.kyc.ar/facturacion"
}

Los campos required, balance y top_up_url son miembros de extensión del problem+json: están para que no tengas que parsear el detail. balance puede faltar en una carrera de saldo; top_up_url puede faltar si el entorno no tiene dashboard configurado.