Provenance
Provenance API
Bestätigt, woher eine Anfrage kommt, und speichert sie in einem manipulationssicheren Protokoll.
Attestierung erstellen
Parameter
- ipstringErforderlich
Zu attestierende IP des Endnutzers.
- claimed_jurisdictionstring
Rechtsraum, den die Anfrage angibt, etwa us-ut, uk, au oder eu.
- request_contextobject
Beliebiges JSON-Objekt, wird mit der Attestierung gespeichert.
Antwortfelder
- network_originstring
residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay oder unknown.
- anonymizedboolean
true, wenn das Netzwerk die Person dahinter verbirgt. Hosting zählt dazu, außer bekannter Infrastruktur.
- methodstring
Welches Signal das Urteil entschied.
- confidencenumber
Konfidenz von 0 bis 1.
- policy_actionstring
allow, step_up oder block im angegebenen Rechtsraum.
- attestation_idinteger
ID der versiegelten Attestierung.
curl -X POST https://ipscanner.io/v1/provenance/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ip": "203.0.113.24",
"claimed_jurisdiction": "us-ut",
"request_context": {
"gate": "age-verification"
}
}'{
"network_origin": "vpn",
"anonymized": true,
"method": "ip_state:vpn",
"confidence": 0.9,
"policy_action": "block",
"attestation_id": 80421
}Kette verifizieren
Antwortfelder
- okboolean
true, wenn jeder Eintrags-Hash und jede Verknüpfung stimmt.
- countinteger
Geprüfte Einträge.
- brokenAtinteger
ID des ersten veränderten Eintrags, oder 0, wenn die Kette intakt ist.
curl https://ipscanner.io/v1/provenance/verify \
-H "Authorization: Bearer YOUR_API_KEY"{
"ok": true,
"count": 80421,
"brokenAt": 0
}Gegen den täglichen Anker verifizieren
Antwortfelder
- okboolean
true, wenn jeder Eintrags-Hash und jede Verknüpfung stimmt.
- countinteger
Geprüfte Einträge.
- brokenAtinteger
ID des ersten veränderten Eintrags, oder 0, wenn die Kette intakt ist.
- yoursinteger
Wie viele der Einträge Ihnen gehören.
- anchorobject | null
Neuester täglicher Root-Hash, oder null vor dem ersten.
- atstring
Zeitpunkt der Verifizierung.
curl -X POST https://ipscanner.io/v1/provenance/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"ok": true,
"count": 80421,
"brokenAt": 0,
"yours": 1204,
"anchor": {
"day": "2026-10-05",
"rootHash": "9f2c4e1a7b0d3c58e6f1a2b4c7d9e0f3a5b8c1d4e7f0a3b6c9d2e5f8a1b4c7d0",
"lastId": 80390
},
"at": "2026-10-06T14:05:00Z"
}Kette lesen
Parameter
- limitintegerQuery
Seitengröße, standardmäßig 50, höchstens 200.
- beforeintegerQuery
Einträge älter als diese ID zurückgeben, zum Blättern.
Antwortfelder
- linksarray
Einträge der Kette, neueste zuerst.
- links[].entryHashstring
Hash dieses Eintrags.
- links[].prevHashstring
Hash des vorherigen Eintrags.
- links[].linkOkboolean
true, wenn dieser Eintrag auf den vorherigen verweist.
- nextBeforeinteger
Für die nächste Seite als before übergeben; 0 heißt, es gibt keine.
- totalinteger
Attestierungen in Ihrem Konto.
- summaryobject
Anzahl der Attestierungen pro Policy-Aktion.
curl "https://ipscanner.io/v1/provenance/chain?limit=1" \
-H "Authorization: Bearer YOUR_API_KEY"{
"links": [
{
"id": 80421,
"ts": "2026-10-06T14:02:11Z",
"ip": "203.0.113.24",
"claimedJurisdiction": "us-ut",
"networkOrigin": "vpn",
"anonymized": true,
"method": "ip_state:vpn",
"confidence": 0.9,
"policyAction": "block",
"entryHash": "b41f0c9e2d7a6358c1e4f7a0b3d6c9e2f5a8b1c4d7e0f3a6b9c2d5e8f1a4b7c0",
"prevHash": "7e3a9c1f5b2d8e4a6c0f3b7d1e5a9c2f6b0d4e8a2c6f0b4d8e2a6c0f4b8d2e6a",
"prevId": 80420,
"entryOk": true,
"linkOk": true
}
],
"nextBefore": 80421,
"total": 1204,
"summary": {
"allow": 1090,
"step_up": 71,
"block": 43
},
"anchor": null,
"jurisdictions": [],
"asOf": "2026-10-06T14:05:00Z"
}Rechtsräume auflisten
Antwortfelder
- jurisdictions[].codestring
Code, der als claimed_jurisdiction gesendet wird.
- jurisdictions[].lawstring
Das Gesetz, dem die Regel folgt.
- jurisdictions[].strictboolean
true, wenn eine verschleierte Herkunft direkt abgelehnt wird.
- jurisdictions[].cleanActionstring
Aktion bei sauberer Herkunft.
- jurisdictions[].maskedActionstring
Aktion bei verschleierter Herkunft.
curl https://ipscanner.io/v1/provenance/jurisdictions \
-H "Authorization: Bearer YOUR_API_KEY"{
"jurisdictions": [
{
"code": "us-ut",
"label": "Utah",
"law": "Utah SB 73",
"strict": true,
"cleanAction": "allow",
"maskedAction": "block",
"rule": "Age-gated access requires a verified in-state location. A masked origin is refused outright."
},
{
"code": "eu",
"label": "European Union",
"law": "DSA minor protection",
"strict": false,
"cleanAction": "allow",
"maskedAction": "step_up",
"rule": "A masked origin is sent for stronger checks rather than refused, so travellers and privacy tools are not locked out."
}
]
}Nachweise exportieren
Parameter
- fromstringQuery
Beginn des Zeitraums, als YYYY-MM-DD oder RFC 3339.
- tostringQuery
Ende des Zeitraums, als YYYY-MM-DD oder RFC 3339.
curl "https://ipscanner.io/v1/provenance/export?from=2026-10-01&to=2026-10-31" \
-H "Authorization: Bearer YOUR_API_KEY"# provenance evidence export
# range,2026-10-01,2026-10-31
# chain_verified,true,count,80421
id,ts,ip,claimed_jurisdiction,network_origin,anonymized,method,confidence,policy_action,entry_hash
80421,2026-10-06T14:02:11Z,203.0.113.24,us-ut,vpn,true,ip_state:vpn,0.9000,block,b41f0c9e2d7a...