Verify Attestation

POST /v1/verify Verify a previously created hybrid attestation. Returns the validity status of both the ECDSA and PQC signatures. Authentication: Secret key required (qs_sec_*)

Request

{
  "attestationId": "att_abc123def456"
}
Alternatively, you can verify by providing the raw components:
{
  "message": "0x48656c6c6f20576f726c64",
  "ecdsaSignature": "0x3045022100...",
  "ecdsaPublicKey": "0x04a1b2c3d4...",
  "pqcSignature": "0x7a8b9c0d1e...",
  "pqcPublicKey": "0x1a2b3c4d5e...",
  "algorithm": "ml-dsa-65"
}

Parameters (by Attestation ID)

FieldTypeRequiredDescription
attestationIdstringYesThe attestation ID returned from /v1/sign/hybrid

Parameters (by Raw Components)

FieldTypeRequiredDescription
messagestringYesOriginal message (hex-encoded)
ecdsaSignaturestringYesECDSA signature (hex-encoded)
ecdsaPublicKeystringYesECDSA public key (hex-encoded)
pqcSignaturestringYesPQC signature (hex-encoded)
pqcPublicKeystringYesPQC public key (hex-encoded)
algorithmstringYesPQC algorithm used
All fields must be hex-encoded. Accept both 0x-prefixed and raw hex strings.

Response 200 OK

{
  "data": {
    "valid": true,
    "ecdsaValid": true,
    "pqcValid": true,
    "attestationId": "att_abc123def456",
    "algorithm": "ml-dsa-65",
    "chain": "ethereum",
    "verifiedAt": "2026-01-15T10:35:00Z"
  },
  "meta": {
    "requestId": "req_xyz789",
    "timestamp": "2026-01-15T10:35:00Z"
  }
}

Response Fields

FieldTypeDescription
validbooleantrue if both signatures are valid
ecdsaValidbooleanECDSA signature verification result
pqcValidbooleanPQC signature verification result
attestationIdstringAttestation identifier
algorithmstringPQC algorithm used
chainstringAssociated blockchain
verifiedAtstringISO 8601 verification timestamp

Errors

CodeDescription
AUTH_001Missing API key
AUTH_003Publishable key used (Secret key required)
PQC_002Invalid key format
PQC_004Signature verification failed
RATE_001Rate limit exceeded

Example

# Verify by attestation ID
curl -X POST https://api.qsafe.dev/v1/verify \
  -H "Authorization: Bearer qs_sec_live_sk_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "attestationId": "att_abc123def456"
  }'