Before you submit — these must be correct
If any of these are wrong, your token may be accepted by our solver but rejected or scored poorly by the target site.
- proxy is required for all ThreatMetrix solves — the IP reputation is part of the fingerprint.
- Include all returned cookies on your follow-up request. A missing ThreatMetrix cookie can trigger a challenge or deny outcome even on a clean residential IP.
ThreatMetrix Device-Fingerprinting Solver, solved in 5.0s.
Automate ThreatMetrix (LexisNexis Risk Solutions) session profiling. Pass org_id, session_id, and custom_domain — we fingerprint in a real browser so your risk query returns allow.
ThreatMetrix (LexisNexis Risk Solutions) is a fraud-prevention SDK used by banks and e-commerce sites. It fingerprints the device and browser during login or checkout, producing a risk score the merchant checks server-side. Our solver runs the profiling step in a real capium browser so your session appears as a genuine, profiled device.
Quick Integration
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "ThreatMetrixTaskProxyLess",
"task_type": "ThreatMetrixTaskProxyLess",
"target_url": "https://www.kleinanzeigen.de/m-einloggen.html",
"org_id": "181rzcrc",
"page_id": "94",
"session_id": "3029471b-4b25-41cd-8d78-46598448325e",
"custom_domain": "dfme.kleinanzeigen.de",
"title": "Login - Anmelden bei Kleinanzeigen"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
1. Send Payload
Dispatch your ThreatMetrixTaskProxyLess to our processing cluster via the secure API endpoint.
2. Solving Engine
We launch a self-owned capium browser with your proxy, navigate to the target page, set the document title, and inject the ThreatMetrix tags.js script with your session_id. We wait for the profiling beacon then return the session_id alongside any ThreatMetrix cookies the site expects.
3. Get Result
Poll getTaskResult for the validated token, then finalize your automated request.
Using your own proxy
Use ThreatMetrixTask instead of ThreatMetrixTaskProxyLess to route the solve through your own proxy — useful when the target site checks that the solving IP matches the submitting IP.
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "ThreatMetrixTask",
"task_type": "ThreatMetrixTask",
"target_url": "https://www.kleinanzeigen.de/m-einloggen.html",
"org_id": "181rzcrc",
"page_id": "94",
"session_id": "3029471b-4b25-41cd-8d78-46598448325e",
"custom_domain": "dfme.kleinanzeigen.de",
"title": "Login - Anmelden bei Kleinanzeigen",
"proxyType": "http",
"proxyAddress": "ip",
"proxyPort": "port",
"proxyLogin": "username",
"proxyPassword": "password"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
Additional proxy parameters
proxyTypetypestringreqrequiredProxy protocol: http, https, socks4, or socks5proxyAddresstypestringreqrequiredProxy IP address or hostnameproxyPorttypenumberreqrequiredProxy port numberproxyLogintypestringreqoptionalProxy username (if auth required)proxyPasswordtypestringreqoptionalProxy password (if auth required)userAgenttypestringreqoptionalUser-Agent string to use. Must match the UA you use when submitting the tokenTask Parameters
API Spectarget_urltypestringreqrequiredFull URL of the page that loads ThreatMetrix (e.g. the login or checkout page).org_idtypestringreqrequiredThreatMetrix organisation ID configured on the target site (e.g. '181rzcrc').page_idtypestringreqrequiredThreatMetrix page identifier for this flow (e.g. '94'). Found in the tags.js URL query string.session_idtypestringreqrequiredThe session UUID you generated for this transaction. ThreatMetrix binds the fingerprint to this ID; you query their API with it later.custom_domaintypestringreqrequiredThreatMetrix custom domain for this site (e.g. dfme.kleinanzeigen.de). Found in the tags.js script src on the target page.titletypestringreqoptionaldocument.title of the target page. ThreatMetrix includes the page title in its fingerprint — match the real page for the cleanest profile.Response Shape
session_idtypestringEcho of the session_id you submitted, confirmed as profiled. Use this in your ThreatMetrix server-side API query.cookiestypeobjectDict of ThreatMetrix cookies set during profiling (e.g. _tfpdef, _tfinf). Some sites require these cookies on the follow-up request — send them all.userAgenttypestringThe User-Agent used during profiling. Set this on your subsequent request for fingerprint coherence.Features
Pricing & Stats
Start solving threatmetrix device-fingerprinting.
$0.10 in free credits — no card. ~250 free solves to test before you spend.