Vi bruker informasjonskapsler til autentisering og — med ditt samtykke — til analyse. Les mer.
ketl data API + MCP — auth, rate limits, eksempler og full OpenAPI 3.1-spec.
Send API-nøkkel som x-api-key-header eller Firebase ID-token som Authorization: Bearer ….
Alle endepunkter returnerer strukturert JSON ved feil: { error: string, code: string }. Bruk code for programmatisk håndtering — error er for mennesker og kan endre form.
| Status | Betydning | Hva du bør gjøre |
|---|---|---|
| 200 | OK | Vellykket. Response-body inneholder data + `x-ketl-cache: hit|miss|stale`-header. |
| 400 | Bad Request | Validation-feil — body har `{error, code: "validation_error"}`. Sjekk required query-params. |
| 401 | Unauthorized | API-nøkkel mangler eller er ugyldig. Send `x-api-key` eller `Authorization: Bearer …`. |
| 403 | Forbidden | Tier-en din har ikke tilgang til denne kilden. Se /pricing. |
| 429 | Too Many Requests | Rate limit nådd. `Retry-After`-headeren angir antall sekunder før neste forsøk er tillatt. |
| 502 | Bad Gateway | Upstream-kilden svarte med feil. Body har `{error, code: "upstream_error", upstreamStatus?}`. Stale cache kan ha blitt servert ved tilgjengelig data. |
| 503 | Service Unavailable | Connector mangler nødvendig credential (`{error: "not_configured"}`). Operasjonell-feil, ikke en bug — opprett en sak om kilden er markedsført men ikke fungerer. |
Eksponentiell backoff på 429/502/503: 1s, 2s, 4s, 8s — gi opp etter fire forsøk. 4xx (utenom 429) er klient-feil og skal ikke retries. Se Retry-After-headeren for eksakt ventetid ved 429.
| X-RateLimit-Limit | Maksimalt antall kall per minutt for din tier. |
| X-RateLimit-Remaining | Gjenværende kall i denne vinduet. |
| X-RateLimit-Reset | Unix-epoch (sekunder) når vinduet nullstilles. |
| Retry-After | Settes kun ved 429 — antall sekunder å vente før retry. |
Søke-endepunkter bruker offset-paginering (size + fra som 0-indeksert sidenummer). Liste-endepunkter for tidsserier bruker dato-vinduer (from/ to) istedenfor offset.
# Brreg-enhetssøk paginert (page 0-indexed, size 1-50)
curl "https://data.ketl.no/api/connectors/brreg/enheter?navn=Equinor&size=20&fra=0"
# Respons:
# {
# "enheter": [...],
# "totalElements": 47,
# "totalPages": 3,
# "pageNumber": 0,
# "pageSize": 20
# }
#
# Hent neste side med fra=1, deretter fra=2.Maks size per kilde er dokumentert i kildekatalogen — typisk 50 for søk og 1 000 for tidsserier. Større size klemmes ned i stedet for å gi feil.