Webhooks

Job failed

Sent once when a job stops because of an error. Rows processed before the error can be downloaded as a partial result.

POSTjob.failedWe send this event to your receiver URL.

Response

application/json
dataobject

The same fields as GET /v1/jobs/{id} — result links (absolute) and udloeber when there is a result.

Show child attributes(28)
data.idstring<uuid>
data.fejlinteger

Elements with an error in the result (e.g. parse_failed or not found).

data.navnstring | null
data.typeenum<string>
Allowed values:reversedatavaskbbrdagieksport
data.kildeenum<string>
Allowed values:apidashboardeksport
data.totalinteger
data.pausetstring<date-time> | null

When the job was paused (status pauset only).

data.statusenum<string>

koe = waiting · koerer = running · pauset = paused · faerdig = done · fejlet = failed · annulleret = cancelled · kvote_stop = the quota ran out on the way · udloebet = the result has been deleted.

Allowed values:koekoererpausetfaerdigfejletannulleretkvote_stopudloebet
data.eta_sekinteger | null

Expected time remaining in seconds (only while the job is running).

data.faerdigstring<date-time> | null
data.procentnumber
data.startetstring<date-time> | null
data.variantstring

datavask: adresser | adgangsadresser · bbr: bygninger | enheder · otherwise standard.

data.advarselstring

Only on creation: the quota does not cover the whole job.

data.job_fejlobject | null

Why the job stopped (status fejlet or kvote_stop) — null when the job wasn't stopped by an error. Internal errors only show the code intern_fejl and a reference (never technical details).

Show child attributes(7)
data.job_fejl.kodeenum<string>
Allowed values:ingen_noegleplan_uden_adgangkonto_suspenderetkvote_opbrugtoverforbrugsloftinput_manglerfor_mange_forsoegintern_fejl
data.job_fejl.titelstring
data.job_fejl.beskedstring

Explanation in Danish (e.g. «Jobbet stoppede ved række 31.204 af 100.000, fordi teamets kvote blev brugt op …» — the job stopped at row 31,204 of 100,000 because the team's quota was used up).

data.job_fejl.detaljerobject

E.g. behandlet, total, del, forsoeg.

data.job_fejl.referencestring | null

Error reference for support.

data.job_fejl.tidspunktstring<date-time> | null
data.job_fejl.handlingerenum<string>[]
data.oprettetstring<date-time>
data.resultatobject | null

Links to the result, when there is one.

Show child attributes(2)
data.resultat.csvstring
data.resultat.ndjsonstring
data.udloeberstring<date-time> | null

When the result is deleted (Pro 7 days, Enterprise 30 days after completion).

data.behandletinteger
data.fejlbeskedstring | null
data.raekke_fejlobject

Only in GET /v1/jobs/{id}: rows with errors (and warnings) per reason.

Show child attributes(4)
data.raekke_fejl.totalinteger
data.raekke_fejl.advarslerobject

E.g. intet_match, flere_mulige.

Show child attributes(2)
data.raekke_fejl.advarsler.totalinteger
data.raekke_fejl.advarsler.pr_aarsagobject
data.raekke_fejl.pr_aarsagobject

E.g. { "ikke_tolket": 280, "ukendt_id": 32 }.

data.raekke_fejl.daekket_raekkerinteger

Number of rows the count covers.

data.raekker_pr_seknumber | null

Measured speed over the last 15 seconds.

data.afregnede_opslaginteger

Lookups counted against the quota so far — one per row that returned a result (rows with errors and the create call itself cost nothing).

data.venter_paa_kapacitetboolean

true while a running job waits with its next part because the API is busy — jobs give way to synchronous calls (Enterprise jobs only wait at a higher load).

data.venter_kapacitet_sidenstring<date-time> | null
data.okinteger

Rows without errors (processed minus errors).

data.dashboard_urlstring

The job in the dashboard.

data.annulleret_af_starterboolean

Only job.cancelled: true if the person who started the job cancelled it themselves.

eventenum<string>
Allowed values:job.completedjob.failedjob.quota_stoppedjob.cancelledjob.result_expiring
summaryobject

Short text in Danish and English.

Show child attributes(2)
summary.dastring
summary.enstring
event_idstring

<event>:<job-id> — the same id if the delivery is repeated, so you can reject duplicates.

timestampstring<date-time>
PayloadEksempel
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "fejl": 0,
    "navn": "…",
    "type": "reverse",
    "kilde": "api",
    "total": 0,
    "pauset": "2026-09-20T10:00:00.000Z",
    "status": "koe",
    "eta_sek": 0,
    "faerdig": "2026-09-20T10:00:00.000Z",
    "procent": 0,
    "startet": "2026-09-20T10:00:00.000Z"
  },
  "event": "job.failed",
  "summary": {
    "da": "…",
    "en": "…"
  },
  "event_id": "…",
  "timestamp": "2026-09-20T10:00:00.000Z"
}