> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fingerprintiq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quick Start

Get your first device fingerprint in under 5 minutes.

## 1. Get Your API Key

Sign up at [fingerprintiq.com](https://fingerprintiq.com/login) and create an API key from the dashboard.

Use a `fiq_test_` key during development. Test keys have the same full functionality but are excluded from your monthly quota.

## 2. Install the SDK

```bash npm
npm install @fingerprintiq/js
```

```bash yarn
yarn add @fingerprintiq/js
```

```bash pnpm
pnpm add @fingerprintiq/js
```

```html CDN
<script src="https://cdn.fingerprintiq.com/v1/fiq.min.js"></script>
```

This guide covers **Identify** (`@fingerprintiq/js`), the browser fingerprinting product. If you want server-side caller classification, see the [Sentinel guide](/guides/sentinel) (`@fingerprintiq/server`). For CLI and agent analytics, see the [Pulse guide](/guides/pulse) (`@fingerprintiq/pulse`).

## 3. Identify a Visitor

```javascript
import FingerprintIQ from '@fingerprintiq/js';

const fiq = new FingerprintIQ({
  apiKey: 'fiq_live_your_api_key_here',
});

const result = await fiq.identify({
  tag: { page: 'checkout' },
  linkedId: 'user_123',
});

console.log(result.visitorId);      // "iq_01hns3k6tez83695a6t714s6n1"
console.log(result.requestId);      // "req_01hns3k6tez83695a6t7"
console.log(result.confidence);     // 1.0
console.log(result.botProbability); // 0.05
console.log(result.suspectScore);   // 0
console.log(result.visitCount);     // 3
```

The SDK collects all 41 browser signals in parallel before sending a single request. The edge worker adds JA4/TLS, ASN, HTTP, and RTT-based analysis before computing the visitor ID. Total collection time is typically 50–150 ms depending on device speed.

## 4. Inspect the Response

```json
{
  "requestId": "req_01hns3k6tez83695a6t7",
  "visitorId": "iq_01hns3k6tez83695a6t714s6n1",
  "confidence": 1.0,
  "botProbability": 0.05,
  "suspectScore": 0,
  "visitCount": 3,
  "firstSeenAt": 1712000000000,
  "lastSeenAt": 1712200000000,
  "riskFactors": [],
  "verdicts": {
    "bot": { "result": false, "probability": 0.05 },
    "vpn": { "result": false, "confidence": 0.92 },
    "tor": { "result": false },
    "proxy": { "result": false },
    "incognito": { "result": false },
    "tampering": { "result": false, "anomalyScore": 0 },
    "headless": { "result": false },
    "virtualMachine": { "result": false },
    "devtools": { "result": false },
    "privacyBrowser": { "result": false, "name": null },
    "highActivity": { "result": false },
    "ipBlocklist": { "result": false }
  },
  "ip": "203.0.113.42",
  "ipLocation": { "country": "US", "city": "New York", "region": "NY", "latitude": 40.71, "longitude": -74.01 },
  "timestamp": 1712000003000
}
```

The same `visitorId` persists across sessions, incognito mode, cookie clearing, and IP changes. Try it on the [live demo](https://fingerprintiq.com/demo).

## 5. Verify Server-Side (Recommended)

After identifying on the client, pass the `requestId` to your backend and look up the full event via the Server API. This gives you complete signal data and prevents client-side spoofing.

```typescript
// Your backend (Node.js, Hono, Next.js API route, etc.)
const res = await fetch(
  `https://fingerprintiq.com/v1/events/${result.requestId}`,
  { headers: { 'Authorization': 'Bearer fiq_secret_your_key' } }
);
const event = await res.json();
// Full signals available in event.signals.client and event.signals.server

const isLegitimate =
  event.confidence >= 0.8 &&
  event.botProbability < 0.3 &&
  !event.verdicts.bot.result;
```

Never make trust decisions based solely on client-side data. Always verify the `visitorId` on your server before granting access or taking action.

## Next Steps

**[JavaScript Guide](/guides/javascript)**

Error handling, use cases, and full configuration for vanilla JS
  **[React Guide](/guides/react)**

React hooks and component patterns for SPAs
  **[Server-Side Verification](/guides/server-side)**

Validate fingerprints on your backend securely
  **[Server API](/api/events)**

Retrieve full signal data via GET /v1/events/:requestId
  **[Browser Signal Reference](/signals/overview)**

Understand all 41 browser signals and their entropy scores