Graveinfo.Kobler gravere og infrastruktureiere

Send din første gravemelding via API

Fra null til sendt gravemelding på under 10 minutter. Denne guiden er for entreprenører som vil integrere gravemeldingssending i eget system.

Forutsetninger

  • Du har en Graveinfo-konto.
  • Kontoen er koblet til en godkjent entreprenørprofil.
  • Du har tilgang til koordinater for arbeidsområdet (WGS84 eller UTM).
1

Skaff en API-nøkkel med riktig scope

Gå til Dashboard → API-nøkler og opprett en ny nøkkel. Du trenger scopet gravemeldinger:write for å sende gravemeldinger.

Viktig: Nøkkelen er koblet til din entreprenørprofil - ikke til kontoen generelt. Nøkkelen vises kun én gang. Lagre den i en miljøvariabel:

export GRAVEINFO_API_KEY="gv_live_..."
2

Forbered polygon-koordinater i EPSG:25833

Graveinfo bruker EPSG:25833 (UTM sone 33N) for kartkoordinater. Dette er et metrisk koordinatsystem som gir nøyaktige avstandsmålinger - i motsetning til WGS84 (bredde-/lengdegrad) som bruker grader.

Har du koordinater i WGS84 (f.eks. fra GPS eller Google Maps), konverter dem med proj4js:

typescript
// npm install proj4
import proj4 from 'proj4';

// Definer EPSG:25833 (UTM sone 33N)
proj4.defs('EPSG:25833', '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs');

// Konverter WGS84 (lng, lat) til EPSG:25833 (x, y)
function wgs84ToUtm33(lng: number, lat: number): [number, number] {
  return proj4('EPSG:4326', 'EPSG:25833', [lng, lat]) as [number, number];
}

// Eksempel: polygon rundt et område i Oslo sentrum (WGS84-koordinater)
const wgs84Corners = [
  [10.7515, 59.9135],
  [10.7535, 59.9135],
  [10.7535, 59.9150],
  [10.7515, 59.9150],
  [10.7515, 59.9135],  // lukket ring
];

const utm33Coords = wgs84Corners.map(([lng, lat]) => wgs84ToUtm33(lng, lat));
console.log(utm33Coords);
// → [[257897, 6647823], [258050, 6647823], ...]

Alternativt: bruk QGIS (Vektor → Geometriverktøy → Projisér lag) eller epsg.io/transform for manuell konvertering.

Polygon-krav: Polygonet må være en lukket ring - siste koordinat må være lik den første. Koordinatene skal angi yttergrensen av arbeidsområdet. Et lite polygon på noen hundre meter er tilstrekkelig for de fleste gravearbeider.

3

POST til /api/v1/gravemeldinger

Send en POST-forespørsel med alle påkrevde felt. Graveinfo vil umiddelbart finne mottakere og varsle dem:

bash
curl -X POST "https://graveinfo.no/api/v1/gravemeldinger" \
  -H "Authorization: Bearer $GRAVEINFO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Graving Storgata 12",
    "description": "Legging av fiberkabel langs Storgata 12-18",
    "work_types": ["telekommunikasjon", "grunnarbeid"],
    "polygon": {
      "type": "Polygon",
      "coordinates": [[
        [258000, 6648000],
        [258100, 6648000],
        [258100, 6648100],
        [258000, 6648100],
        [258000, 6648000]
      ]]
    },
    "planned_start": "2026-06-01",
    "planned_end": "2026-06-14",
    "contact_person": "Ola Nordmann",
    "contact_phone": "91234567",
    "adresse": "Storgata 12, Oslo"
  }'
4

Forstå kvitteringen

Et vellykket kall returnerer HTTP 201 med følgende:

json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "reference_number": "GI-2026-00042",
  "status": "sendt",
  "kart_frist": "2026-06-07",
  "pavisning_frist": "2026-06-11",
  "municipality_names": ["Oslo"],
  "recipient_count": 8,
  "created_at": "2026-05-28T10:00:00.000Z",
  "sent_at": "2026-05-28T10:00:01.000Z"
}
reference_numberBruk dette nummeret i all videre kommunikasjon med mottakere og Graveinfo.
kart_frist5 virkedager fra sending - frist for at mottakere skal levere kartinformasjon.
pavisning_frist7 virkedager fra sending - frist for fysisk påvisning av infrastruktur.
municipality_namesKommunene polygonet overlapper med. Viktig å verifisere at riktig kommune er truffet.
recipient_countAntall infrastruktureiere som ble varslet. 0 er en feil - da mangler det registrerte eiere i området.
5

Sjekk status og svar fra mottakere

Bruk ID-en fra kvitteringen til å hente oppdatert status:

bash
# Sjekk status etter sending
curl "https://graveinfo.no/api/v1/gravemeldinger/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer $GRAVEINFO_API_KEY"
json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "referenceNumber": "GI-2026-00042",
  "status": "in_progress",
  "recipients": [
    {
      "name": "Oslo VAV",
      "status": "responded",
      "response": "conflict",
      "responseNote": "Vi har VA-ledninger i dette området. Kontakt oss.",
      "respondedAt": "2026-05-29T08:30:00.000Z"
    },
    {
      "name": "Hafslund Nett AS",
      "status": "pending",
      "response": null,
      "responseNote": null,
      "respondedAt": null
    }
  ],
  "summary": {
    "total": 8,
    "responded": 1,
    "pending": 7,
    "hasConflicts": true
  }
}

Feltet response viser svartype: conflict betyr at mottakeren har infrastruktur i området og du må ta kontakt. Gå til API-referansen for alle mulige verdier.

Feilsøking

NO_MUNICIPALITYPolygon ikke i EPSG:25833

Løsning: Koordinatene er sannsynligvis i WGS84 (breddegrad/lengdegrad rundt 59°N/10°E). Konverter til EPSG:25833 (UTM sone 33N) - verdier skal typisk være rundt 200 000–900 000 (øst) og 6 400 000–7 700 000 (nord).

NO_RECIPIENTSIngen registrerte eiere i området

Løsning: Området har ingen infrastruktureiere registrert i Graveinfo ennå. Bruk GET /coverage?municipality=XXXX for å sjekke om kommunen har registrerte eiere. Kontakt oss for å legge til manglende eiere.

INVALID_WORK_TYPEUgyldig verdi i work_types

Løsning: Gyldige verdier er: telekommunikasjon, vann_avlop, hoyspenning, lavspenning, veiarbeid, grunnarbeid, fjernvarme, annet.

MISSING_FIELDSPåkrevde felt mangler

Løsning: Sjekk feilmeldingen - feltet error.fields inneholder en liste over felt som mangler.

FORBIDDENNøkkelen er ikke koblet til en entreprenørprofil

Løsning: POST /gravemeldinger krever en nøkkel koblet til en godkjent entreprenørprofil. Organisasjonsnøkler fungerer ikke her. Verifiser at nøkkelen ble opprettet fra en entreprenørprofil i dashbordet.

Klar for full API-dokumentasjon?

Se API-referansen →