Skip to content
prune.

Verify a receipt

Paste a signed report or live prune_metadata (must include receipt_signature). Dashboard request logs are unsigned and will fail.

Use a signed 7-day report from the dashboard (Shield → Reports) or prune_metadata from a live API response. Dashboard log copies and the homepage walkthrough are not signed and will fail. How receipts work

Check it offline

You never have to take this page's word for it. Fetch the published Ed25519 public key and check the signature yourself:

pip install "prune-sdk>=0.3.3"
python -c "
from prune.verify import verify_receipt
import json
verify_receipt(json.load(open('receipt.json')))
print('valid')
"

# Or raw cryptography against the allowlist (see /docs/receipts):
# SIGNED_FIELDS + DEFAULTS match prune-backend receipt_signing_service.py

The signature covers a fixed allowlist (cache hit/type, tokens, dollar fields, request hash, models) as canonical JSON. receipt_signed_at is included; only the signature and key id are excluded. Use prune-sdk>=0.3.3 or /docs/receipts. GET /v1/public-key · POST /v1/receipts/verify