# API Armor — Full Documentation > API protection and anti-fraud platform: disposable-email and IP-reputation checks plus device fingerprinting. This file contains the full API Armor documentation as Markdown, concatenated for LLM consumption. It covers two products: Bifrost, a REST API (bifrost.api-armor.com) for disposable/temporary email detection and IP reputation checks called from your backend, and Argus, an embeddable browser SDK that returns a stable device fingerprint (argus_visitor_id) from a single script tag. The link index is at https://api-armor.com/llms.txt, and any single page is available by appending ".md" to its URL. # Introduction URL: https://api-armor.com/docs > Protect your application from fraud and abuse. Bifrost validates emails and IP reputation via REST API; Argus fingerprints devices with an embeddable browser SDK. - [Simple REST API](/docs/quick-start): Easy-to-integrate REST API with a single endpoint - [99.9% Uptime](/docs/api-reference): Reliable service with guaranteed uptime - [Free Tier](/pricing): Free tier available for developers - [Real-time Updates](/docs/api-reference): Domain database updated in real-time ## Two products, one platform [#two-products-one-platform] **Bifrost** is a REST API for disposable-email and IP-reputation checks you call from your backend. **Argus** is an embeddable device-fingerprinting SDK you add to your website with a single ` ``` That's it. On page load Argus collects signals, calls the fingerprint service, and exposes the result. ## Step 2: Read the result [#step-2-read-the-result] Argus sets the result on `window.AAArgus` **after** the request finishes (it's `undefined` until then, and `null` if the request failed). Poll for it with a small helper: ```html ``` See the [Response reference](/docs/argus/response) for every field. ## Step 3: Try debug mode [#step-3-try-debug-mode] Add `debug="true"` to print a colored, boxed readout of the fingerprint to the browser console: ```html ``` Open DevTools → Console (F12) to see the `argus_visitor_id`, JA4, IP, and the full payload. Remove `debug="true"` in production. > **Testing locally** > > Argus works on `localhost`, `127.0.0.1`, and `[::1]` even though they aren't your registered domain — loopback origins are always allowed for development. Your site-id and plan still apply. ## Next [#next] - [Framework guides](/docs/argus/frameworks): Next.js, React, and Vue/Nuxt integration. - [Advanced usage](/docs/argus/advanced): Manual control, storage hints, and SPA re-identification. --- # Framework Guides URL: https://api-armor.com/docs/argus/frameworks > Copy-paste Argus integration for plain HTML, Next.js, React, and Vue/Nuxt. Every integration loads the same CDN tag and reads the asynchronously-populated `window.AAArgus`. Pick your stack. ## Plain HTML [#plain-html] Put the tag before `` (or in `` with `async`): ```html ``` ## Next.js [#nextjs] Use `next/script` with `strategy="afterInteractive"`. Custom attributes like `site-id` pass straight through. ```tsx // app/layout.tsx import Script from 'next/script'; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( {children} ``` On failure, debug mode also prints the error body, which includes the `type` (`auth`, `payment`, `origin`, `unavailable`) — match it to the table above. ## "Nothing happens" checklist [#nothing-happens-checklist] * **No `site-id`?** The SDK logs the missing-attribute message and stops. Add the attribute. * **`window.AAArgus` is `undefined`?** It's populated asynchronously — poll with the `onArgus` helper from [Quick start](/docs/argus/quick-start). `undefined` = still running; `null` = failed. * **Script never loads?** Check your Content-Security-Policy allows `script-src https://fpcdn.api-armor.com`, and that an ad-blocker isn't blocking it. * **Works locally but 403 in production?** The production origin must match the verified domain — re-check the domain you registered.