Opret et job
Send en lang liste — adresser, punkter eller BFE-numre — og få den behandlet i baggrunden række for række.
https://api.grundfast.dk/v1/jobsEt job tager en liste, der er for lang til et batch-kald, og slår hver række op med de samme opslag, som enkeltkaldene bruger. kind vælger opslaget: datavask (fritekst til adresse med kategori og score), reverse (punkt til nærmeste adresse), bbr, dagi eller miljoe (pr. BFE, adgangsadresse-id eller adresse).
Listen kan sendes som JSON { kind, rows }, som en fil i multipart/form-data (CSV, NDJSON eller et JSON-array) eller som en rå text/csv- eller application/x-ndjson-body med felterne som query-parametre. En upload må fylde 10 MB; en længere liste sender du i dele: opret jobbet med start: false, tilføj rækker med Tilføj rækker, og start det.
Uden columns genkendes rollerne på kolonnenavnene (fx Adresse, Vejnavn + Husnr + Postnr, lon/lat eller x/y, BFE). Koordinatsystemet genkendes på værdierne, medmindre du sender srid. Kan kolonnerne ikke føde den valgte kind, afvises jobbet med 400, før en eneste række gemmes.
Rækker pr. job følger planen: 250 på Free, 10.000 på Starter, 100.000 på Pro, 500.000 på Scale og 1.000.000 på Enterprise. Du kan have 5 åbne job ad gangen. Læs guiden om job for tempo, filer og fakturering.
402 med grænsen og tæller ikke mod kvoten.Godkendelse · API-nøgle eller session
Virker med en Authorization: Bearer-nøgle eller med din login-session i dashboardet.
Afregning
Én enhed pr. række, der lykkes. Uploaden tælles mod kvoten, og rækker, der ender i fejlfilen, gives tilbage.
Eksempel
curl -X POST "https://api.grundfast.dk/v1/jobs" \
-H "Authorization: Bearer $GRUNDFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"datavask","label":"Kundeliste oktober","rows":[{"kunde":"1001","adresse":"Rådhuspladsen 1, 1550 København V"},{"kunde":"1002","adresse":"Store Torv 1, 8000 Aarhus C"}]}'{
"job": {
"id": "job_4n8q2v7k1m9x3c5z0w6r2t8b",
"kind": "datavask",
"status": "queued",
"label": "Kundeliste oktober",
"totalRows": 2,
"processedRows": 0,
"succeeded": 0,
"failed": 0,
"billedUnits": 0,
"progress": 0,
"columns": { "adresse": "adresse" },
"srid": 4326,
"inputColumns": ["kunde", "adresse"],
"error": null,
"createdAt": "2026-10-05T09:12:03.418Z",
"startedAt": null,
"completedAt": null,
"updatedAt": "2026-10-05T09:12:05.117Z",
"resultsAvailable": true
}
}Request-body
JSON med Content-Type: application/json.
kindstringbodypåkrævet- Opslaget, hver række får.Værdier:datavaskreversebbrdagimiljoe
rowsobject[]bodyvalgfri- Dine rækker som objekter med højst 100 kolonner. Alle kolonner kommer med tilbage ved siden af svaret. Må være tom sammen med
start: false. columnsobjectbodyvalgfri- Rolle → kolonnenavn:
adresse,vej,husnr,postnr,by,x,y,bfe,adgangsadresse_id. Udelades den, genkendes rollerne på navnene. sridintegerbodyvalgfri- Koordinatsystemet for
x/y:4326(lon/lat) eller25832(UTM32 i meter).Værdier:432625832 labelstringbodyvalgfri- Dit eget navn til jobbet, højst 120 tegn.
startbooleanbodyvalgfrifalseopretter en kladde, der fyldes og startes senere.Standard:true
Felter i svaret
job.idstring- Jobbets id, fx
job_…. job.statusstringdraft,queued,running,paused,completed,failedellercancelled.failedbetyder, at jobbet blev færdigt uden en eneste række, der lykkedes.job.progressnumberprocessedRows / totalRowsmellem 0 og 1 — andelen af rækker, der har et svar eller en fejl.job.succeededinteger- Rækker med et svar. Kun dem faktureres (
billedUnits). job.columnsobject- Hvilke af dine kolonner jobbet læser, som rolle → kolonnenavn — angivet af dig eller genkendt ud fra navnene.
job.resultsAvailablebooleanfalse, når rækkerne er slettet efter opbevaringsperioden.
Statuskoder
| Status | Betydning |
|---|---|
| 201 | Oprettet — svaret beskriver det nye objekt. |
| 400 | Body’en kan ikke læses, kind er ukendt, en række er ugyldig, eller kolonnerne kan ikke føde den valgte kind. Beskeden siger hvorfor. |
| 401 | Hverken en gyldig nøgle eller en session. |
| 403 | Nøglen er en admin-nøgle, eller kontoen er suspenderet. |
| 409 | Du har allerede 5 åbne job. |
| 413 | Uploaden er over 10 MB. Send listen i dele. |
| 429 | Burst-grænsen eller månedskvoten er nået — kvoten tjekkes mod alle rækker i uploaden. |
Fejl har altid formen { "error": "…" }. Se Fejl og statuskoder for, hvad der kan prøves igen.
Prøv det
Live-kald fra siden
Kræver din nøgle