01 · Device intelligence para la prevención de fraude·Los recorridos que usted etiqueta
API de device intelligence y riesgo de fraude para la webEvalúe cada acceso.Decida con evidencia.
Una etiqueta por cada pantalla que usted elijasignuploginpassword_recoverymfa_challengeprofile_changedepositwithdrawalpix_transfertradecheckout
signup
login
password_recovery
mfa_challenge
profile_change
deposit
withdrawal
pix_transfer
trade
checkout
+ la que usted nombre
Un script en su sitio lee el navegador y el dispositivo en cerca de una décima de segundo en escritorio. Una llamada firmada desde su backend, con una etiqueta que usted nombra, obtiene la respuesta al instante: una puntuación de confianza, la cobertura de evidencia y 13 indicadores, desde bots y automatización, navegadores falsificados y emuladores hasta VPN, proxy y Tor, con el motivo de cada recomendación. Detecte robo de cuentas (account takeover), registros falsos y fraude en retiros con evidencia, no con suposiciones. Nosotros recomendamos. Usted decide y actúa.
Respuesta síncrona en cualquier pantalla que etiquete · Modo sombra antes de influir en cualquier decisión · Sus reglas, sus listas, su decisión
Cómo leer esta respuesta · ejemplo v1.1/login_completed
01
Por qué esta recomendación
ALLOWreason_codes · NO_ADVERSE_INDICATOR_MATCH
Ningún indicador que la política pondera volvió como detectado. Ejemplo del contrato: la política gestionada de FingerTrackID recomienda MONITOR con cualquier puntuación; ALLOW viene de una franja de puntuación que su empresa definió en sus propias reglas de riesgo. Decidido con policy-login-v1.
02
Qué es la puntuación, y qué no es
trust_score 1000–100 · cuanto más alto, mejor
Confianza en este acceso con esta versión de política, no una probabilidad de fraude. Fuera de COMPLETED es null, nunca un valor por defecto.
03
Cuánto se pudo ver
evidence_coverage 100limitation_codes · ninguno
La proporción de las verificaciones esperadas que se ejecutaron. Si faltara evidencia, se nombraría aquí: reduce la cobertura y nunca es un motivo de riesgo.
04
Después, es suyo
customer_actiondespués, el resultado
Su backend decide y actúa; después informa lo que hizo y el resultado real. Nunca bloqueamos ni retenemos dinero.
POST /v1/assessments → 201
event-assessment.v1.1 · ejemplo del contrato
assessment_statusCompletadaevaluación completada
trust_score1000–100 · cuanto más alto, mejor
device_match_confidence0.980–1 · fuerza de la coincidencia
evidence_coverage1000–100 · suficiencia
ALLOWrecommendation_basis · EVALUATIONrecomendación, no acción
Estados por indicador: detectado, no detectado, no evaluado
14
Motivos con nombre para "no evaluado", nunca un falso silencioso
5
Recomendaciones posibles
3
Medidas separadas: confianza, coincidencia de dispositivo, cobertura de evidencia
1
Llamada firmada por evento evaluado
La recolección
17
Secciones de evidencia del navegador y del dispositivo por recolección
48
APIs del navegador contrastadas con la versión que el navegador declara
125
Milisegundos o menos: mediana de la recolección en escritorio en Chrome, Firefox y Safari
0
Solicitudes de permiso mostradas a su usuario
Sus reglas y su investigación
54
Elementos de contexto calculados dentro de cada evaluación
67
Reglas que su empresa puede ponderar en su propia puntuación: 13 indicadores y 54 elementos de contexto
6
Listas de referencia públicas detrás de los indicadores de red
6
Idiomas de la consola: inglés, portugués (Brasil y Portugal), español, francés, alemán
Nunca, y esto no cambia según el plan
Movimiento del puntero y pulsaciones de teclas: el SDK no recolecta ninguno de los dos
Píxeles, muestras de audio, nombres de fabricante y renderizador de la GPU o nombres de fuentes: canvas, WebGL, WebGPU, audio y fuentes salen del navegador solo como hashes, una familia de GPU y una máscara de presencia sobre una lista fija de fuentes
WebRTC, puertos locales, batería, sensores de movimiento: nunca se leen
Sin solicitud de permiso, sin decisión tomada en el navegador, sin ninguna acción nuestra sobre su cuenta
— Cada valor es un conteo de un contrato, catálogo o lista versionados, excepto el tiempo de recolección, medido en nuestras máquinas de prueba con la caché vacía. Ninguno cambia según el plan o el volumen.
03 · Casos de uso
Prevención de fraude en las pantallas donde la decisión importa.
La inteligencia de dispositivos responde una pregunta antes de que su backend deje pasar la acción: ¿qué hay realmente del otro lado de esta pantalla? La misma llamada sirve para cada recorrido; la etiqueta que usted envía solo la clasifica.
login · password_recovery · profile_change
Prevención del robo de cuentas (account takeover)
Una cuenta conocida en un dispositivo que nunca usó, un navegador que miente sobre sí mismo, un navegador antidetección, un viaje imposible de hacer en ese tiempo. Cada uno vuelve como evidencia, para que pida un segundo factor solo cuando importa.
signup · login · checkout
Detección de bots y automatización
Navegadores headless, frameworks de automatización, agentes de IA identificados por firma y tráfico desde centros de datos. BOT_AUTOMATION y NETWORK_HOSTING dicen lo que se vio; la cobertura dice cuánto se pudo ver.
signup · deposit · promotions
Cuentas falsas y multicuentas
Cuentas y personas por dispositivo y por IP, qué tan raro es el perfil del dispositivo en su base, una misma recolección repetida en otro dispositivo. Contexto que sus reglas pueden ponderar, nunca un veredicto automático: una persona puede tener varias cuentas legítimas.
withdrawal · pix_transfer · trade
Fraude en retiros, Pix y transferencias
Un retiro en la primera hora después de un dispositivo nuevo, beneficiarios compartidos entre cuentas, vecinas que usted marcó como fraude confirmado. Su backend retiene o revisa el dinero; nosotros nunca.
cualquier recorrido
Emuladores y navegadores falsificados
Emuladores de Android y virtualización, una GPU imposible para el sistema declarado, una versión de navegador que sus propias APIs contradicen. Señales de device fingerprinting (huella digital del dispositivo) leídas como hashes y familias, nunca como píxeles en bruto.
cualquier recorrido
Detección de VPN, proxy y Tor
Proveedores de VPN conocidos, proxies públicos, salidas de Tor, rangos de hosting y Apple iCloud Private Relay, a partir de listas públicas que actualizamos de nuestro lado. La anonimización es contexto, no culpa: su política decide cuánto pesa.
04 · Las medidas
Medidas separadas. Ningún promedio disfrazado de certeza.
Fusionar confianza, cobertura y coincidencia de dispositivo en un solo número oculta justo lo que el analista necesita ver: si el problema es el acceso o la evidencia.
trust_score
Confianza en el acceso
72
0100 · cuanto más alto, mejor
Responde qué tan confiable es este acceso con esta versión de política; la etiqueta que usted envía no la cambia. Entero de 0 a 100. Solo existe cuando assessment_status = COMPLETED; en cualquier otro estado es null, nunca un valor por defecto.
No es una probabilidad de fraude, la reputación de la persona ni un valor por defecto ante datos faltantes. Mostramos 72/100, nunca "72 % confiable".
device_match_confidence
Coincidencia de dispositivo
0.94
01 · tope 0.98
Fuerza de la evidencia de que este acceso viene del mismo dispositivo ya visto, de 0 a 1. Viene con device_id, un identificador público opaco del clúster probabilístico.
No es la identidad de la persona ni una prueba de hardware. Party y Account son cosas distintas.
evidence_coverage
Suficiencia de la evidencia
100
0100 · 13 de 13 evaluados
Cuánto del conjunto esperado de verificaciones se pudo ejecutar, de 0 a 100. Cada indicador aplicable que queda como NOT_EVALUATED reduce la cobertura y aparece en limitation_codes.
No forma parte de la puntuación. Una cobertura baja no hace bajar la puntuación ni la sube: deja la evaluación como no concluyente.
Por qué no las sumamos
Una única puntuación de "sospecha" mezcla tres preguntas distintas: ¿este acceso merece confianza? ¿La evidencia fue suficiente? ¿Es el mismo dispositivo? Cuando la respuesta llega separada, su analista sabe si pedir un segundo factor, esperar la recolección o mirar el historial. Cuando llega fusionada, solo sabe que "sacó 42".
05 · 13 indicadores
Trece indicadores. Cada uno dice si vio, si no vio o si no pudo evaluar.
Cada evaluación web devuelve los 13 códigos, siempre. Lo que cambia es el estado de cada uno, nunca la lista. Cada indicador tiene su propio detector versionado, y la respuesta nombra la versión que lo evaluó. Un detector ausente, vencido o con fallas nunca se convierte en false.
signal_catalog web · 13 códigos · ejemplo withdrawal_completed
Detectado
Not_detected
— No_evaluado
Integridad del entorno
Privacidad del navegador · contexto neutral
Red · contexto neutral
Dispositivo
reason_codes · NETWORK_TOR_DETECTEDREVIEW
En nuestras políticas gestionadas, Tor por sí solo nunca justifica BLOCK_RECOMMENDED; las reglas que su empresa configura siguen los pesos y el corte que ella eligió. En este ejemplo del contrato v1, policy-withdrawal-v1 pidió la revisión del retiro, no un bloqueo, y el único código de motivo dice exactamente eso. La política gestionada en producción hoy recomienda MONITOR con cualquier puntuación.
Un detector ausente, vencido o con fallas nunca se convierte en false. NOT_APPLICABLE viene solo de la matriz inmutable del catálogo por canal, motor y plataforma; su etiqueta nunca la cambia, y una política desactivada, un timeout o una caída nunca toman ese atajo.
Pueden limitar lo que observamos. La cobertura baja solo donde la evidencia no se evalúa. No son fraude. Describen el entorno; no acusan a la persona. En nuestras políticas gestionadas, por sí solos nunca justifican BLOCK_RECOMMENDED; las reglas que su empresa configura siguen los pesos y el corte que ella eligió. Cuando no se puede distinguir el tipo de red, como detrás de iCloud Private Relay de Apple, hosting, VPN y proxy quedan todos en NOT_EVALUATED con NETWORK_TYPE_AMBIGUOUS: nunca marcamos tres detecciones a partir de un solo booleano.
La evidencia de red viene de listas de referencia públicas que actualizamos en nuestra propia infraestructura: direcciones de salida de Tor, rangos de proveedores de nube, listas de redes de hosting, rangos de proveedores de VPN y una base de proxies públicos. Las direcciones de sus usuarios nunca se envían a quienes publican las listas. Una lista que supera su antigüedad máxima deja su indicador en NOT_EVALUATED, nunca en NOT_DETECTED.
06 · Elementos de contexto
Más allá de los 13 indicadores: 54 elementos de contexto. Para la investigación, y para su puntuación cuando usted lo decida.
Dentro de cada evaluación, antes de la respuesta, calculamos 54 elementos de contexto a partir de lo recolectado y del propio historial de su empresa: quién más usa el dispositivo, qué tan rápido se mueve la cuenta, desde qué red, junto a qué cuentas. La política gestionada de FingerTrackID los deja fuera de la puntuación. En sus propias reglas de riesgo, cualquiera de ellos puede estar desactivado, en fantasma o activo, con puntos para inusual y muy inusual: un elemento activo que se dispara resta puntos de la puntuación de confianza y se nombra en reason_codes.
context-insight.v1 · 54 elementos en seis temas · agrupados como en la consola y en sus reglas
Cuenta y dispositivo · 10
Dispositivo nuevo y sistema operativo nuevo para la cuenta · cuentas y personas distintas en el dispositivo en 30 días · cuentas de la misma persona en él · dispositivos por cuenta y por persona en 24 horas · dispositivo de alta actividad · qué tan común, poco común o raro es el perfil del dispositivo en su empresa · cookie del dispositivo perdida
Retiros y pedidos · 7
Retiros en la primera hora después de un dispositivo nuevo · beneficiarios por dispositivo y cuentas por beneficiario en 30 días · cantidad y monto de retiros por cuenta · cantidad de pedidos por cuenta y la mediana del intervalo entre pedidos
Red y ubicación · 12
País nuevo y proveedor de internet (ASN) nuevo para la cuenta · países, proveedores e IPs distintos por cuenta · cuentas y personas por IP · viaje imposible · zona horaria del navegador que no coincide con el país de la IP · país de salida de la VPN · proveedor en una lista pública de abuso · Apple iCloud Private Relay
Integridad del navegador y del SDK · 16
Herramientas de desarrollo abiertas · marcas de automatización · marcador de navegador antidetección · firma TLS que no coincide con el navegador declarado, y su estabilidad en 30 días · renderizador por software y familia de GPU · canvas o audio que cambia entre dos lecturas · navegador integrado en una app · posible modo invitado · agente de IA identificado por firma · categoría de bot · SDK distinto del paquete aprobado · una sesión del SDK en varios dispositivos · recolección idéntica repetida en otro dispositivo · cookie del dispositivo usada en lugares demasiado distantes
Velocidad · 5
Accesos por dispositivo y por cuenta en 5 minutos, 1 hora y 24 horas; por IP en 5 minutos y 1 hora · evaluaciones con la misma etiqueta por cuenta y por dispositivo en 1 minuto, 5 minutos y 1 hora
Vínculos entre cuentas, a un salto · 4
Otras cuentas que usaron los mismos dispositivos · cuentas vecinas donde se detectó automatización o falsificación del navegador · cuentas vecinas que usted marcó como fraude confirmado · beneficiarios de retiros compartidos con otras cuentas
Tres estados · un motivo, nunca un cero
Observado · la condición está presente, o el conteo o la medida difiere de su valor neutral.
No observado · evaluado, y ausente o neutral.
No evaluado · siempre con su motivo, nunca mostrado como cero.
Algunos elementos dependen de lo que usted envía. Sin referencias de cuenta o de persona, sin etiqueta o sin resultados, el elemento lo dice: cuenta no enviada, evaluación sin etiqueta, ningún resultado enviado. Una solicitud con etiqueta no lleva monto ni beneficiario, así que los elementos de monto y beneficiario del retiro también lo dicen. Un primer acceso, una red anonimizada o una IP fuera de la ventana de una hora de una verificación también son motivos.
Lo que no son
No son uno de los 13 indicadores, ni nunca un código de limitación. Llegan a reason_codes solo a través de una regla que su empresa activó.
Nunca entran en la puntuación de la política gestionada de FingerTrackID. Un elemento activo sin datos no resta nada: la falta de evidencia nunca se convierte en riesgo.
No son un modelo oculto: cada elemento se lee como esperado, inusual o muy inusual frente a una regla de medida que su empresa puede ajustar, a partir de un valor por defecto publicado.
No son una acusación: una cantidad alta de cuentas o personas en un dispositivo no es evidencia de fraude, y no existe una regla "N cuentas por dispositivo = fraude".
Dónde los lee el analista
Detalle del acceso. Una tarjeta "Contexto del acceso" agrupa los elementos por tema, con sus ventanas de tiempo, el corte del historial que consideraron, qué tan inusual es cada uno en su regla de medida y el motivo de cada elemento que quedó sin valor. Un elemento que no cabe en el presupuesto de tiempo de la evaluación se termina en segundo plano y lo indica; nunca retrasa ni hace fallar la respuesta.
Catálogo de indicadores. Una página explica qué busca cada uno de los 13 indicadores, qué lo deja sin evaluar y si puede mover la puntuación, y enumera los elementos de contexto con los motivos por los que pueden quedar sin valor.
Canvas, WebGL, audio y fuentes se leen bajo la política de recolección gestionada de cada empresa, solo como valores derivados, y alimentan algunos de estos elementos, como la familia de GPU, un renderizador por software o un renderizado que cambia entre dos lecturas. Donde el navegador no permite una verificación, el elemento queda sin evaluar, con su motivo.
07 · No concluyente es un resultado
Cuando no podemos evaluar, lo decimos, y decimos por qué.
La falta de evidencia no produce una confianza de 100 ni se convierte en una señal de fraude. Sin puntuación, la recomendación viene del fallback congelado dentro de la versión de política y cubierto por su hash, y es una sola respuesta para cada estado sin puntuación, sea cual sea la etiqueta: MONITOR. Nunca ALLOW.
Casos sin puntuación de los ejemplos del contrato
La etiqueta nunca selecciona el fallback. En la política gestionada, cada estado sin puntuación, con cualquier etiqueta, recomienda MONITOR: seguir adelante y registrarlo. Así también los tres ejemplos del contrato de abajo.
INCONCLUSIVEetiqueta login · el SDK no cargó
MONITOR
Sin recolección: trust_score: null, evidence_coverage: 0, COLLECTOR_NOT_LOADED, base INSUFFICIENT_EVIDENCE. Nunca se libera nada como ALLOW.
INCONCLUSIVEevidencia de red no disponible
MONITOR
Cuatro indicadores de red NOT_EVALUATED, evidence_coverage: 69, PROVIDER_UNAVAILABLE. Sea cual sea la operación, se queda en su sistema, bajo su decisión; nunca retenemos dinero.
FAILEDetiqueta pix_transfer · política no disponible
MONITOR
Falla técnica: POLICY_UNAVAILABLE, policy_version: null, base TECHNICAL_FAILURE. Nunca se lee como "sin riesgo".
Sin puntuación nunca recomendamos ALLOW · fallback_policy_version production-observation-fallback-v2 en los ejemplos · el fallback se valida con la política cada vez que se lee la política
Cuatro estados de la evaluación
Completada72base EVALUATION · los reason_codes explican la puntuación
No concluyentenullbase INSUFFICIENT_EVIDENCE · los limitation_codes dicen qué faltó
Sin puntuación posiblenullbase OUT_OF_POLICY_SCOPE · evento válido, la política no lo cubre
Fallidanullbase TECHNICAL_FAILURE · POLICY_UNAVAILABLE, policy_version null · nunca "sin riesgo"
Los 14 códigos de limitación del catálogo · qué faltó, nunca por qué es riesgoso
Un código de limitación explica la recolección y la calidad; un código de motivo explica la política. Cada indicador NOT_EVALUATED apunta al suyo; la evaluación los agrega todos en limitation_codes. Una limitación de recolección nunca es un motivo de riesgo.
08 · Usted decide
Cinco recomendaciones. Cero acciones tomadas por nosotros.
recommended_action dice lo que sugiere la política. customer_action dice lo que usted hizo. Dos campos porque son dos hechos.
Quién recomienda, quién decide, quién actúa
FingerTrackID recomienda
ALLOW
MONITOR
STEP_UP
REVIEW
BLOCK_RECOMMENDED
Nunca solo por privacidad · Tor, VPN, proxy, incógnito, dispositivo compartido
→
Su flujo decide
Su backend decide y actúa. Devolvemos una recomendación; hoy la política gestionada responde MONITOR, solo observación. Lo que pasa con el acceso se decide y se ejecuta de su lado. Usted conoce la cuenta, el límite, el historial y el costo de la fricción. Nosotros no.
→
Usted actúa e informa
ALLOWED
CHALLENGED
HELD
REVIEWED
BLOCKED
CANCELLED
customer_action · el campo que usted devuelve
Nunca autenticamos a una persona.
Nunca bloqueamos su interfaz.
Nunca movemos dinero.
Lo que cada recomendación no significa
ALLOW
La política no encontró motivo de fricción en este acceso. No significa que la persona sea legítima ni que el acceso esté certificado. Solo se emite con una puntuación y con la evidencia requerida evaluada.
MONITOR
Seguir adelante, pero registrarlo. Es el fallback sin puntuación en cualquier etiqueta, y hoy también la respuesta de la política gestionada con cualquier puntuación. No significa una sospecha confirmada, y no exige ninguna acción del usuario.
STEP_UP
Pedir un segundo factor o una confirmación. No significa que nosotros desafiemos a nadie: quien muestra el desafío es usted.
REVIEW
Enviarlo a revisión humana. No significa que retengamos dinero: la operación se queda en su sistema, bajo su decisión.
BLOCK_RECOMMENDED
La política sugiere denegar. No significa un bloqueo ejecutado, un fraude confirmado ni un baneo. Cuando usted bloquea, eso se convierte en customer_action: BLOCKED, un evento suyo, y alimenta la medición de precisión.
09 · Integración
Tres pasos, un contrato. El navegador recolecta; su backend pregunta; nosotros respondemos.
Un script en su sitio, un endpoint servidor a servidor en su backend y dos llamadas para devolver la acción y el resultado. Ninguna decisión en el cliente.
01
SDK en su sitio
El SDK recolecta y devuelve un token. Nada más.
Servido desde un subdominio suyo. Antes de que usted envíe la solicitud que quiere evaluar, sea cual sea la pantalla, recolecta señales del navegador y del entorno y recibe 202 PROCESSING: confirma la recepción, no un resultado. Las señales de red las agrega el edge en su dominio de recolección, nunca el script. Ninguna puntuación, señal ni decisión vuelve al navegador.
import { initializeSdk } from'@ftid/sdk-web'// publicKey is a public locator, not a secret.// collectionOrigin is YOUR collection domain (https).const sdk = initializeSdk({
publicKey: 'pub_app_0123456789abcdef',
collectionOrigin: 'https://collect.yourcompany.com',
})
// ACCEPTED (202 PROCESSING on the wire): confirms receipt, not a result.const collection = await sdk.collect()
if (collection.status !== 'ACCEPTED') {
// Without collection the journey continues; the backend will get// INCONCLUSIVE / COLLECTOR_NOT_LOADED: no fake score.return continueWithoutToken()
}
// Create the event before sending the request to be assessed.const event = sdk.createEvent(collection.observation)
// Only a COMPLETED collection yields a token. The token goes in the POST// that YOUR backend makes; the decision never comes back here.const ctx = await sdk.getEventContext(event)
const token =
ctx.status === 'COMPLETED'
? ctx.eventContextToken
: null
02
Su backend llama
Una llamada firmada y síncrona, con su plazo.
HMAC-SHA-256 sobre diez líneas canónicas: marcador, key_id, método, ruta, timestamp, ids de evento y de solicitud, metadatos del contenido y el SHA-256 de los bytes exactos del cuerpo en la última línea. Nunca vuelva a serializar el JSON antes de calcular el hash; el contrato incluye el vector normativo. key_id es el único localizador público. El secreto nunca viaja. Vector canónico requests.both_refs_deadline_750 del contrato v1.1: la misma ruta y la misma firma que v1, con un tag en lugar de journey, action y journey_context.
tag es un slug en minúsculas de hasta 64 caracteres (letras, dígitos y guion bajo, como máximo diez dígitos), nunca datos personales; este vector está en ese límite · subject_ref y account_ref pueden ser null, y un account_ref exige un subject_ref · las refs son códigos opacos suyos, nunca un documento de identidad, un email ni un ID secuencial · deadline_ms es un entero de 250 a 5000, o null para 5000; si se excede, vuelve un Problem 503 reintentable, no una puntuación parcial
03
Respuesta síncrona
Léala, decida, devuelva lo que hizo.
status
COMPLETED
trust_score
72
device_match
0.94
coverage
100
reason_codes
NETWORK_TOR_DETECTED
limitations
none
policy
policy-withdrawal-v1
expires_at
+5 min
REVIEW
Después, dos llamadas de retorno: customer_action con lo que usted hizo y, cuando lo sepa, truth_status con el resultado real (el outcome: legítimo, fraude confirmado o evidencia insuficiente). El contrato aplica a ambas la misma disciplina que a la llamada de evaluación: nada cuenta como aceptado antes de un commit durable, y un reintento idéntico no agrega un segundo efecto. Un resultado se puede corregir después: la corrección se agrega como sucesora, y el registro anterior sigue legible.
POST /v1/assessments/{assessment_id}/customer-actions POST /v1/assessments/{assessment_id}/outcomes
Web, en cualquier navegador moderno · sin app que instalar · SDK, evaluación y retorno en el mismo contrato versionado
npm install @fingertrackid/server firma la llamada por usted, y @fingertrackid/mcp permite que Claude Code, Cursor o cualquier agente de código compatible con MCP conecte la integración a partir del contrato publicado. Paso a paso en el quickstart, la guía del Web SDK y la referencia de la API.
10 · Zero trust en el navegador
El navegador solo recolecta. La decisión y el identificador nunca pasan por él.
Nada que venga del navegador se trata como autoridad. La evaluación es servidor a servidor, firmada, y cada intento cuenta una sola vez: repetirlo no crea ningún efecto nuevo.
Quién habla con quién
El navegador recibe solo IDs opacos de sesión y de evento. La puntuación, las señales y la recomendación nacen y se quedan en el servidor. La cookie first-party está firmada, es HttpOnly, Secure y está limitada a su tenant y su aplicación.
Anatomía de la llamada
POST /v1/assessmentssecurity ftidHmacV1 del contrato
X-FTID-Signature: v1=<key_id>:<mac-hex>key_id UUIDv7 es el único localizador; tenant, aplicación, entorno y capacidades solo se vuelven autoridad después de un MAC válido en comparación de tiempo constante. X-Client-Id, el nonce heredado y las firmas múltiples se rechazan.
X-FTID-Timestamp: 1791720000Epoch en segundos. Tolerancia de ±300 s. Un timestamp en el futuro nunca extiende la retención.
X-FTID-Request-Id: <uuidv7>Un uso por intento, reservado después de un MAC válido. Un reintento lógico firma un request_id nuevo; un MAC inválido no crea reserva.
X-FTID-External-Event-Id: evt:tag-0003Idéntico byte a byte al del cuerpo y al de la cadena firmada.
body.idempotency_keyMisma clave, misma operación: un reintento idéntico devuelve la misma evaluación persistida, sin recalcular.
body.deadline_msSu presupuesto. Si se excede antes de la evaluación: Problem assessment-unavailable (503, retryable: true), no una puntuación parcial.
401uniforme: un key_id inexistente, revocado o una firma incorrecta producen el mismo authentication-failed.
403una credencial autenticada sin la capacidad de evaluación de la ruta.
503dependencia de secretos no disponible: un latch global hace la respuesta uniforme sin revelar si el key_id existe. Firme un request_id nuevo.
11 · Política versionada
Cada decisión tiene una versión. La versión congela todo lo que la definió.
Cambiar la sensibilidad de un indicador crea una versión nueva, con autor, período de vigencia, simulación y rollback. El historial no cambia. Si falta una versión real, se bloquea el uso.
Versión que decidió · ejemplo withdrawal_completed
correlation_id sirve para soporte sin exponer un identificador personal. Las versiones expuestas son etiquetas públicas opacas; los IDs internos de la base de datos nunca aparecen en la API, en el webhook ni en la consola.
Lo que congela una versión de política
catálogo de señales
normalización
features
resolver de dispositivos
reglas
estrategia de correlación
niveles por indicador
topes y umbrales
Reproducible, nunca reescrita
ejemplo login_completed
assessment_version1
supersedes_assessment_idnull
ejemplo login_completed_revision_2
assessment_version2
supersedes_assessment_id…0000000101
Una revisión operativa conserva la política y todas las demás versiones vigentes en el received_at del evento. Una política nueva sobre un evento antiguo es una simulación aparte; nunca reescribe qué recomendación orientó la decisión histórica.
12 · Modo sombra
Primero en paralelo. Solo después la respuesta influye en una acción.
El modo sombra es ejecutar FingerTrackID lado a lado con lo que usted usa hoy, sin que la respuesta toque ninguna decisión. Usted compara, devuelve los resultados reales y solo entonces empieza a usar la recomendación. Así recomendamos empezar.
El ciclo completo
01
El SDK recolecta
202 PROCESSING · event_context_token
02
Su backend pide la evaluación
POST /v1/assessments · síncrona
03
Usted decide con su flujo
en sombra, sin usar la respuesta
04
Usted informa la acción
customer_action · POST …/customer-actions
05
Usted informa el resultado
truth_status · POST …/outcomes
recommendation_alignment · derivado en el servidor a partir del par recomendación × acción; nunca lo declara el cliente. La coincidencia no prueba causalidad, ni precisión, ni fraude.
Comparación, campo por campo
recommended_action
customer_action
recommendation_alignment
REVIEW
REVIEWED o HELD
ALIGNED
STEP_UP
ALLOWED
NOT_ALIGNED
ALLOW o MONITOR
ALLOWED
ALIGNED
BLOCK_RECOMMENDED
BLOCKED
ALIGNED
cualquiera
CANCELLED
NOT_COMPARABLE
Bloquear no prueba fraude. Confirmar un fraude exige evidencia independiente: truth_status pasa de PENDING a LEGITIMATE, FRAUD_CONFIRMED o INSUFFICIENT_EVIDENCE, con madurez PROVISIONAL o MATURE. Solo una etiqueta madura se convierte en métrica de calidad.
Lo que alimenta el ciclo
Falso positivo y falso negativo como métricas derivadas de etiquetas maduras, no como campos escritos a mano.
Recalibración de reglas y umbrales, siempre como una nueva versión de política.
Calidad de los detectores medida en su modo sombra, antes de que la respuesta influya en cualquier acción suya.
Lo que no hace: convertirse en enforcement automático. customer_action y truth_status son hechos separados, y cada corrección crea una sucesora.
13 · Privacidad por contrato
Limitada por el contrato, no por una configuración.
Los datos personales (PII) en texto claro no son un requisito del producto. Usted envía referencias opacas de persona y de cuenta; no pedimos documento de identidad, email ni teléfono para evaluar un acceso.
packages/contracts/src/sdk-handshake-v1.ts · política de recolección
La recolección conductual, es decir, el movimiento del puntero y las pulsaciones de teclas, solo acepta el valor desactivado: activarla exige cambiar el contrato, no una configuración. Canvas, WebGL, audio offline y la presencia de fuentes se leen bajo la política de recolección gestionada, que los activa para todas las empresas, y salen del navegador solo como valores derivados: hashes de longitud fija, una familia de GPU cerrada, un conteo y una máscara de presencia sobre una lista fija de fuentes. El contrato no tiene ningún campo para píxeles, muestras de audio, nombres de fabricante o renderizador de la GPU ni nombres de fuentes. En conjunto, estos valores derivados pueden reconocer de nuevo el mismo navegador, por eso se tratan como datos del dispositivo, no como datos anónimos. Nunca se recolecta, como regla absoluta: contraseña, texto escrito, contenido de chats o documentos, portapapeles, capturas de pantalla, micrófono, cámara. Cada pieza de evidencia tiene una clase de privacidad, y la clase no es peso de riesgo.
Garantías que no dependen de la buena voluntad
Los datos personales no entran en los logs. Los datos en bruto no aparecen libremente en la consola: cada acceso a ellos queda registrado. Un identificador o un valor personal nunca va en una URL.
La correlación entre tenants está desactivada. Cada tabla de dominio lleva tenant_id con aislamiento forzado en la base de datos. No hay reputación ni etiqueta compartida entre clientes.
Cookie first-party servida desde su dominio: firmada, HttpOnly, Secure, limitada a su tenant y su aplicación. El valor nunca viaja a una base de datos, una cola o un log; si falta o se rechaza, la continuidad se degrada como limitación y la evaluación no se detiene.
Cada fusión de dispositivos es reversible y registra la versión del resolver que la hizo. La IP nunca consolida dispositivos por sí sola.
Cada tipo de evidencia tiene en nuestro inventario de datos una finalidad declarada, una clase de privacidad, una regla de acceso y una retención. La base legal, la residencia de datos y el DPA se tratan con su equipo legal en la contratación; nada en esta página es asesoría legal.
Party no es Account
El vínculo viene de su backend · nunca se infiere de la huella digital
Una persona, varias cuentas legítimas. Una cuenta nunca cambia de persona en silencio; la sesión solo avanza de anónima a persona y luego a una cuenta de la misma persona. Una contradicción es un conflicto, no una nueva asociación ni evidencia negativa improvisada.
Dónde viven los datos
cloud
Google Cloud, us-central1 region
source of truth
PostgreSQL, single
isolation
RLS forced per tenant, with a negative test
secrets
Secret Manager; never in code or in infrastructure state
logs
no PII; raw data never displayed freely
14 · Consola
Una consola para integrar, investigar y cerrar el ciclo.
La consola responde primero "¿estamos recibiendo, evaluando y explicando con calidad?", y solo después deja que alguien hable de legitimidad. Cada porcentaje nombra su denominador.
Esquema, no captura de pantalla · tonos de la consola dentro del marco
Detalle del acceso. Las tres medidas como tres componentes separados; la recomendación con su recommendation_basis, la política vigente y lo que su equipo informó haber hecho; la frescura de la evidencia; los 13 indicadores con estado, aplicabilidad, fuente, confianza del detector, frescura y el motivo de cualquier no evaluado; limitaciones y códigos de motivo; sesión, dispositivo y sus asociaciones; la multiplicidad en el dispositivo; una ubicación aproximada a partir de la red; el contexto del acceso; y una pestaña de datos técnicos con todo lo que el SDK y el edge recolectaron, incluida la versión real del navegador leída de las APIs que expone, junto a la versión que declara.
Filtros de investigación. La lista de accesos se filtra por proveedor de internet (ASN), país de la red, instalación del dispositivo, el motivo por el que un indicador no se evaluó y hasta dos indicadores en estados elegidos al mismo tiempo, y encuentra un acceso por su propia referencia de cuenta o de persona. No hay filtro por dirección IP: es un dato personal. Cada detalle de acceso trae además sus elementos de contexto ↑.
Investigue a fondo. Desde cualquier acceso, un grafo de vínculos abre los dispositivos y las cuentas a su alrededor, un salto a la vez, sobre hasta 92 días de su propio historial. Cada expansión es una lectura registrada; las direcciones IP nunca se convierten en nodos.
Listas de bloqueo y de permitidos. Desde el detalle del acceso, su equipo pone un dispositivo, una referencia de cuenta o una IP individual en la lista de bloqueo de su empresa (bloquear o revisar) o en la lista de permitidos, con una nota y el nombre de quien la agregó. En un acceso de producción con puntuación, una entrada prevalece sobre la recomendación y se nombra en reason_codes. Nada se borra: quitar una entrada registra quién la quitó y cuándo.
Asistente de IA. Un panel lateral explica cada pantalla y responde preguntas sobre su propia integración y sus accesos, dentro de su empresa y de su rol.
Configuración de riesgo. Las propias reglas de riesgo de su empresa, por aplicación: cada uno de los 13 indicadores está desactivado, en fantasma o activo, con un peso de 1 a 100 puntos, y usted define las franjas de puntuación y la acción de cada una. Una regla en fantasma se calcula y se registra, pero nunca cambia la respuesta. Antes de publicar, la tarjeta de impacto reproduce su borrador sobre las evaluaciones de los últimos 1, 7 o 30 días. Cada uno de los 54 elementos de contexto ↑ puede sumarse con sus propios puntos. Su administrador o supervisor de riesgo publica directamente; cada publicación es una nueva versión auditada, y todo en fantasma detiene todas sus reglas de una vez. FingerTrackID nunca activa una regla por usted: su soporte solo puede poner en fantasma todas las reglas de una aplicación, con un motivo que su consola muestra. Mientras ninguna regla esté activa, responde la política gestionada, publicada por el equipo de FingerTrackID con aprobación registrada.
Dieciséis pantallas en cuatro grupos · principal, detección, operación, administración
01Inicio
09Integración y estado
02Resumen
10Uso
03Accesos
11Exportaciones
04Cola de revisión
12Informes
05Configuración de riesgo
13Usuarios y accesos
06Simulaciones de política
14Auditoría
07Listas
15Ciclo de vida del cliente
08Catálogo de indicadores
16Cuenta y seguridad
La cola de revisión es el módulo de revisión de retiros: una cola operativa construida sobre el mismo núcleo, que lleva a una persona cada retiro v1 con recomendación REVIEW, con la evidencia al lado. Las evaluaciones con etiqueta nunca entran en ella, y se mantiene vacía mientras la política recomiende MONITOR, como hace hoy la política gestionada.
En inglés, portugués (Brasil y Portugal), español, francés y alemán. Inicio de sesión con llave de acceso (passkey) o segundo factor; permisos por rol; un registro de auditoría de quién vio datos sensibles y quién cambió qué. Los datos en bruto no aparecen libremente: cada acceso a ellos queda registrado.
15 · Cómo cobramos
Una unidad de cobro. Todo lo demás no cuenta.
Precio por volumen de recolecciones completadas, definido en la propuesta. El modo sombra consume las mismas unidades y aparece en la consola como uso estimado; lo que va a la factura en ese período se define en la propuesta.
La unidad
Un snapshot de device intelligence de producción, solicitado por su integración y completado.
Es la unidad de medida y la unidad candidata de cobro. Cada device_intelligence_snapshot_id produce como máximo una unidad, sin importar cuántas evaluaciones, etiquetas, proveedores o reprocesamientos usen esa recolección.
La puntuación, la recomendación, la acción y el resultado no determinan el cobro. Un resultado riesgoso no cuesta más; un resultado legítimo no cuesta menos.
Un límite comercial nunca se convierte en bloqueo, en límite de tasa ni en degradación automática del servicio.
Cada snapshot solicitado produce un registro de uso inmutable, incluso cuando no es facturable. Las exclusiones se prueban con ese registro, no se reconstruyen a partir de logs.
Evento · ¿crea una unidad?
Aplicaciones que no son de producción (desarrollo, staging)no
Reintento con el mismo idempotency_keyno
Cualquier evaluación, con cualquier etiqueta, que reutiliza un snapshot vigenteno
Reprocesamiento, replay histórico, cambio de políticano
Enriquecimiento asíncrono y actualización iniciados por nosotrosno
Llamada o reintento a un proveedorno
Entrega de webhookno
customer_action y resultadono
Consulta, panel, informe, exportaciónno
4xx por autenticación, autorización o contrato inválidono
5xx, un timeout de nuestro lado, recolección INCONCLUSIVE o FAILEDno
Snapshot de producción, solicitado por la integración, completadosí · 1
Propuesta por volumen, con el uso del modo sombra sobre la mesa.
Las preguntas que hacen un responsable de riesgo y un CTO.
Q01¿Cómo empieza la integración?
En modo sombra. Usted instala el SDK en su sitio, activa la llamada servidor a servidor, y la respuesta empieza a correr junto a su flujo real sin tocar ninguna decisión. Usted devuelve customer_action y el resultado, y en la consola compara, acceso por acceso, la recomendación con lo que su equipo informó haber hecho, y sigue la cobertura de evidencia. Cuando los números cierran, su equipo decide si la recomendación empieza a influir en una decisión, y dónde, siempre ejecutada por su backend.
Q02¿Qué recorridos evalúan?
Cualquier pantalla que usted elija. Su backend envía un tag propio con cada evaluación, un slug en minúsculas como login, withdrawal o pix_transfer: sin registro, sin lista cerrada y sin límite. La consola filtra, agrupa y exporta por etiqueta, y las plantillas (registro, login, recuperación de contraseña, segundo factor, cambio de perfil, depósito, retiro, transferencia Pix, trade, checkout) son una guía de integración. La etiqueta nunca selecciona la política, los detectores, el fallback ni el plazo: toda evaluación con etiqueta corre bajo la misma política y los mismos 13 indicadores. Nunca debe llevar datos personales. La solicitud no lleva monto, moneda ni beneficiario.
Q03¿Por qué no bloquean?
Porque un evento no es fraude, una puntuación no es una decisión y bloquear no prueba nada. Quien conoce la cuenta, el límite, el historial y el costo de la fricción es usted. Entregamos evidencia, cobertura y una recomendación explicada. BLOCK_RECOMMENDED es la recomendación más fuerte que existe, y sigue siendo una recomendación. Cuando usted bloquea, registra customer_action: BLOCKED, y eso se convierte en un dato para medir si la recomendación acertó.
Q04¿Una VPN, Tor o una pestaña privada bajan la puntuación?
En nuestras políticas gestionadas, ninguno de ellos produce BLOCK_RECOMMENDED por sí solo; las reglas que su empresa configura siguen los pesos y el corte que ella eligió. El modo privado y las protecciones del navegador son contexto neutral: pueden reducir la cobertura y aparecen en el detalle, sin código de motivo adverso. Tor, proxy, VPN y hosting son contexto de anonimización: una política puede ponderarlos junto con lo demás que se vio, nunca por etiqueta. En la política gestionada, hoy solo la automatización y la falsificación del navegador mueven la puntuación, y la recomendación es MONITOR. En el ejemplo del contrato v1 de retiro de esta página, Tor detectado llevó a REVIEW, y el código de motivo lo dice. Nunca es fraude en sí mismo.
Q05¿Y si el SDK no carga, o el usuario bloquea los scripts?
El recorrido continúa. Su backend llama a la API sin event_context_token y recibe INCONCLUSIVE, trust_score: null, evidence_coverage: 0, limitation_codes: ["COLLECTOR_NOT_LOADED"] y la recomendación de fallback, MONITOR. Nunca una puntuación inventada. Nunca ALLOW por falta de evidencia.
Q06¿Cuál es la latencia? ¿Hay SLA?
El plazo lo define usted. El valor por defecto del contrato es 5000 ms, y deadline_ms lo fija en cualquier punto entre 250 y 5000 (mantenga su timeout HTTP por encima de unos 6 s para el valor por defecto); si se excede, recibe un Problem assessment-unavailable (503, retryable: true, con Retry-After), no una respuesta parcial. Repita la misma operación lógica con un request_id nuevo. La latencia y el SLA van en la propuesta, medidos en su modo sombra antes de que cualquier decisión dependa de la respuesta.
Q07¿Cómo sé que la respuesta no fue falsificada?
Nunca pasa por el navegador. Su backend firma cada llamada con HMAC-SHA-256 sobre diez líneas canónicas, la última de las cuales es el SHA-256 de los bytes exactos del cuerpo; key_id UUIDv7 es el único localizador público; request_id se reserva contra replay; una falla de autenticación devuelve un 401 uniforme sin revelar si la clave existe. El secreto nunca viaja. El vector de prueba normativo del protocolo forma parte del contrato; con él usted reproduce la firma byte a byte.
Q08¿Tengo que enviar documento de identidad, email o teléfono?
No. La evaluación usa referencias opacas de persona y de cuenta que solo su sistema resuelve. Los datos personales en texto claro no son un requisito del producto. El comportamiento del puntero y del teclado está desactivado en el contrato. Las verificaciones de canvas, WebGL, audio y fuentes corren bajo la política de recolección gestionada de cada empresa y salen del navegador solo como hashes, una familia de GPU y una máscara de presencia sobre una lista fija de fuentes, nunca como píxeles, sonido, nombres de GPU ni nombres de fuentes. Contraseña, texto escrito, portapapeles, capturas de pantalla, micrófono y cámara están prohibidos. Cada tipo de evidencia tiene una finalidad declarada, una clase de privacidad y una retención; la base legal se revisa con su equipo legal antes de activar producción, y nada en esta página reemplaza esa revisión.
Q09¿Cuánto cuesta y qué tiene que hacer mi equipo?
Precio por volumen de recolecciones completadas, en una propuesta. La unidad candidata de cobro es un snapshot completado en producción; nada fuera de producción cuenta. De su lado: un script en el sitio, un endpoint servidor a servidor en el backend para pedir la evaluación y dos llamadas a la API para devolver la acción tomada y el resultado real (el outcome). El SDK es web y funciona en cualquier navegador moderno; no hay app que instalar.
Q10¿Qué es la device intelligence (inteligencia de dispositivos) y en qué se diferencia del device fingerprinting?
El device fingerprinting (huella digital del dispositivo) lee rasgos estables de un navegador para reconocerlo de nuevo. La device intelligence parte de ahí y va más allá: verifica si esos rasgos son coherentes entre sí y con la red, si hay automatización, un emulador o un navegador antidetección en juego, y cómo se comporta este dispositivo en sus cuentas. FingerTrackID lo devuelve como una puntuación de confianza, una coincidencia de dispositivo con su propia confianza, la cobertura de evidencia y 13 indicadores, cada uno con la versión del detector que lo leyó.
Q11¿Podemos definir nuestras propias reglas, puntuaciones y listas?
Sí. En la consola, su empresa asigna puntos a cualquiera de los 13 indicadores y de los 54 elementos de contexto, elige las franjas de puntuación y la recomendación de cada franja, y puede ejecutar cualquier regla primero en fantasma, calculada y registrada sin cambiar la respuesta. Las listas de bloqueo y de permitidos aceptan un dispositivo, una referencia de cuenta o una IP individual, una entrada a la vez, con una nota y el nombre de quien la agregó. Cada publicación es una nueva versión auditada. FingerTrackID nunca activa una regla ni agrega una entrada a una lista por usted.
Q12¿Un agente de IA de código puede hacer la integración?
Sí. El SDK de servidor @fingertrackid/server firma la llamada, el servidor MCP @fingertrackid/mcp le da a Claude Code, Cursor o cualquier agente compatible con MCP los contratos, los vectores de firma, un módulo de servidor listo por etiqueta y una verificación de su dominio de recolección, todo de solo lectura, y la documentación publica llms.txt y un bloque de reglas listo para su AGENTS.md. El secreto se queda en su entorno; el agente nunca necesita verlo.
Q13¿Cuánto pesa el SDK, y hace más lenta la página?
El SDK recolecta una sola vez, en paralelo, en una única solicitud a su propio subdominio de recolección. En escritorio, la recolección completa tomó entre unos 80 y 125 ms en la mediana en Chrome, Firefox y Safari, con un presupuesto estricto de 250 ms; cada verificación ocupa como máximo 2 ms del hilo principal, y las que esperan, como la medición de frames o un Worker, esperan en paralelo. Nunca muestra una solicitud de permiso y nunca bloquea su interfaz.
17 · Contacto
Evalúe el recorrido que usted elija, en modo sombra.
Empiece en modo sombra: la respuesta corre junto a su flujo real sin tocar ninguna decisión, usted compara, devuelve los resultados y solo entonces empieza a usar la recomendación. Si tiene pantallas donde la decisión importa y quiere ver la respuesta explicada antes de confiar en ella, hable con nosotros.
Agendar una demo
Cómo empieza
Una conversación de 30 minutos sobre los recorridos que quiere evaluar y su flujo de decisión.
Credencial de servidor para su aplicación, contrato ejecutable y vector HMAC. No hay sandbox: usted prueba en producción, en modo sombra.
Modo sombra con su flujo real: usted compara y devuelve resultados antes de que la respuesta influya en cualquier decisión.
Producción en las pantallas que usted etiquete, con política versionada; cada decisión queda en su backend.
Qué incluye
Consola con cobertura de evidencia y, acceso por acceso, la recomendación junto a la acción que usted informó
Contrato event-assessment.v1 ejecutable, con un vector de prueba HMAC
Modo sombra en producción desde el primer día: la respuesta corre junto a su flujo y nunca toca una decisión
Canal directo con las personas que escriben la política