Delpha Data Quality API
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.
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.
t=1788870000,v1=5f1c…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.
Stable event id — identical on every redelivery of the same event.
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.
dataquality.email.donePattern: ^dataquality\.[a-z-]+\.(sent|done|error)$Unix time (seconds) the delivery was signed — the t of Delpha-Signature.
Acknowledged — the event is not delivered again.
No content
Not acknowledged — see the delivery policy above.
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": {}
}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.
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.
t=1788870000,v1=5f1c…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.
Stable event id — identical on every redelivery of the same event.
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.
dataquality.email.donePattern: ^dataquality\.[a-z-]+\.(sent|done|error)$Unix time (seconds) the delivery was signed — the t of Delpha-Signature.
Acknowledged — the event is not delivered again.
No content
Not acknowledged — see the delivery policy above.
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": {}
}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.
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.
t=1788870000,v1=5f1c…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.
Stable event id — identical on every redelivery of the same event.
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.
dataquality.email.donePattern: ^dataquality\.[a-z-]+\.(sent|done|error)$Unix time (seconds) the delivery was signed — the t of Delpha-Signature.
Acknowledged — the event is not delivered again.
No content
Not acknowledged — see the delivery policy above.
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?