POST /api/v1/agent/passport/verify
Server-side passport freshness check. Verifies signature, expiry, agent status, and authority key revocation.
Auth: None (public)
Base URL: https://provenonce.io
Use this when you need real-time verification of a passport’s validity. For offline verification, use BeatAgent.verifyPassportLocally() from the SDK.
Request
curl -X POST https://provenonce.io/api/v1/agent/passport/verify \
-H "Content-Type: application/json" \
-d '{
"passport": {
"format_version": 1,
"agent_hash": "0xfd752396...",
"agent_public_key": "DAsDZb5p...",
"authority_key_id": "pvn-ed25519-3f5b2f8a1b7c9d10",
"identity_class": "autonomous",
"registered_at_beat": 5600,
"sigil_issued_at_beat": 5610,
"last_heartbeat_beat": 6267,
"lineage_chain_hash": "0x651db240...",
"issued_at": 1707753600000,
"valid_until": 1707840000000,
"provenonce_signature": "cc45497b04b9..."
}
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
passport | object | Yes | A signed Passport object (all fields required) |
Response
{
"valid": true,
"checks": {
"signature": true,
"not_expired": true,
"agent_active": true,
"key_not_revoked": true
},
"agent_status": "active",
"checked_at": "2026-02-12T12:05:00.000Z"
}Response fields
| Field | Type | Description |
|---|---|---|
valid | boolean | Overall validity (all checks pass) |
checks.signature | boolean | Ed25519 signature is valid |
checks.not_expired | boolean | valid_until is in the future |
checks.agent_active | boolean | Agent is not frozen or refused |
checks.key_not_revoked | boolean | Authority key is not on the CRL |
agent_status | string | null | Current agent status, or null if lookup failed |
checked_at | string | ISO 8601 timestamp of the check |
Error responses
| Status | Body | Cause |
|---|---|---|
| 400 | {"error": "...", "code": "INVALID_JSON"} | Malformed JSON |
| 400 | {"error": "...", "code": "PASSPORT_INVALID"} | Missing or malformed passport |
| 413 | {"error": "...", "code": "BODY_TOO_LARGE"} | Request exceeds 8 KB |
| 429 | {"error": "...", "code": "RATE_LIMITED"} | Rate limit exceeded |