API Reference

Verify

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

POST/v1/verifypublic — API key optional

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.

No API key required: verification is public — a record must be checkable without asking us. Unauthenticated requests are rate limited at 60 requests per minute per IP. Sending a valid API key with the verify scope attributes the request to your account (usage logging, quota headers, per-key rate limits) instead.

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.3" },
        "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_validboolean | nullSchema check result from the registry record. Null when the envelope has no registry entry — this endpoint does not run schema validation itself.
conformance.checks.provenance_intactbooleanAudit chain unbroken.
conformance.checks.consent_attestedbooleanConsent basis documented.
conformance.checks.governance_completebooleanGovernance domain complete.
conformance.checks.non_biometricboolean | nullBiometric screening result from the registry record. Null when the envelope has no registry entry — not checked by this endpoint.
signer.didstringDID of the signing key.
signer.verification_methodstringFull verification method URI.

Example Response

{
  "success": true,
  "data": {
    "verified": true,
    "registry_listed": true,
    "certificate_id": "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

403

API key does not have 'verify' scope (a missing or invalid key is treated as anonymous, not rejected)

429

Rate limit exceeded (per key when attributed, per IP when anonymous)

500

Verification failed

Related