Skip to main content
Connection Fingerprint identifies a device by how it connects, not by what it claims to be. In a single call it returns the client’s TLS signature, the signature of its HTTP headers, its approximate geographic origin, and a persistent identifier — all derived from the connection handshake itself. Use it to recognize a returning device, detect automation posing as a browser, and add signals to a risk engine. No SDK, no code executed on the client, and no dependence on the browser APIs that privacy modes block.
These signals are input for a decision, not a verdict. Unlike Facial Antispoofing, there is no field here that says “suspicious”: you combine these signals with your own risk logic.

How it works

The client calls the service directly: the fingerprint is derived from that TLS connection, so a call made from your server would describe your server, not the user. The response then travels to your backend, where it is verified and used.

Endpoints

Base URL: https://fingerprint.api.vusecurity.com
/, /version, and /publicKey are public by design: the end user’s browser has to be able to call them without credentials. What secures the integration is not an api-key — it is verifying the signature in your backend.

First call

Anatomy of the response

Connection identity

The most useful signal is not any single field — it is the coherence between them. A user-agent claiming to be Chrome alongside a tlsFingerprintHash that matches no known Chrome, or with tlsFingerprintSslGreased at "0", describes a client claiming to be something it is not.

Persistence

Origin

IP geolocation is approximate and several of its fields can arrive as null. Treat every key in geoData as optional, and never use it as sole proof of location: a VPN, a corporate network, or CGNAT will shift the result by hundreds of kilometres with nothing in the response to indicate it.

Integrity

signature is a 4096-bit RSA signature produced with VU’s private key over the userData block. It exists because the response passes through the client on its way to your backend, and the client is precisely the party you should not trust.

Integration

How to call it from the browser, what to do with the response, and how to use the signals.
Last modified on September 9, 2026