verify_proof_of_play
Verify cryptographic proof of ad delivery or get campaign proofs.
Requires either campaign_id or proof_payload (at least one must be provided).
Two modes:
Verify a proof: pass proof_payload with signature fields to verify
Get proofs: pass campaign_id to get Ed25519-signed proofs for a campaign
Uses Ed25519 signatures (v2) that can be independently verified by third parties using the Trillboards public key.
WHEN TO USE:
Verifying that ads were actually delivered to screens
Exporting cryptographically signed proof records for auditors
Getting proof-of-play data for campaign transparency reports
RETURNS (verify mode):
valid: boolean, reason: string if invalid, version: 'v1' or 'v2'
RETURNS (get proofs mode):
campaignId, totalImpressions, proofsReturned
proofs: Array of signed impression proofs
pagination: { limit, hasMore, nextCursor }
signatureVersion, publicKeyUrl
EXAMPLE (verify): verify_proof_of_play({ proof_payload: { signature: "ed25519=abc123...", timestamp: "2026-03-10T15:30:00Z", adId: "ad_123", impressionId: "imp_456", screenId: "scr_789", deviceId: "dev_012" } })
EXAMPLE (get proofs): verify_proof_of_play({ campaign_id: "camp_abc123", start_date: "2026-03-01", end_date: "2026-03-10" })
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max proofs to return (default: 1000, used with campaign_id) | |
| cursor | No | Pagination cursor from previous response (used with campaign_id) | |
| end_date | No | End date for proof query (YYYY-MM-DD, used with campaign_id) | |
| start_date | No | Start date for proof query (YYYY-MM-DD, used with campaign_id) | |
| campaign_id | No | Campaign ID to get proofs for (mutually exclusive with proof_payload) | |
| proof_payload | No | Proof data to verify (mutually exclusive with campaign_id). Must include: signature, timestamp, adId, impressionId, screenId, deviceId |