Hopp til innhold
skribbskribb

Utviklere

Feil

Alle sidene

Formen

Alt er JSON, også feilene. error er koden du skiller på i koden din, og den eneste du bør bygge logikk rundt. message forklarer på norsk hva som er galt, field peker på feltet når feilen gjelder ett bestemt, og docs lenker rett til avsnittet her som svarer på det.

En typisk feil
{
  "error": "bad-carrier",
  "message": "Ukjent fraktselskap. Gyldige verdier er posten, postnord og helthjem.",
  "field": "carrier",
  "docs": "https://skribb.no/utviklere/referanse/bestillinger"
}

Koder som følger et mønster

Noen koder lages av et feltnavn i stedet for å være skrevet én for én.

missing-scope:<scope>403
Nøkkelen mangler tilgangen ruta krever, og koden navngir den. missing-scope:orders:read betyr at du må huke av for orders:read på en ny nøkkel.
bad-<felt>422
Feltet gikk ikke an å bruke slik det ble sendt. field i svaret navngir det. De feltene som trenger en mer presis forklaring enn dette, står oppført hver for seg over.
shipping_rates-<hva>422
En fraktrad går ikke an å bruke, og resten av koden sier hvorfor: shipping_rates-service-required, shipping_rates-amount_ore-too-large og så videre. Hele kallet avvises, så tabellen står urørt.
shipping_countries-<hva>422
Landlista går ikke an å bruke. Landene må være ISO-3166 alfa-2, og lista kan ikke være tom.
<felt>-too-long422
En fritekst på nyhetsbrevet er lengre enn feltet tar: greeting-too-long, signoff-too-long, welcome-too-long, logo_url-too-long, reply_to-too-long. max i svaret sier grensen.
download_ttl_hours-out-of-range422
Nedlastingsgrensene er utenfor det som er lov: 1 til 8760 timer, og 1 til 1000 nedlastinger. download_max_count-out-of-range er den samme feilen for det andre feltet.

Alle kodene

400Bad Request

Vi klarte ikke å lese bodyen du sendte i det hele tatt. Ingenting ble lagret. Sjekk at du faktisk sender det du tror, og at Content-Type stemmer.

  • bad-json

    Bodyen er ikke gyldig JSON. Vi kom aldri så langt som til å se på feltene.

  • bad-multipart

    Skjemaet gikk ikke an å lese. Content-Type sa multipart/form-data, men innholdet var ikke et skjema vi kunne pakke ut.

401Unauthorized

Ikke prøv igjen med den samme nøkkelen. Den er enten borte, ukjent eller trukket tilbake.

  • missing-bearer

    Det var ingen Authorization: Bearer på forespørselen i det hele tatt.

  • invalid-key

    Nøkkelen finnes ikke. Som regel er den avkortet under kopiering: en hel nøkkel er skribb_sk_ og 43 tegn til.

  • revoked-key

    Nøkkelen er trukket tilbake. Lag en ny under Innstillinger, fanen API.

  • expired-token

    Tokenet var gyldig, men levetiden er ute. Dette gjelder tokens en klient har fått godkjent av eieren; en nøkkel du har laget selv utløper ikke.

403Forbidden

Nøkkelen er gyldig, men rekker ikke hit. Lag en ny med riktig avhuking, eller godta avtalen ruta ber om. Å prøve igjen uendret hjelper ikke.

  • account-inactive

    Kontoen som eier publikasjonen er stengt eller midlertidig sperret. Dette henger på kontoen, ikke på nøkkelen, så en ny nøkkel løser det ikke.

  • skribb-app-only

    Ruta er bare for skribb-appen, som melder på telefoner for varsler og merker varslene i oversikten som lest. En nøkkel du har laget selv, eller et annet program, får alltid dette svaret, uansett tilganger. skribb sender ikke varsler inn i andres apper. Vil du høre når noe skjer, bruk webhooks.

  • design-plan-required

    Du ville endre titlene, fargene, seksjonsstilen eller formen på et nettsted uten pakke. Det følger med Skribb Litt og Skribb Mer. fields i svaret lister feltene det gjelder, og ingenting fra kallet er lagret, heller ikke bredden eller avstanden. Send dem alene, så går det. Et felt med verdien det har fra før, teller ikke.

  • app-news-needs-mer

    Nyheter fra skribb-appen følger med Skribb Mer, og publikasjonen har den ikke. Skribb Litt holder ikke. Et innlegg kan du fortsatt skrive i oversikten, eller med POST /v1/posts fra et eget program.

  • dpa-not-accepted

    Eieren av publikasjonen må godta Tillegg E i databehandleravtalen før abonnentlista kan leses eller skrives til. Dette henger på personen, ikke på nøkkelen, så en ny nøkkel løser det ikke.

404Not Found

Det finnes ingenting med den id-en i din publikasjon. En id fra en annen publikasjon svarer også 404.

  • not-found

    Ingenting med den id-en i din publikasjon.

  • unknown-category

    Kategorien i adressen står ikke i kategoriregisteret. GET /v1/shop/categories lister dem som finnes.

409Conflict

Forespørselen er forståelig, men går ikke an akkurat nå. Å prøve igjen uendret hjelper ikke. Noen av disse svarer med hva tilstanden faktisk er, så du kan avstemme i stedet for å gjette.

  • duplicate-code

    Du har allerede en rabattkode med dette navnet. To regler kan ikke dele kode i samme butikk, siden kunden bare skriver inn den ene strengen.

  • shop-not-enabled

    Nettbutikken er ikke slått på for denne publikasjonen. /me forteller deg det uten å måtte prøve.

  • news-disabled

    Nettstedet har ikke slått på Nyheter, så en nyhet ville ikke hatt noe sted å stå. Eieren slår dem på under Innstillinger → Nettsted på skribb.no. Ingenting er skrevet.

  • not-a-site-publication

    Sider, meny og avtaler finnes bare på en publikasjon av typen nettsted. En blogg har ingen.

  • komplett-plan-required

    Nettstedet har ingen pakke. Da vises verken kontaktskjemaet eller chat-vinduet for besøkende, så det finnes ingen meldinger å hente. Både Skribb Litt og Skribb Mer holder, tross navnet på koden: den er fra da skjemaet fulgte Nettsted Komplett, og står fordi noen kan ha bygget mot den.

  • no-custom-font

    font eller heading_font ble satt til custom, som er skriftfilen publikasjonen har lastet opp selv, og det ligger ingen der. Nøkkelen står i vokabularet fordi en publikasjon som allerede bruker den, skal beholde skriften sin om filen en dag blir borte. Feltet det gjelder står i field.

  • mer-plan-required

    Ruta finnes bare med Skribb Mer, og eieren har den ikke. Til nå gjelder det svarmalene. Skribb Litt holder ikke her. /me forteller hvilken pakke publikasjonen har.

  • premium-plan-required

    Feltet du ville sette følger med Skribb Mer, og eieren har den ikke. Skribb Litt holder ikke her, til forskjell fra plan-required. field navngir feltet, og /me forteller hvilken pakke publikasjonen har.

  • plan-required

    Planlegging følger med en pakke, og eieren har ingen aktiv. Både Skribb Litt og Skribb Mer holder. /me forteller deg hvilken publikasjonen har.

  • already-published

    Du kan ikke sette et publisert innlegg i kø. Det er kladder som venter på et tidspunkt, og et innlegg som er ute, har ingenting å vente på.

  • not-published

    Bare et publisert innlegg kan sendes som nyhetsbrev. En kladd har ingen side å lenke til, så et brev om den ville sendt hver abonnent til en adresse som ikke finnes. Publiser først, send etterpå.

  • already-sent

    Innlegget eller utsendingen har gått ut én gang, og svaret sier når. Det finnes ingen force her: en ny utsending ville lagt det samme brevet i de samme innboksene, og det kan ikke gjøres om. Publiserte du et innlegg med send_newsletter: false, teller sperren som en utsending, og innlegget kan ikke sendes senere over API-et. En utsending du vil ha ut igjen skriver du på nytt, som en ny utsending.

  • broadcast-canceled

    Utsendingen er avlyst, og en avlyst utsending går ikke ut. Statusen står som avbrutt fordi «denne sendte vi ikke» er noe du kan trenge å vise til seinere; vil du likevel sende, skriver du en ny.

  • broadcast-failed

    Utsendingen står som feilet. Vi forsøkte å gi den til publikasjonen i to timer uten å nå fram, og sluttet å prøve. Du kan verken slette eller avlyse den, for en publikasjon vi ikke når kan ha rukket å sende deler av lista, og «denne sendte vi ikke» ville vært et løfte vi ikke kan holde. Send den på nytt i stedet: publikasjonen fører sin egen liste over hva som har gått ut, så ingen får den samme e-posten to ganger.

  • no-recipients

    Ingen abonnenter i mottakergruppen du valgte. Ingenting er sendt, og utsendingen står som den var, så du kan prøve igjen når lista har noen i seg.

  • email-quota-reached

    Utsendingen ville gått forbi taket for e-post denne måneden, så vi stanser den før noe er sendt. Svaret har recipient_count og quota_remaining, så du ser hvor mye som mangler. Taket vokser med abonnentene og kan utvides med et tillegg i oversikten, og det nullstilles ved månedsskiftet.

  • already-scheduled

    Innlegget står allerede i kø, og svaret sier når. Ett innlegg kan bare stå i kø én gang: skal du flytte tidspunktet, avlys først og legg det inn på nytt.

  • slug-taken

    Det finnes allerede et innlegg på den adressen. Sender du slug ved opprettelse, er det nettopp dette svaret som gjør kallet trygt å gjenta: den andre gangen lager vi ikke en tvilling, vi sier fra. Skal du endre innlegget som ligger der, hent det og bruk PATCH.

  • paywall-on-site

    Publikasjonen er et nettsted, og et nettsted tar ikke betalt for innhold. paid: true blir avvist før noe er skrevet. paid: false går alltid gjennom, så et innlegg som har betalingsmur fra før, kan få den tatt av.

  • not-a-physical-product

    Bare fysiske produkter har lager. Et digitalt produkt har ingen beholdning å justere.

  • inventory-not-tracked

    Produktet har ingen beholdning å endre på. Sett et tall med set før du begynner å justere med delta.

  • would-go-negative

    Trekket ville gjort beholdningen negativ. Svaret har inventory med beholdningen slik den faktisk er, så du kan avstemme mot ditt eget tall i stedet for å prøve igjen på noe som ikke kan gå.

  • not-fulfillable

    Bestillingen kan ikke merkes som sendt fra statusen den har nå. Svaret har status, så du ser hvorfor. Som regel er den alt merket, og da er dette det som hindrer at kjøperen får to beskjeder.

  • not-refundable

    Bare betalte og sendte bestillinger kan refunderes.

  • not-answerable

    Avtalen kan ikke flyttes dit fra statusen den har nå. En forespørsel som venter, kan bekreftes eller avslås, og en bekreftet avtale kan avlyses. Svaret har status, så du ser hva den står på. Har noen svart fra Avtaler i skribb mens du holdt på, er det dette du får, og den besøkende har bare fått det ene svaret.

  • booking-in-the-past

    Tidspunktet for avtalen har vært, så den kan ikke besvares eller avlyses lenger. Den besøkende ville fått e-post om en avtale som alt er forbi. Svaret har status.

  • too-many-pages

    Publikasjonen har alt så mange egne sider som den får ha. Slett en før du lager en til.

  • idempotency-key-in-progress

    En forespørsel med den samme Idempotency-Key kjører allerede. Vent et øyeblikk og spør på nytt: da får du svaret den første ga.

  • page-in-menu

    Sida kan ikke slettes så lenge menyen peker på den, for da ville lenka i toppen gått til ingenting. menu i svaret lister lenkene det gjelder, med index, label og href. Ta dem ut med PUT /v1/menu, og prøv igjen. Vi rydder ikke menyen for deg: hva som skal stå der, er ditt valg.

  • page-has-children

    Sida kan ikke slettes så lenge andre sider ligger under den, for da ville de pekt på en side som ikke finnes. children i svaret lister dem. Flytt dem med PUT /v1/pages/{slug} og parent, og prøv igjen.

  • cannot-delete-home

    Forsida kan ikke slettes, for den er det som gjør publikasjonen til et nettsted. Vil du tømme den, sender du PUT /v1/pages/home med en tom liste i blocks.

  • not-a-business

    Bedriftsprofilen kan bare skrives på et nettsted som tilhører en bedrift. Skjemaet for den vises bare da, og bytter eieren til privatperson, blir profilen tømt. Eieren bytter under Innstillinger → Nettsted.

  • list-full

    Publikasjonen har like mange abonnenter som pakken dekker, så vi tar ikke imot flere. Vi sender ingen bekreftelse du vet blir avvist. Utvid med en abonnentblokk eller bytt pakke, så går ruta som før. Svaret sier noe om lista og ingenting om adressen du sendte inn.

413Content Too Large

Filen er større enn vi tar imot. Komprimer eller skaler den ned.

415Unsupported Media Type

Innpakningen er ikke den ruta venter. Dette er om formatet, ikke om innholdet.

  • type

    Filtypen støttes ikke. Bruk PNG, JPG, WebP, SVG eller GIF.

  • expected-multipart

    /media tar imot en fil, ikke JSON. Send multipart/form-data med feltene purpose og file.

422Unprocessable Content

Vi leste bodyen, men kan ikke bruke den. Koden navngir hva som er galt, og feltet står i field når feilen gjelder ett bestemt. Ingenting ble lagret, heller ikke delvis.

  • send-and-schedule

    send: true og scheduled_for kom i samme kall. De sier hver sin ting om når utsendingen skal ut. Send én av dem.

  • missing-subject

    En utsending må ha et emne. Det er både emnefeltet og overskriften i e-posten, så det finnes ikke noe fornuftig å falle tilbake på.

  • subject-too-long

    Emnet er lengre enn 200 tegn.

  • empty-broadcast

    Det står ingenting under emnet. En utsending trenger tekst i body eller markdown, eller minst ett innlegg i post_slugs.

  • scheduled_for-past

    Tidspunktet i scheduled_for har vært. En utsending kan bare legges fram i tid.

  • send_newsletter-needs-publish

    send_newsletter betyr bare noe sammen med publish: true. Vi avviser den heller enn å overse den: en utsendingssperre som blir stilltiende ignorert, er nettopp slik en e-post går til alle abonnentene uten at noen skjønner hvorfor.

  • publish_at-in-the-past

    Tidspunktet har vært. Et innlegg lagt inn bakover i tid ville blitt publisert på første kryss, som aldri er det noen mente med å planlegge det.

  • empty-update

    Du sendte ingen felt å endre. Kommer den når du trodde du sendte noe, mangler som regel Content-Type: application/json, og da ble bodyen aldri lest.

  • need-exactly-one-of-delta-or-set

    Lagerjustering tar enten delta eller set. Begge, eller ingen, og vi måtte gjettet hva du mente.

  • content-and-markdown

    Brødteksten kom både som content og som markdown. Send én av dem.

  • body-and-markdown

    Teksten i en utsending kom både som body og som markdown. Samme regel som over: send én av dem.

  • digital-needs-delivery

    Et digitalt produkt må levere noe når det blir kjøpt. Sett delivery_file_key, delivery_reveal_text eller begge.

  • shadowed-slug

    Den adressen eier skribb selv. Sida ville blitt lagret og så aldri vist, fordi den faste ruta vinner over din.

  • html-block-not-allowed

    En toppseksjon i butikken kom med en html-blokk. Egen HTML legges inn i butikkinnstillingene, ikke over API-et. index i svaret sier hvilken blokk.

  • shop-slug

    Butikken ligger på den adressen. Sida ville blitt lagret og så aldri vist, fordi butikken svarer først. Velg en annen adresse, eller bytt ordet butikken ligger under.

  • empty

    Filen er tom.

  • missing-file

    Skjemaet hadde ikke noe file-felt.

  • bad-purpose

    purpose må være image, delivery eller post. from-url tar bare image og post.

  • url-required

    from-url trenger en url.

  • url-malformed

    Adressen lot seg ikke lese som en adresse.

  • url-too-long

    Adressen er lengre enn 2000 tegn.

  • url-must-be-https

    Vi henter bare over https.

  • url-no-credentials

    Adressen har brukernavn eller passord i seg, og det sender vi ikke videre.

  • url-not-public

    Adressen peker inn i et privat nett, på maskinen selv eller på et internt navn. Den kan vi ikke hente fra. Gjelder også en adresse som sender oss videre dit.

  • url-is-skribb

    Adressen peker på skribb selv.

  • url-too-many-redirects

    Adressen sendte oss videre mer enn tre ganger.

  • url-not-an-image

    Det som kom tilbake, var ikke et bilde vi tar. Vi tar PNG, JPG, WebP og GIF, og det er innholdstypen som avgjør, ikke hva adressen slutter på.

  • url-svg-not-allowed

    SVG er et dokument som kan kjøre kode, og det ville blitt servert fra vårt eget mediedomene. Send det som PNG i stedet.

  • bad-carrier

    Ukjent fraktselskap. Gyldige verdier er posten, postnord og helthjem.

  • bad-status

    Ukjent status å filtrere på. Bestillinger tar paid, fulfilled, canceled og refunded; abonnenter tar venter, bekreftet og avmeldt.

  • bad-format

    Gyldig verdi er markdown.

  • bad-kind

    kind må være kontakt eller chat.

  • bad-limit

    limit må være et heltall innenfor det ruta tillater. Grensa står på hver rute.

  • bad-cursor

    Cursoren er ikke lesbar, eller den hører til en annen liste. En cursor fra produkter virker ikke på bestillinger.

  • bad-updated_since

    updated_since må være et tidspunkt på ISO 8601-form.

  • bad-slug

    Adressen kan bare inneholde små bokstaver, tall og bindestrek.

  • bad-note

    Notatet trenger en tittel, og en eventuell link_url må begynne med http:// eller https://.

  • bad-categories

    Hver kategori må ha en slug av små bokstaver, tall og bindestrek, og et navn. Vi lagrer ikke bare de gyldige.

  • too-many-categories

    Flere kategorier enn en publikasjon får ha.

  • too-many-items

    Flere menylenker enn det er plass til. max i svaret sier hvor mange det er.

  • too-many-children

    Flere lenker under én menylenke enn det er plass til. index i svaret er menylenka, og max sier hvor mange det er plass til.

  • no-such-parent

    parent peker på en side nettstedet ikke har. Lag sida over først, og send så denne. pages i svaret lister sidene som finnes.

  • parent-too-deep

    Sider ligger bare ett nivå ned. Ligger sida du pekte på, selv under en annen, står den i parent_of_parent i svaret. Har denne sida sider under seg, står de i children.

  • too-many-redirects

    Flere videresendinger enn det er plass til. max i svaret sier hvor mange det er.

  • duplicate-redirect

    To videresendinger har samme gamle adresse, og en adresse kan bare sende ett sted. Skråstreken til slutt teller ikke. index i svaret er den andre av dem.

  • redirect-loop

    En videresending ender der den startet, direkte eller via de andre, og ville sendt den besøkende i ring. index i svaret er den første regelen i ringen.

  • no-such-page

    En menylenke peker på en side nettstedet ikke har. slug i svaret er den vi ikke fant, index er lenka det gjelder, og pages lister sidene som finnes. Lenker med flere ledd (/posts/min-artikkel) og adresser ut av nettstedet blir ikke vurdert.

  • read-only-field

    Feltet kommer fra Enhetsregisteret og kan ikke skrives gjennom API-et. field i svaret sier hvilket. Kommunen, næringskoden og organisasjonsformen oppdateres når organisasjonsnummeret slås opp på nytt i Innstillinger.

  • bad-taxonomy

    Ukjent kategoritype. Innlegg tar categories og tags, og ikke noe annet.

  • bad-idempotency-key

    Idempotency-Key er for lang. Hold deg under 255 tegn.

  • idempotency-key-required

    Send en Idempotency-Key du finner på selv, så er det trygt å prøve igjen. Andre steder er hodet valgfritt, fordi et svar som går tapt der, koster en dublett du kan slette. Her koster det det samme brevet én gang til i alle innbokser, og det er bare du som vet at de to forespørslene var den samme.

  • idempotency-key-reused

    Den Idempotency-Key er brukt før, med en annen body. Velg en ny per forespørsel, ikke per forsøk.

429Too Many Requests

Retry-After sier hvor lenge du bør vente. Et minutt holder alltid.

  • rate-limited

    For mange forespørsler på kort tid. Retry-After sier hvor lenge du bør vente.

502Bad Gateway

Feilen er på vår side eller hos noen vi snakker med. Dette er verdt å prøve igjen, gjerne med litt venting mellom forsøkene.

  • newsletter-suppression-failed

    Du ba om publisering uten nyhetsbrev, og vi fikk ikke stanset utsendingen. Da publiserer vi ikke: innlegget står som kladd, ingenting er sendt, og du kan prøve igjen.

  • url-unreachable

    Vi nådde ikke fram til adressen.

  • tenant-error

    Vi nådde ikke fram til publikasjonen din.

  • unreachable

    Publikasjonen svarte ikke. Som regel forbigående.

  • no-id

    Publikasjonen svarte uten å oppgi en id for det som ble laget.

  • bad-shape

    Publikasjonen svarte med noe vi ikke kjente igjen. Det er en feil på vår side.

  • not-configured

    Publikasjonen mangler nøkkelen vi bruker for å skrive innhold til den. Si fra til oss, så retter vi det.

  • no-pat

    Publikasjonen ga oss ingen skrivenøkkel da vi spurte. Som regel forbigående, så det er verdt et forsøk til.

  • domain-status-unavailable

    Domenet er koblet til, men tjenesten som kjenner statusen og DNS-postene, svarte ikke. Vi svarer heller ikke halvveis: et domene uten poster i svaret ser ut som et domene som ikke trenger noen, og det er den misforståelsen som koster mest her.

  • refund-failed

    Stripe tok ikke imot refusjonen. Bestillingen står som før, så ingen penger er på vei noe sted.

503Service Unavailable

Noe i oppsettet mangler. Å prøve igjen hjelper ikke før det er gjort ferdig i oversikten.