Home/API Dokumentation

FAHNDUNGX API

REST-API für Entwickler – Seriennummer, IMEI, FIN, Personenabfrage und Webhook-Integration. ClaimsShield API v1.

Endpunkte
Authentifizierung POST /query/serial POST /query/person POST /devices/add POST /persons/add GET /alerts POST /webhook/set GET /ping
API Sandbox

Sandbox-Key zum Testen:

SANDBOX-FAHNDUNGX-2026
Sandbox öffnen
Base URL https://check.fahndungx.com/api
HTTP-Codes
200 OK · 400 Fehler · 401 Unauth · 403 Gesperrt · 404 Unbekannt · 500 Server

Authentifizierung

Alle Anfragen benötigen einen API-Key. Dieser kann auf drei Arten übermittelt werden:

# 1. JSON-Body
"api_key": "ihr-api-key"
# 2. HTTP-Header
X-API-Key: ihr-api-key
# 3. GET-Parameter
?api_key=ihr-api-key
POST /api/query/serial Seriennummer · IMEI · FIN · Kennzeichen
api_key string · Pflicht API-Schlüssel
identifier string · Pflicht IMEI, Seriennr., FIN oder Kennzeichen
category string · Pflicht electronics · vehicle · jewelry · art · other
claim_ref string · Optional Schadensnummer (wird zurückgegeben)
insurance_ref string · Optional Versicherungsnummer (wird zurückgegeben)
Antwort: stolen (bool) · classification (AUFFÄLLIG/UNAUFFÄLLIG) · risk_class (HOCH/MITTEL/NIEDRIG/KEINES) · score (0–100) · query_count · queries (Datum, Händler, Adresse, Verkäufer-Daten) · monitoring
# cURL Beispiel
curl -X POST https://check.fahndungx.com/api/query/serial \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "ihr-api-key",
    "identifier": "352099001761481",
    "category": "electronics"
  }'
POST /api/query/person Watchlist · Fahndung · Tätersuche
api_key string · Pflicht API-Schlüssel
nachname string · Pflicht Nachname der Person
vorname string · Pflicht Vorname der Person
geburtsdatum string · Pflicht Format: YYYY-MM-DD
plz string · Pflicht Postleitzahl
ort string · Pflicht Ort
strasse string · Optional Straße
hausnummer string · Optional Hausnummer
Antwort: found (bool) · match_count (int) · results (Datum, Kategorie, Identifier, Händler, Verkäufer-Daten)
POST /api/devices/add Gestohlenes Objekt hinterlegen & überwachen
api_key string · Pflicht API-Schlüssel
identifier string · Pflicht Seriennummer / IMEI / FIN
category string · Pflicht electronics · vehicle · jewelry · other
versicherter string · Optional Name des Versicherungsnehmers
marke string · Optional Hersteller / Marke
modell string · Optional Modellbezeichnung
schaden_nr string · Optional Schadensnummer
incident_date string · Optional Datum des Diebstahls (YYYY-MM-DD)
Antwort: device_id · retroactive_hits — Anzahl bereits existierender Abfragen zu diesem Identifier
POST /api/persons/add Person auf Watchlist setzen
api_key string · Pflicht API-Schlüssel
nachname string · Pflicht Nachname
vorname string · Optional Vorname
geburtsdatum string · Pflicht Format: YYYY-MM-DD
strasse string · Optional Straße
hausnummer string · Optional Hausnummer
plz string · Optional Postleitzahl
ort string · Optional Ort
Antwort: watch_id · retroactive_hits
GET /api/alerts Treffer-Alerts abrufen
api_key string · Pflicht API-Schlüssel
status string · Optional new · read · all (Standard: new)
Antwort: alerts (array: id, type, identifier, status, query_date, querier, seller-Daten)
Empfehlung: Nutzen Sie den Webhook (/api/webhook/set) statt Polling für Echtzeit-Alerts.
POST /api/webhook/set Echtzeit-Alerts — kein Polling

Bei jedem Treffer sendet FAHNDUNGX automatisch einen POST-Request an Ihre URL — mit vollständigen Seller-Daten und KI-Klassifikation.

api_key string · Pflicht API-Schlüssel
webhook_url string · Pflicht Ihre HTTPS-Endpoint-URL
webhook_secret string · Optional HMAC-Secret (wird generiert wenn leer)
Signatur prüfen: Header X-FAHNDUNGX-Signature = HMAC-SHA256 des JSON-Body mit Ihrem Secret.
# PHP Signaturprüfung
$sig = hash_hmac('sha256', $body, $secret);
if (!hash_equals($sig, $_SERVER['HTTP_X_FAHNDUNGX_SIGNATURE'])) {
  http_response_code(401); exit;
}
GET /api/ping Status-Check

Prüft ob die API erreichbar ist. Kein API-Key erforderlich.

Code-Beispiele

PHP
<?php
$api_key    = 'ihr-api-key';
$identifier = '352099001761481';
$category   = 'electronics';

$response = file_get_contents('https://check.fahndungx.com/api/query/serial', false,
    stream_context_create(['http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/json',
        'content' => json_encode(compact('api_key','identifier','category')),
    ]])
);

$result = json_decode($response, true);

if ($result['stolen']) {
    // TREFFER — Ankauf ablehnen
    echo 'GESTOHLEN: ' . $result['classification'];
} else {
    echo 'OK: ' . $result['classification'] . ' — Score: ' . $result['score'];
}
Python
import requests

response = requests.post(
    'https://check.fahndungx.com/api/query/serial',
    json={
        'api_key':    'ihr-api-key',
        'identifier': '352099001761481',
        'category':   'electronics',
    }
)

result = response.json()

if result['stolen']:
    print(f"GESTOHLEN: {result['classification']}")
else:
    print(f"OK: {result['classification']} — Score: {result['score']}")
JavaScript / Node.js
const response = await fetch('https://check.fahndungx.com/api/query/serial', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    api_key:    'ihr-api-key',
    identifier: '352099001761481',
    category:   'electronics',
  })
});

const result = await response.json();

if (result.stolen) {
  console.log('GESTOHLEN:', result.classification);
} else {
  console.log('OK:', result.classification, '— Score:', result.score);
}
Webhook Handler (PHP) — direkt auf Server einspielbar
<?php
// webhook_handler.php — auf Ihrem Server speichern
// URL dann per /api/webhook/set registrieren

define('WEBHOOK_SECRET', 'ihr-webhook-secret');

$body      = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_FAHNDUNGX_SIGNATURE'] ?? '';
$expected  = hash_hmac('sha256', $body, WEBHOOK_SECRET);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('Unauthorized');
}

$data = json_decode($body, true);

if ($data['event'] === 'serial_hit') {
    // Gerät als gestohlen erkannt
    $identifier = $data['identifier'];
    $seller     = $data['seller'];
    $querier    = $data['querier'];

    // Ihre Logik hier:
    // - Ankauf blockieren
    // - Benachrichtigung senden
    // - Ins CRM eintragen
    error_log("TREFFER: $identifier von $querier — Verkäufer: {$seller['vorname']} {$seller['nachname']}");
}

if ($data['event'] === 'watch_hit') {
    // Person auf Watchlist erkannt
    $person  = $data['person'];
    $querier = $data['querier'];
    error_log("WATCHLIST: $person bei $querier erkannt");
}

http_response_code(200);
echo 'OK';