Skip to main content
Integration flow
Language

Events API

Integrate cside fingerprinting into your application. Collect browser signals, generate session tokens, and retrieve detailed visitor intelligence from your backend.

This guide walks you through integrating the cside fingerprinting Events API end-to-end: loading the client script, generating a session token, sending it to your backend, and interpreting the response payload.

Integration flow

Add the script to your page

Include the cside fingerprinting script in your page’s <head>. It should be loaded before you call any fingerprinting functions.

<script
  src="https://<YOUR_SUBDOMAIN>.csidefd.com/client.js"
  referrerpolicy="origin"
  data-src="6">
</script>

Submit telemetry and receive a session token

Once the script has loaded, a global sendClientTelemetry function becomes available. Loading the script does not create a session fingerprint by itself. Call sendClientTelemetry(externalIds?) to submit telemetry to /client and receive a session token. Pass an optional externalIds object if you want to attach your own identifiers.

const fingerprintResponse = await sendClientTelemetry({
  email: "user@example.com",
  accountId: "1234567890",
});

// Or call with no arguments
// const fingerprintResponse = await sendClientTelemetry();

if (!fingerprintResponse?.ok) {
  throw new Error("Fingerprint telemetry request failed.");
}

const result = await fingerprintResponse.json();
const sessionToken = result.token;

Parameters

ParameterTypeRequiredDescription
externalIdsRecord<string, string>NoOptional identifiers you want attached to the fingerprint, such as accountId, orderId, or email.

To receive the throwawayEmail signal, pass the email address in this object using the key email.

Return value

The function returns the HTTP response from the /client API. Parse the JSON body to retrieve the response object that contains the session token string:

{
  "token": "eyJhbGciOiJIUzI1NiIs..."
}

Extract result.token as the fingerprint session token in the browser and send only that session token string to your backend.

Retrieve fingerprint data with the session token on your backend

On your backend, use the extracted session token with the cside token endpoint that matches the data you need.

if (!sessionToken) {
  throw new Error("Fingerprint session token was not returned.");
}

const response = await fetch("https://api.cside.com/token/v1/client", {
  method: "POST",
  headers: { "Content-Type": "text/plain" },
  body: sessionToken,
});

const data = await response.json();

Request body

/client returns JSON like { "token": "..." }. Extract result.token as the session token and send that string as the request body. Do not send the whole JSON object.

Token lookup options

You can use the raw session token with the cside fingerprinting service in two ways:

EndpointResponseUse when
/token/v1/clientJSONYou need the full fingerprinting response payload.
/token/v1/clientIdPlain textYou only need the fingerprint unique ID.

The clientId endpoint returns only the fingerprint unique ID as plain text. If no fingerprint unique ID exists for the session token, it returns 404.

Example backend request

const csideResponse = await fetch("https://api.cside.com/token/v1/client", {
  method: "POST",
  headers: { "Content-Type": "text/plain" },
  body: sessionToken,
});

const data = await csideResponse.json();

Interpret the backend response

Your backend returns a JSON response containing the identification result and associated signals. See the full response reference below.

Response reference

This response reference applies to /token/v1/client.

The backend response includes visitor identification, browser details, IP intelligence, and a suite of fraud-detection signals.

Top-level fields

FieldTypeDescription
linked_idstringAn identifier you associated with this visitor.
tagsobjectCustom metadata attached to the event.
timestampnumberUnix timestamp (milliseconds) of the event.
event_idstringUnique identifier for this fingerprinting event.
urlstringThe page URL where the fingerprint was collected.
ip_addressstringThe visitor’s IP address.
user_agentstringThe raw User-Agent string from the visitor’s browser.
client_referrerstringThe referrer URL of the page.

browser_details

Details about the visitor’s browser and operating system.

FieldTypeDescription
browser_namestringBrowser name (e.g. "Chrome").
browser_major_versionstringMajor version number.
browser_full_versionstringFull version string.
osstringOperating system name.
os_versionstringOperating system version.
devicestringDevice type (e.g. "Other", "Mobile").

identification

The primary identification result for the visitor.

FieldTypeDescription
visitor_idstringA stable, unique identifier for this visitor.
confidence.scorenumberConfidence score between 0 and 1.
confidence.versionstringVersion of the confidence model used.
visitor_foundbooleanWhether this visitor has been seen before.
first_seen_atnumberUnix timestamp (ms) of the visitor’s first identification.
last_seen_atnumberUnix timestamp (ms) of the visitor’s most recent identification.

supplementary_id_high_recall

A secondary identification optimised for higher recall (fewer false negatives) at the cost of slightly lower precision.

FieldTypeDescription
visitor_idstringVisitor identifier under the high-recall model.
visitor_foundbooleanWhether this visitor was found.
confidence.scorenumberConfidence score between 0 and 1.
confidence.versionstringVersion of the confidence model used.
first_seen_atnumberUnix timestamp (ms) of first identification.
last_seen_atnumberUnix timestamp (ms) of most recent identification.

proximity

Geolocation proximity data for the visitor.

FieldTypeDescription
idstringProximity location identifier.
precision_radiusnumberPrecision radius in kilometres.
confidencenumberConfidence score for the proximity estimate.

ip_info

IP address information for the visitor.

FieldTypeDescription
v4.addressstringIPv4 address.
v6.addressstringIPv6 address.

ip_blocklist

Whether the visitor’s IP appears on known blocklists.

FieldTypeDescription
email_spambooleanIP is associated with email spam.
attack_sourcebooleanIP is a known attack source.
tor_nodebooleanIP is a Tor exit node.

Fraud & environment signals

Signals indicating suspicious or notable visitor attributes.

FieldTypeDescription
bot.resultstringBot detection result. Use "detected" or "not_detected".
bot.scorenumberBot detection score.
bot.signalstring[]Signals that contributed to the bot detection result.
root_appsbooleanDevice has root/superuser apps installed.
emulatorbooleanDevice is an emulator.
proxybooleanVisitor is using a proxy.
proxy_confidencestringConfidence level: "low", "medium", or "high".
vpnbooleanVisitor is using a VPN.
vpn_confidencestringConfidence level: "low", "medium", or "high".
incognitobooleanBrowser is in incognito/private mode.
tamperingbooleanBrowser attributes have been tampered with.
jailbrokenbooleanDevice is jailbroken.
fridabooleanFrida instrumentation toolkit detected.
virtual_machinebooleanVisitor is running in a virtual machine.
developer_toolsbooleanBrowser developer tools are open.
mitm_attackbooleanMan-in-the-middle attack detected.
replayedbooleanThe request is a replay of a previous request.
high_activity_devicebooleanUnusually high number of identifications from this device.
throwawayEmailbooleantrue when the submitted email identifier is a disposable or throwaway email address.

raw_device_attributes

Low-level browser fingerprint components.

FieldTypeDescription
mathstringHash of math engine output.
vendorstringGPU/graphics vendor string.

Full response example

{
  "linked_id": "somelinkedId",
  "tags": {},
  "timestamp": 1708102555327,
  "event_id": "1708102555327.NLOjmg",
  "url": "http://www.example.com/login",
  "ip_address": "61.127.217.15",
  "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...",
  "client_referrer": "https://example.com/blog/my-article",
  "browser_details": {
    "browser_name": "Chrome",
    "browser_major_version": "74",
    "browser_full_version": "74.0.3729",
    "os": "Windows",
    "os_version": "7",
    "device": "Other"
  },
  "identification": {
    "visitor_id": "Ibk1527CUFmcnjLwIs4A9",
    "confidence": { "score": 0.97, "version": "1.1" },
    "visitor_found": false,
    "first_seen_at": 1708102555327,
    "last_seen_at": 1708102555327
  },
  "supplementary_id_high_recall": {
    "visitor_id": "3HNey93AkBW6CRbxV6xP",
    "visitor_found": true,
    "confidence": { "score": 0.97, "version": "1.1" },
    "first_seen_at": 1708102555327,
    "last_seen_at": 1708102555327
  },
  "proximity": {
    "id": "w1aTfd4MCvl",
    "precision_radius": 10,
    "confidence": 0.95
  },
  "bot": {
    "result": "not_detected",
    "score": 0,
    "signal": []
  },
  "root_apps": false,
  "emulator": false,
  "ip_info": {
    "v4": { "address": "94.142.239.124" },
    "v6": { "address": "2001:db8:3333:4444:5555:6666:7777:8888" }
  },
  "ip_blocklist": {
    "email_spam": false,
    "attack_source": false,
    "tor_node": false
  },
  "proxy": true,
  "proxy_confidence": "low",
  "vpn": false,
  "vpn_confidence": "high",
  "incognito": false,
  "tampering": false,
  "jailbroken": false,
  "frida": false,
  "virtual_machine": false,
  "developer_tools": false,
  "mitm_attack": false,
  "replayed": false,
  "high_activity_device": false,
  "throwawayEmail": false,
  "raw_device_attributes": {
    "math": "5f030fa7d2e5f9f757bfaf81642eb1a6",
    "vendor": "Google Inc."
  }
}
Was this page helpful?