---
title: "Independently verify a ThoughtProof attestation (free, no auth)"
method: POST
path: "/v1/verify-proof"
---

# Independently verify a ThoughtProof attestation (free, no auth)

`POST /v1/verify-proof`

## Request

- Base URL: `https://api.thoughtproof.ai`
- URL: `https://api.thoughtproof.ai/v1/verify-proof`
- Auth: none required

Verify a ThoughtProof EdDSA attestation without trusting the presenter and without auth or payment. This is a convenience wrapper around the same offline verification any holder can run against /.well-known/jwks.json: it checks the EdDSA signature, the kid against the published attestor key, and expiry. The receiver may equally recompute claim_hash = sha256:<hex of raw claim> and verify the JWT locally with the published JWK — no trust in ThoughtProof required.

## Request body

- object
  - `jwt` string: Compact EdDSA JWT from a verify receipt (or pass proof.jwt).
  - `proof` object
    - `jwt` string

## Response `200`

Verification result

- object
  - `verified` boolean: true only if signature valid AND not expired AND kid trusted
  - `signatureValid` boolean
  - `expired` boolean
  - `kid` string
  - `issuer` string
  - `claim_hash` string
  - `verdict` string
  - `confidence` number
  - `issuedAt` integer
  - `expiresAt` integer
  - `jwks_uri` string

## Other responses

- `400`: Missing or malformed jwt

---

[API](https://skmtc.dev/thoughtproof/apis/thoughtproof-reasoning-verification-api.md) · [All operations](https://skmtc.dev/thoughtproof/apis/thoughtproof-reasoning-verification-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thoughtproof/apis/thoughtproof-reasoning-verification-api/revisions/53c58d95a03a?raw)
