For the complete documentation index, see llms.txt. This page is also available as Markdown.

Delpha Data Quality API

A verification job was admitted

Sent when a submit request is accepted (the same moment the API answers 202). Acknowledge with any 2xx within 10 seconds — that is the delivery timeout, and a slower handler is recorded as a timeout however it ends. Do the work asynchronously and answer first. A redirect is not followed: a 3xx counts as a failed delivery. A timeout, a 429 or a 5xx is retried up to 3 attempts in total, with exponential backoff (0.5 s, then 1 s) — so a failing endpoint is given up on within about two seconds, not minutes; any other 4xx is not retried at all. Delivery is therefore at-least-once with no server-side deduplication: the same event can arrive more than once and your handler must be idempotent on id. Each subscribed endpoint is delivered to independently. Endpoints are managed in the console at https://app.delpha.ai/developer/webhooks.

Header parameters
Delpha-SignaturestringRequired

t=<unix-seconds>,v1=<hex> — v1 is HMAC-SHA256 of "<t>.<raw request body>" under the endpoint's whsec_… signing secret (shown once at creation in the console). Recompute it over the raw bytes, compare in constant time, and reject a t older than a few minutes.

Example: t=1788870000,v1=5f1c…
User-Agentstring · enumRequiredPossible values:
Payload

A lifecycle event delivered to a subscribed endpoint. Notify-only: it names the job and its outcome, never the result — fetch that from the job's poll URL. Deduplicate on id, which is derived from the job and the event type and therefore repeats on redelivery.

idstringRequired

Stable event id — identical on every redelivery of the same event.

typestringRequired

The event scope: dataquality.<usecase>.<sent|done|error>, where <usecase> is the route slug (email, legal-id, linkedin-profile, …) or the slug with a -batch suffix for batch jobs.

Example: dataquality.email.donePattern: ^dataquality\.[a-z-]+\.(sent|done|error)$
createdintegerRequired

Unix time (seconds) the delivery was signed — the t of Delpha-Signature.

Other propertiesanyOptional
Responses
2XX

Acknowledged — the event is not delivered again.

No content

Payload

{
  "id": "evt_e704df05-b620-5efb-87c9-a2169e755cbc",
  "type": "dataquality.email.sent",
  "created": 1788870000,
  "data": {
    "job_id": "0c8f0d6e-5b1a-4d4e-9f0e-1234567890ab",
    "usecase": "email",
    "status": "sent"
  },
  "metadata": {}
}

A verification job completed

Sent when the job reaches its terminal success state; the result is available at the poll URL. Acknowledge with any 2xx within 10 seconds — that is the delivery timeout, and a slower handler is recorded as a timeout however it ends. Do the work asynchronously and answer first. A redirect is not followed: a 3xx counts as a failed delivery. A timeout, a 429 or a 5xx is retried up to 3 attempts in total, with exponential backoff (0.5 s, then 1 s) — so a failing endpoint is given up on within about two seconds, not minutes; any other 4xx is not retried at all. Delivery is therefore at-least-once with no server-side deduplication: the same event can arrive more than once and your handler must be idempotent on id. Each subscribed endpoint is delivered to independently. Endpoints are managed in the console at https://app.delpha.ai/developer/webhooks.

Header parameters
Delpha-SignaturestringRequired

t=<unix-seconds>,v1=<hex> — v1 is HMAC-SHA256 of "<t>.<raw request body>" under the endpoint's whsec_… signing secret (shown once at creation in the console). Recompute it over the raw bytes, compare in constant time, and reject a t older than a few minutes.

Example: t=1788870000,v1=5f1c…
User-Agentstring · enumRequiredPossible values:
Payload

A lifecycle event delivered to a subscribed endpoint. Notify-only: it names the job and its outcome, never the result — fetch that from the job's poll URL. Deduplicate on id, which is derived from the job and the event type and therefore repeats on redelivery.

idstringRequired

Stable event id — identical on every redelivery of the same event.

typestringRequired

The event scope: dataquality.<usecase>.<sent|done|error>, where <usecase> is the route slug (email, legal-id, linkedin-profile, …) or the slug with a -batch suffix for batch jobs.

Example: dataquality.email.donePattern: ^dataquality\.[a-z-]+\.(sent|done|error)$
createdintegerRequired

Unix time (seconds) the delivery was signed — the t of Delpha-Signature.

Other propertiesanyOptional
Responses
2XX

Acknowledged — the event is not delivered again.

No content

Payload

{
  "id": "evt_d67888bc-b23f-5ea9-916c-faad29708d7d",
  "type": "dataquality.email.done",
  "created": 1788870000,
  "data": {
    "job_id": "0c8f0d6e-5b1a-4d4e-9f0e-1234567890ab",
    "usecase": "email",
    "status": "succeeded",
    "mode": "sandbox"
  },
  "metadata": {}
}

A verification job failed

Sent when the job reaches a terminal failure; data.error carries the sanitized reason and no credit is charged. Acknowledge with any 2xx within 10 seconds — that is the delivery timeout, and a slower handler is recorded as a timeout however it ends. Do the work asynchronously and answer first. A redirect is not followed: a 3xx counts as a failed delivery. A timeout, a 429 or a 5xx is retried up to 3 attempts in total, with exponential backoff (0.5 s, then 1 s) — so a failing endpoint is given up on within about two seconds, not minutes; any other 4xx is not retried at all. Delivery is therefore at-least-once with no server-side deduplication: the same event can arrive more than once and your handler must be idempotent on id. Each subscribed endpoint is delivered to independently. Endpoints are managed in the console at https://app.delpha.ai/developer/webhooks.

Header parameters
Delpha-SignaturestringRequired

t=<unix-seconds>,v1=<hex> — v1 is HMAC-SHA256 of "<t>.<raw request body>" under the endpoint's whsec_… signing secret (shown once at creation in the console). Recompute it over the raw bytes, compare in constant time, and reject a t older than a few minutes.

Example: t=1788870000,v1=5f1c…
User-Agentstring · enumRequiredPossible values:
Payload

A lifecycle event delivered to a subscribed endpoint. Notify-only: it names the job and its outcome, never the result — fetch that from the job's poll URL. Deduplicate on id, which is derived from the job and the event type and therefore repeats on redelivery.

idstringRequired

Stable event id — identical on every redelivery of the same event.

typestringRequired

The event scope: dataquality.<usecase>.<sent|done|error>, where <usecase> is the route slug (email, legal-id, linkedin-profile, …) or the slug with a -batch suffix for batch jobs.

Example: dataquality.email.donePattern: ^dataquality\.[a-z-]+\.(sent|done|error)$
createdintegerRequired

Unix time (seconds) the delivery was signed — the t of Delpha-Signature.

Other propertiesanyOptional
Responses
2XX

Acknowledged — the event is not delivered again.

No content

Payload

{
  "id": "evt_38e17cba-d6ff-59d2-9703-0c01c49d8bb2",
  "type": "dataquality.email.error",
  "created": 1788870000,
  "data": {
    "job_id": "0c8f0d6e-5b1a-4d4e-9f0e-1234567890ab",
    "usecase": "email",
    "status": "failed",
    "error": "The job failed to complete. Please resubmit."
  },
  "metadata": {}
}

Last updated

Was this helpful?