Provenance
API Provenance
Atteste l'origine d'une requête et la consigne dans un registre infalsifiable.
Créer une attestation
Paramètres
- ipstringObligatoire
IP de l'utilisateur final à attester.
- claimed_jurisdictionstring
Juridiction revendiquée par la requête, par exemple us-ut, uk, au ou eu.
- request_contextobject
Tout objet JSON, stocké avec l'attestation.
Champs de la réponse
- network_originstring
residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay ou unknown.
- anonymizedboolean
true si le réseau masque la personne derrière. L'hébergement compte, sauf l'infrastructure connue.
- methodstring
Le signal qui a décidé du verdict.
- confidencenumber
Confiance de 0 à 1.
- policy_actionstring
allow, step_up ou block selon la juridiction revendiquée.
- attestation_idinteger
Id de l'attestation scellée.
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
}Vérifier la chaîne
Champs de la réponse
- okboolean
true si chaque hash d'entrée et chaque lien sont valides.
- countinteger
Entrées vérifiées.
- brokenAtinteger
Id de la première entrée modifiée, ou 0 si la chaîne est intacte.
curl https://ipscanner.io/v1/provenance/verify \
-H "Authorization: Bearer YOUR_API_KEY"{
"ok": true,
"count": 80421,
"brokenAt": 0
}Vérifier par rapport à l'ancre quotidienne
Champs de la réponse
- okboolean
true si chaque hash d'entrée et chaque lien sont valides.
- countinteger
Entrées vérifiées.
- brokenAtinteger
Id de la première entrée modifiée, ou 0 si la chaîne est intacte.
- yoursinteger
Nombre d'entrées qui vous appartiennent.
- anchorobject | null
Dernier hash racine quotidien, ou null avant le premier.
- atstring
Moment de la vérification.
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"
}Lire la chaîne
Paramètres
- limitintegerquery
Taille de page, 50 par défaut et 200 au maximum.
- beforeintegerquery
Renvoie les entrées plus anciennes que cet id, pour paginer.
Champs de la réponse
- linksarray
Entrées de la chaîne, les plus récentes d'abord.
- links[].entryHashstring
Hash de cette entrée.
- links[].prevHashstring
Hash de l'entrée précédente.
- links[].linkOkboolean
true si cette entrée est liée à la précédente.
- nextBeforeinteger
À passer comme before pour la page suivante ; 0 signifie qu'il n'y en a pas.
- totalinteger
Attestations sur votre compte.
- summaryobject
Nombre d'attestations par action de politique.
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"
}Lister les juridictions
Champs de la réponse
- jurisdictions[].codestring
Code à envoyer comme claimed_jurisdiction.
- jurisdictions[].lawstring
La loi que suit la règle.
- jurisdictions[].strictboolean
true si une origine masquée est refusée d'emblée.
- jurisdictions[].cleanActionstring
Action pour une origine propre.
- jurisdictions[].maskedActionstring
Action pour une origine masquée.
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."
}
]
}Exporter les preuves
Paramètres
- fromstringquery
Début de la période, au format YYYY-MM-DD ou RFC 3339.
- tostringquery
Fin de la période, au format YYYY-MM-DD ou 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...