When a job fails — error codes
When a job can't be created or stops along the way, you get an error code — for example kvote_opbrugt. The code is the same in the dashboard, in the API and in this article, so you can always look it up here.
Where is the code shown?
- In the dashboard: at the top of the job's detail page, together with an explanation and buttons for what you can do.
- Via the API, when a job has stopped: in the
job_fejlfield of the response fromGET /v1/jobs/{id}— withkode,titel,besked,detaljer,handlinger,referenceandtidspunkt. - Via the API, when creation is rejected: in
error.details.kodein the error response fromPOST /v1/jobs.
Two kinds of errors:
- During the run the job stops with status
fejlet(orkvote_stopat the quota). What was processed by then is saved and can be downloaded. Many of them can be resumed once the cause is fixed. - At creation the job is not created at all, and nothing counts towards the quota. Fix the cause and create the job again.
Contact support at support@danskadresseapi.dk or in the chat. Always include the job id — and the error reference if there is one (it looks like this: 7c0e6f0a-3f9a1c). Then we can find exactly what happened.
Errors during the run
ingen_noegle
No API key to bill
The job stopped because the team no longer has an active API key. Jobs are always counted on a key.
Why: The key the job was started with no longer exists, and the team has no other active key. In the dashboard, creation can also be rejected with the same code if you have no key to choose.
How to fix it:
- Create a key under API keys in the dashboard.
- Open the job and click Resume — it continues where it left off.
plan_uden_adgang
The plan does not include jobs
The job stopped because the team's plan no longer includes batch and jobs.
Why: The team was downgraded to Hobby or Basis while the job was queued or running. Jobs require Pro or Enterprise.
How to fix it:
- Upgrade to Pro or Enterprise under Billing.
- Open the job and click Resume.
konto_suspenderet
The team is suspended
The job stopped because the team was suspended, blocked or deleted while the job was queued or running.
How to fix it: Contact support — we'll tell you what it takes to reopen the team. After that, the job can be resumed.
kvote_opbrugt
The quota was used up
The job stopped with status kvote_stop because the team's quota was used up along the way. The rows processed by then can be downloaded.
Why: Each row that returned a result counts as one lookup — rows that fail cost nothing and never stop the job. The quota is checked before each part of the job, so the job stops exactly at the quota — instead of being rejected halfway through a part.
How to fix it:
- Download the partial result if you need it now.
- Upgrade the plan under Billing — or wait until the quota resets in the next period.
- Open the job and click Resume. Only the remaining rows count towards the quota.
overforbrugsloft
The overage cap was reached
The job stopped with status kvote_stop because the team reached its own overage cap. The processed rows can be downloaded.
Why: The team has overage turned on with a cap, and the cap was reached while the job was running.
How to fix it:
- Raise the cap under Billing — or wait until the next period.
- Open the job and click Resume.
input_mangler
The input is missing
The job's input no longer exists, so the job couldn't continue.
Why: The input is only kept as long as the result (7 or 30 days). Once it is deleted, there is nothing to continue from.
How to fix it: Upload the file again as a new job. If you already have part of the result, you can upload just the remaining rows.
pause_udloebet
The pause lasted too long
The job was paused until the result and the input expired and were deleted (7 days on Pro, 30 days on Enterprise after the pause).
Why: A paused job keeps its input and partial result as long as a finished result. If it wasn't resumed by then, there is nothing to continue from.
How to fix it: Upload the file again as a new job — with only the missing rows, if you have already downloaded the partial result.
noegle_deaktiveret
The API key was disabled
The key the job was billed to was disabled (or expired) while the job was running, and the team has no other active key. The job has been paused at the row it reached — nothing is lost.
Why: A job is always billed to an active key. If the key is disabled on the way, the job switches by itself to your own newest active key (otherwise the team's newest) — the switch is shown in the job's History. If there is none, the job stops instead of billing further.
How to fix it:
- Create a new key (or re-enable the old one) under API keys.
- Open the job, and click Resume — it continues exactly where it left off.
for_mange_forsoeg
The job was interrupted too many times
The job was interrupted several times — for example during an update of our servers — and was given up. What was processed by then is saved.
Why: An interrupted job resumes automatically after the last saved part, without duplicates. If it is interrupted more than 5 times, we stop it so it doesn't go round in circles.
How to fix it:
- Click Resume — it usually goes through next time.
- If it happens again, contact support with the job id.
intern_fejl
An error occurred on our side
The job stopped because of an error at DanskAdresseAPI — not in your file.
Why: Something went wrong on our side, several times in a row. We never show the technical error itself, but a reference that is also in our log.
How to fix it:
- Contact support with the job id and the reference — then we'll find the exact error.
- You can try Resume; the processed rows are saved.
Errors at creation
input_ugyldigt
The file has invalid rows
The job was not created because at least one line in the file can't be used. The error tells you the line number and what is wrong — e.g. lat: Number must be less than or equal to 58. Via the API the first five examples are in error.details.eksempler.
Why: One invalid element rejects the whole file — better a clear error now than a job that fails halfway. Typical causes:
- A required column is missing from the header (e.g.
lat), or the file has no header. - A cell is empty or outside the allowed range (e.g. a coordinate outside Denmark, or
latandlonswapped). - A BBR id isn't a valid UUID.
- An NDJSON line isn't valid JSON.
- An address is shorter than 3 characters.
How to fix it: Fix the line (the line number counts the header as line 1) and upload the file again. See File format for jobs.
input_for_stort
The file is too large
The file is larger than the plan's limit: 24 MB on Pro and 64 MB on Enterprise. The API responds with 413.
How to fix it: Split the file into several jobs — or upgrade to Enterprise. Remove any columns the job doesn't use.
input_tomt
The file is empty
The file has no rows below the header.
How to fix it: Check that you picked the right file and that the rows are below the header.
for_mange_raekker
Too many rows
The file has more rows than the plan allows per job: 10,000 on Pro and 1,000,000 on Enterprise.
How to fix it: Split the file into several jobs — or upgrade to Enterprise.
ugyldig_noegle
The selected key can't be used
The key you chose under «Billed to key» doesn't exist in the team, is disabled, has expired or is an IP binding.
How to fix it: Choose another active key — or create a new one under API keys.
for_mange_aktive
Too many jobs running
The team already has the maximum number of jobs queued or running: 3 on Pro and 10 on Enterprise. The API responds with 429 and error.details.retry_after_seconds.
How to fix it: Wait until one of the jobs is done, or cancel one. If you create jobs from code, wait the number of seconds the response gives and try again.
input_udloebet
The input has expired
«Run again» couldn't start a new job because the original job's input has been deleted.
Why: The input is kept as long as the result (7 days on Pro, 30 days on Enterprise). After that, the job can't be run again.
How to fix it: Upload the file again as a new job.
Other responses at creation
These errors have no job code, because they apply to all calls:
429withtype: quota_exceeded— the quota was already used up before the job started. Upgrade, or wait until the quota resets.403withtype: plan_upgrade_required— the plan doesn't include jobs (requires Pro or Enterprise).403about scope or key type — the key is missing thebatchscope, or it is apubkey. Use a live key withbatch.
See also Rows that could not be processed if the job finished but some rows gave no answer.
