Feilsvar og grenser
Feilsvar
Alle feil har samme form, med requestId som du kan oppgi hvis du kontakter oss. Den står
også i headeren X-Request-ID på alle svar.
{"error": {"status": 401, "message": "…", "requestId": "9c38fd23f4c14471b86c023902341627"}}
| Status | Betyr | Gjør dette |
|---|---|---|
400 |
Ugyldig forespørsel | Les message |
401 |
Nøkkel mangler, er ugyldig, utløpt eller tilbakekalt | Send nøkkelen i X-API-Key. Svaret har registerUrl |
403 |
Kallet krever et høyere nivå | Semantisk søk krever ext. Se Tilgangsnivåer |
404 |
Verket finnes ikke, eller er ikke publisert | Sjekk nmId |
422 |
Feil i parametre eller kropp | details sier hvilket felt |
429 |
For mange kall | Vent så mange sekunder som Retry-After sier |
5xx |
Feil hos oss | Prøv igjen litt senere. Vedvarer det, kontakt oss med requestId |
Ett unntak: når nøkkelen mangler, er message et objekt med lenker til vilkårene og
registreringen (registerUrl, termsUrl). Programmer som viser message, må tåle begge formene.
Uten nøkkel:
Uten nøkkel: 401 med lenke til registreringen
curl -s -w "\nHTTP %{http_code}\n" "https://api.nasjonalmuseet.no/api/v1/objects/NG.M.00939"
Ratebudsjett
| Kall | Grense per nøkkel |
|---|---|
| Verk, bla, tekstsøk, IIIF | 120 per minutt |
Bilder (/multimedia) |
60 per minutt |
Søk (/search/*) |
30 per minutt |
Linked Art (/api/linkedart/*) |
120 per minutt per IP-adresse |
Ved overskridelse svarer API-et 429 med Retry-After (sekunder), X-RateLimit-Remaining
og X-RateLimit-Reset. Vent og prøv igjen:
import os import time import requests
API = "https://api.nasjonalmuseet.no/api/v1" headers = {"X-API-Key": os.environ["NM_API_KEY"]}
def hent(url, **kw): """GET med respekt for ratebegrensningen: ved 429 venter vi Retry-After sekunder.""" for _ in range(5): r = requests.get(url, headers=headers, timeout=30, **kw) if r.status_code != 429: r.raise_for_status() return r.json() time.sleep(int(r.headers.get("Retry-After", "5"))) raise RuntimeError("Ga opp etter fem forsøk")
print(hent(f"{API}/objects/NG.M.00939")["mainTitle"])
Trenger en offentlig tjeneste mer, kan nøkkelen få egen grense. Kontakt oss.
Nøkkelen
- Varer i 180 dager. Forny den på registreringssiden før den går ut.
- Del den ikke. Hver person eller tjeneste lager sin egen.
- Legg den ikke i adressen (
?api_key=). Den virker ikke der, og havner i logger.