Provenance
API de Provenance
Certifica de dónde viene una solicitud y guarda un registro a prueba de manipulación.
Crear una atestación
Parámetros
- ipstringObligatorio
IP del usuario final a atestar.
- claimed_jurisdictionstring
Jurisdicción que declara la solicitud, como us-ut, uk, au o eu.
- request_contextobject
Cualquier objeto JSON, guardado con la atestación.
Campos de la respuesta
- network_originstring
residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay o unknown.
- anonymizedboolean
True cuando la red oculta a la persona que hay detrás. El hosting cuenta, salvo la infraestructura conocida.
- methodstring
Qué señal decidió el veredicto.
- confidencenumber
Confianza de 0 a 1.
- policy_actionstring
allow, step_up o block según la jurisdicción declarada.
- attestation_idinteger
Id de la atestación sellada.
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
}Verificar la cadena
Campos de la respuesta
- okboolean
True cuando cada hash y enlace es correcto.
- countinteger
Entradas comprobadas.
- brokenAtinteger
Id de la primera entrada alterada, o 0 si la cadena está intacta.
curl https://ipscanner.io/v1/provenance/verify \
-H "Authorization: Bearer YOUR_API_KEY"{
"ok": true,
"count": 80421,
"brokenAt": 0
}Verificar contra el anclaje diario
Campos de la respuesta
- okboolean
True cuando cada hash y enlace es correcto.
- countinteger
Entradas comprobadas.
- brokenAtinteger
Id de la primera entrada alterada, o 0 si la cadena está intacta.
- yoursinteger
Cuántas de las entradas son tuyas.
- anchorobject | null
Hash raíz diario más reciente, o null antes del primero.
- atstring
Cuándo se hizo la verificación.
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"
}Leer la cadena
Parámetros
- limitintegerconsulta
Tamaño de página, 50 por defecto y 200 como máximo.
- beforeintegerconsulta
Devuelve entradas anteriores a este id, para paginar.
Campos de la respuesta
- linksarray
Entradas de la cadena, de la más reciente a la más antigua.
- links[].entryHashstring
Hash de esta entrada.
- links[].prevHashstring
Hash de la entrada anterior.
- links[].linkOkboolean
True cuando esta entrada enlaza con la anterior.
- nextBeforeinteger
Pásalo como before para la página siguiente; 0 indica que no hay más.
- totalinteger
Atestaciones de tu cuenta.
- summaryobject
Número de atestaciones por acción de política.
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"
}Listar jurisdicciones
Campos de la respuesta
- jurisdictions[].codestring
Código a enviar como claimed_jurisdiction.
- jurisdictions[].lawstring
La ley que sigue la regla.
- jurisdictions[].strictboolean
True cuando un origen enmascarado se rechaza sin más.
- jurisdictions[].cleanActionstring
Acción para un origen limpio.
- jurisdictions[].maskedActionstring
Acción para un origen enmascarado.
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."
}
]
}Exportar evidencias
Parámetros
- fromstringconsulta
Inicio del rango, en YYYY-MM-DD o RFC 3339.
- tostringconsulta
Fin del rango, en YYYY-MM-DD o 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...