Senest opdateret
Reference
WeLabel API: forsendelser, idempotens og fejl
Til den, der senere vil sende ordrer direkte til WeLabel i stedet for at lade os hente ordrefilen: kaldet, kvitteringen, idempotensreglen og fejlkoderne.
Siden beskriver et API, der endnu ikke er åbnet.
Den står her, fordi I skal kunne se, hvad I senere kobler jer på — men den beskriver den form, vi bygger efter, ikke en tjeneste, I kan kalde i dag. POST /api/v1/shipments svarer i skrivende stund 501 og kan kun nås fra en indlogget session. API-nøgler findes endnu ikke, så Authorization: Bearer nedenfor er et forslag, ikke en beskrivelse. Skriver I integrationen efter denne side i dag, bygger I på et gæt.
Det, der virker i dag, er filen. WeLabel henter den Interline-fil, jeres webshop allerede skriver, fra jeres server. Feltspecifikationen for Interline-CSV’en er målt på rigtige filer og gælder nu. Skal I bygge på noget, så byg på den — og skriv til os, så siger vi til, når kaldet og nøglerne står fast.
01
KommerAutentificering
Én API-nøgle pr. organisation, oprettet i dashboardet. Den sendes i Authorization-headeren — aldrig i URL’en, hvor den ender i jeres egne adgangslogs.
Nøglen vises én gang ved oprettelsen. Bliver den væk, laver I en ny og sletter den gamle; begge kan være aktive imens, så I kan skifte uden at stoppe pakkebordet.
Authorization: Bearer wl_live_7Q2K…9ZTV Content-Type: application/json; charset=utf-8 Idempotency-Key: 10482-0
02
KommerOpret en forsendelse
Ét kald pr. ordre. Vi oversætter til GLS’ nye Label API med jeres egne GLS-oplysninger, gemmer etiketten og lægger printjobbet i kø til den printer, I har valgt.
Kaldet
{
"orderId": "10482",
"shipmentDate": "2026-09-14",
"delivery": {
"name1": "Mette Sørensen",
"street1": "Nørrebrogade 42, 3. th",
"zipcode": "2200",
"city": "København N",
"country": "DK",
"email": "mette@example.dk",
"mobile": "+45 20 12 34 56"
},
"parcels": [
{ "index": 0, "weight": 1.4 }
],
"services": [
{ "type": "ShopDelivery",
"value": "2760 4001" }
],
"labelFormat": "zpl"
}{
"shipmentId": "shp_8Q2K4M7ZTV",
"orderId": "10482",
"status": "afventer_print",
"parcels": [
{
"index": 0,
"parcelNumber": "052300091234",
"labelFormat": "zpl",
"printer": "PAKKEBORD-01"
}
],
"carrier": "gls-dk",
"traceId": "b41f…c7a2",
"createdAt":
"2026-09-14T09:41:12Z"
}Hvad I får tilbage
Pakkenummeret, med det samme. Etiketten selv ligger hos os og printes af agenten — I skal ikke håndtere ZPL for at printe.
Gem traceId
Det er GLS’ eget spor på kaldet, og det eneste håndtag GLS’ support tager imod. Vi gemmer det også selv i 90 dage.
Bemærk orderId
Det bliver til GLS’ eget Reference-felt, som højst må fylde 15 tegn. Er jeres ordrenumre længere, siger vi det ved oprettelsen frem for at klippe dem af i stilhed.
03
KommerIdempotens
Nøglen er ordrenummer + pakkeindeks. Sender I det samme kald igen — fordi jobbet blev kørt to gange, eller fordi netværket faldt ud midt i svaret — får I den forsendelse tilbage, der allerede findes. Der oprettes ikke en pakke mere.
Sætter I selv Idempotency-Key, bruger vi jeres. Gør I ikke, danner vi den af de to felter.
Vi prøver aldrig et kald igen, der kan være gået igennem
GLS’ API har ingen idempotens i sin ende. Svarer det ikke i tide, ved ingen, om pakken blev oprettet. Så gætter vi ikke: forsendelsen får status afklaring_paakraevet, og et menneske afgør, hvad der skal ske. Det er derfor, den samme ordre aldrig får to pakkenumre, og modtageren aldrig får to adviseringer — GLS adviserer, så snart en etiket er oprettet.
{
"shipmentId": "shp_8Q2K4M7ZTV",
"status": "afklaring_paakraevet",
"message": "GLS svarede ikke i tide.
Pakken findes måske allerede — vi
opretter den ikke igen af os selv."
}04
KommerSvar og fejl
Et afvist kald har både en code, som jeres kode kan skifte på, og en message, som et menneske kan læse højt i telefonen.
| Status | Betydning |
|---|---|
| 400 | Kaldet mangler et felt, GLS kræver — typisk vægt, e-mail eller mobil. Vi siger hvilket, og hvorfor det er obligatorisk for den valgte service. |
| 401 | API-nøglen mangler, er forkert eller er slettet. |
| 402 | Nøglen er god nok — kontoen skal ses til. Ikke 403, netop for at ingen begynder at fejlsøge sin API-nøgle. Koderne står nedenfor. |
| 422 | GLS afviste forsendelsen. GLS’ egen besked og traceId følger med uændret. |
| 202 | Modtaget, men endnu ikke afgjort — enten fordi GLS ikke svarede i tide, eller fordi forsendelsen står i kø under en forstyrrelse. Intet går tabt, og intet skal skrives ind igen. |
proeve_udloebetPrøveperioden er udløbet.
proeve_opbrugtDe 100 prøveetiketter er brugt.
abonnement_ubetaltBetalingen kunne ikke trækkes.
abonnement_paa_pauseAbonnementet er sat på pause.
abonnement_ophoertAbonnementet er ophørt.
ingen_kontoIngen aktiv plan på kontoen.
En etiket, der allerede er hentet hos GLS, kan altid printes igen — genudskrivning bliver aldrig afvist af de her koder. En pakke, I har betalt for, skal kunne komme ud af printeren.