API Reference

Verify

Cryptographically verify a sealed .ddna envelope. Confirms the Ed25519 signature, checks the registry, and returns conformance level.

POST/v1/verifyscope: verify

Overview

The Verify endpoint validates a .ddna envelope's cryptographic signature using the eddsa-jcs-2022 cryptosuite. It checks whether the envelope is listed in the DeepaData registry and returns the conformance level and compliance check results.

What it verifies: The Ed25519 signature over the canonicalized envelope payload. If the signature is valid and the envelope hash matches a registry entry, the artifact is DeepaData-issued. Otherwise it may be self-sealed.

Request Body

FieldTypeRequiredDescription
envelopeobjectrequiredThe full .ddna envelope returned from /v1/issue. Must contain proof.verificationMethod.

Example Request

curl -X POST https://deepadata.com/api/v1/verify \
  -H "Authorization: Bearer dda_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "envelope": {
      "ddna_header": {
        "version": "1.0",
        "format": "ddna",
        "created": "2026-04-01T10:30:00.000Z"
      },
      "edm_payload": {
        "meta": { "id": "edm_01HV8X3K2M...", "version": "0.8.0" },
        "core": { "anchor": "...", "spark": "..." },
        "constellation": { "emotion_primary": "relief" },
        "governance": { "jurisdiction": "GDPR", "consent_basis": "consent" }
      },
      "proof": {
        "type": "DataIntegrityProof",
        "cryptosuite": "eddsa-jcs-2022",
        "verificationMethod": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#key-1",
        "proofPurpose": "assertionMethod",
        "proofValue": "z5vgFc8h2YR3..."
      }
    }
  }'

Response Fields

FieldTypeDescription
verifiedbooleanTrue if Ed25519 signature is valid.
registry_listedbooleanTrue if envelope hash found in DeepaData registry.
certificate_idstring | nullCertificate ID if registry listed, null otherwise.
conformance.levelstring'sealed' | 'certified' | 'self-sealed' | null
conformance.checks.schema_validbooleanEDM schema validation passed.
conformance.checks.provenance_intactbooleanAudit chain unbroken.
conformance.checks.consent_attestedbooleanConsent basis documented.
conformance.checks.governance_completebooleanGovernance domain complete.
conformance.checks.non_biometricbooleanNo prohibited biometric inference.
signer.didstringDID of the signing key.
signer.verification_methodstringFull verification method URI.

Example Response

{
  "success": true,
  "data": {
    "verified": true,
    "registry_listed": true,
    "certificate_id": "cert_8f7a3b2c-1234-5678-abcd-ef0123456789",
    "conformance": {
      "level": "sealed",
      "checks": {
        "schema_valid": true,
        "provenance_intact": true,
        "consent_attested": true,
        "governance_complete": true,
        "non_biometric": true
      }
    },
    "signer": {
      "did": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
      "verification_method": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#key-1"
    }
  },
  "meta": {
    "verified_at": "2026-04-01T10:31:00.000Z"
  }
}

Error Codes

400

'envelope' field is required and must be a .ddna envelope object

400

Envelope missing proof.verificationMethod

401

Missing or invalid API key

403

API key does not have 'verify' scope

429

Rate limit exceeded

500

Verification failed

Related