Skip to content

Follow a job and download the result

7 min read

All the team's jobs are listed under Jobs in the dashboard (the API → Jobs menu, or danskadresseapi.dk/dashboard/jobs). The list updates live: new jobs slide in, and progress, rows per second and estimated time count up while the job runs.

Start a job

  1. Click New job.
  2. Choose the type (and variant), and drag the file in — or click choose a file.
  3. The dashboard reads the file with the same parser as the job and shows the first rows, how many lookups the job uses and whether the quota covers it. If there is an error in the file, you see the line number right away.
  4. Choose the key the job is billed to, and start the job.

Only team members who are allowed to create API keys can start jobs.

Status — what does it mean?

StatusMeansCan the result be downloaded?
koeWaiting for a free slot in the queueNo
koererThe job is being processed right nowNot yet
pausetPaused — the part in progress was finished and saved. Resumes from the same placeYes, the partial result
faerdigAll rows have been processedYes
fejletThe job stopped because of an error — see the error codeYes, the partial result
kvote_stopThe team's quota (or overage cap) was reached along the wayYes, the partial result
annulleretSomeone cancelled the jobYes, the partial result
udloebetThe result has been deleted (after 7 or 30 days)No

A paused job uses no lookups and doesn't take up one of the team's active-job slots. If it isn't resumed before the result expires, it is deleted with the error code pause_udloebet.

Waiting for capacity — a job with status koerer can temporarily show «Waiting for capacity». It means the API is busy and the job is waiting with its next part so regular calls go first. Enterprise jobs only wait at a higher load than Pro jobs. A job waits at most about 2 minutes per part, nothing is lost, and the job continues by itself. In the API it shows as venter_paa_kapacitet: true.

A faerdig job can still have rows that gave no answer — for example an address that couldn't be recognised. They show as «errors» or «warnings» on the job; see Rows that could not be processed.

The job's detail page

Click a job to open its detail page. At the top you see the status, progress, duration and number of rows, and under the tabs:

  • Overview — processing time (rows per second over time), key figures, the input file and the job's configuration (type, variant, delimiter, encoding, whether the first row is a header, the key and when the result is deleted).
  • Data — the result page by page with search, statistics per status and an explanation of the columns.
  • Errors and warnings — the rows that gave no (reliable) answer, with the reason.
  • Raw response — the first rows exactly as stored (NDJSON).
  • Webhooks — the webhooks sent for the job, and whether they were delivered.
  • History — created, time in queue, started, parts saved, ended and when the result was first downloaded.

If the job was stopped by an error, the error code, an explanation and the possible actions are shown at the top — see When a job fails — error codes.

Actions

  • Download result (CSV, NDJSON — or JSONL for an export).
  • Pause / Resume — a queued or running job can be paused: the part in progress is finished and saved, and after that no new lookups are used. Resume queues the job again, and it continues exactly after the last saved row (the quota is checked first — if it won't cover the rest, you get a warning). The pause doesn't extend how long the result and the input are kept. Via the API: POST /v1/jobs/{id}/pause and POST /v1/jobs/{id}/genoptag.
  • Resume (stopped job) — a job that has fejlet, stopped at the quota (kvote_stop) or was annulleret continues on the same job where it left off. The processed rows are kept, and only the rest counts towards the quota (the quota is checked first). Requires that the input hasn't been deleted yet. Available in the dashboard.
  • Run again — a new job with the same input and configuration, e.g. after you've fixed something. Every row with a result counts as one lookup again. If the input has been deleted, it is rejected with input_udloebet. Available in the dashboard.
  • Cancel — a queued, running or paused job stops. What was processed by then can be downloaded.
  • Download input, Copy job id and Delete job (deletes the job, the result and the input — can't be undone; a running job must be cancelled first).

The result

The result can be downloaded in two formats:

NDJSON — one JSON line per row, exactly the same object as the synchronous batch endpoints return, plus idx (the row's position in your file, 0 = the first data row). All matches are included.

CSV — one line per row with fixed columns. UTF-8 with BOM (so Excel shows æ, ø and å correctly), comma as the delimiter, and fields containing a comma, quote or line break are in "…". For reverse and cleansing the CSV holds the best match.

TypeColumns in the CSV
reverseidx, lat, lon, antal_match, adgangsadresse_id, adresse, vejnavn, husnr, postnr, postnrnavn, kommunekode, adresse_lat, adresse_lon
datavaskidx, input, kategori, score, historisk, variant, adresse, id, adgangsadresse_id, vejnavn, husnr, etage, doer, postnr, postnrnavn, kommunekode, lat, lon, fejl
bbr (buildings)idx, id, fundet and the building's BBR fields (status, use, year built, areas, materials, heating, water, drainage and more)
bbr (units)idx, id, fundet and the unit's BBR fields (status, use, dwelling type, areas, rooms, toilet, bath and kitchen facilities and more)
dagiidx, lat, lon, postnr, kilde, code and name for parish, municipality, region, police district, court district, constituency, greater constituency, province and electoral province, polling district, fejl
eksportThe same columns as the property search in Find properties

For cleansing, kategori means: A = reliable match, B = uncertain match (check the best guess), C = no match. For DAGI lookups by postal code, municipalities, parishes etc. are a JSON list in the cell, because a postal code can span several.

The complete column list for your type is also on the detail page tab Data → Columns and under See file format.

The error rows

Rows that gave no answer can be downloaded on their own — so you can fix them and run them again:

  • In the dashboard: the Errors and warnings tab shows the rows with their reason, and Download error rows (CSV) downloads them.
  • Via the API: GET /v1/jobs/{id}/fejl gives a CSV (or NDJSON with ?format=ndjson) with the columns:
ColumnContents
raekkeThe row's number among the data rows (1 = the first row below the header)
the input columnsWhat the job read from your file: lat, lon, radius, limit (reverse) · betegnelse (cleansing) · id (BBR) · lat, lon, postnr (DAGI)
aarsagThe reason code, e.g. ikke_tolket — see Rows that could not be processed
alvorfejl (error: no answer) or advarsel (warning: the answer is uncertain or empty)
forklaringWhat the reason means and what you can do
bedste_budThe best answer the row gave anyway (cleansing category B and C)

Add ?aarsag=ikke_tolket for a single reason, and ?sprog=en for explanations in English.

When the result is deleted

The result and the input are deleted 7 days (Pro) or 30 days (Enterprise) after the job ended. The date is shown under «Job configuration». If nobody has downloaded the result, you get a reminder 24 hours before — see Notifications and webhooks for jobs.

Was this helpful?