What the attestation report proves
The attestation report is the gateway’s proof of identity. It proves the API is served by a specific workload running inside a genuine TEE and publishes the public keys used to sign receipts and support end-to-end encryption. Fetch it before trusting receipts:What to inspect first
api_versionisaci/1.attestation.freshness.stale_afteris in the future.workload_idandworkload_keyset_digestare present; receipts must cite the same values.attestation.source_provenancematches the gateway release you trust.attestation.report_datais bound to your nonce and the published keyset.
What the report contains
Verification steps
1. Verify the TEE quote
Verifyattestation.evidence.quote against Intel DCAP collateral and confirm the quote’s report data matches attestation.report_data.
You can use Phala’s public verification service for TDX quote decoding:
2. Verify nonce and keyset binding
The quote’s report data must commit to the nonce you generated and to the gateway keyset. This prevents replay and proves the receipt-signing keys belong to the attested workload. At a high level, your verifier should:- Canonicalize the
workload_keyset. - Recompute the expected keyset digest.
- Confirm the quote report data binds that digest and your
NONCE. - Confirm
workload_keyset_digestmatches the recomputed digest.
3. Verify the keyset endorsement
Verifyattestation.keyset_endorsement under attestation.workload_keyset.workload_identity. This ties the receipt signing keys and E2EE keys to the attested workload identity.
Receipts are only valid when their signatures verify under a key from attestation.workload_keyset.receipt_signing_keys.
4. Check freshness and provenance
attestation.freshness.stale_after must be in the future when you verify. In production, compare attestation.source_provenance.repo_url, repo_commit, and image provenance against the release or source code you are willing to trust.
5. Handle multi-instance deployments
The top-levelattestation is the instance that answered your request. all_attestations lists other instances behind the same service. When verifying a receipt, match the receipt’s workload_id and workload_keyset_digest against the attestation for the instance that signed it.
Legacy compatibility
GET /v1/attestation/report remains available for older clients. It returns the gateway attestation in a compatibility response shape and may include top-level signer fields such as signing_address. New integrations should use GET /v1/aci/attestation.

