API Reference
Verify
Cryptographically verify a sealed .ddna envelope. Confirms the Ed25519 signature, checks the registry, and returns conformance level.
/v1/verifypublic — API key optionalOverview
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
| Field | Type | Required | Description |
|---|---|---|---|
| envelope | object | required | The 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
| Field | Type | Description |
|---|---|---|
| verified | boolean | True if Ed25519 signature is valid. |
| registry_listed | boolean | True if envelope hash found in DeepaData registry. |
| certificate_id | string | null | Certificate ID if registry listed, null otherwise. |
| conformance.level | string | 'sealed' | 'certified' | 'self-sealed' | null |
| conformance.checks.schema_valid | boolean | null | Schema 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_intact | boolean | Audit chain unbroken. |
| conformance.checks.consent_attested | boolean | Consent basis documented. |
| conformance.checks.governance_complete | boolean | Governance domain complete. |
| conformance.checks.non_biometric | boolean | null | Biometric screening result from the registry record. Null when the envelope has no registry entry — not checked by this endpoint. |
| signer.did | string | DID of the signing key. |
| signer.verification_method | string | Full 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
'envelope' field is required and must be a .ddna envelope object
Envelope missing proof.verificationMethod
API key does not have 'verify' scope (a missing or invalid key is treated as anonymous, not rejected)
Rate limit exceeded (per key when attributed, per IP when anonymous)
Verification failed