Hoppa till innehållet

API

Partner-API:et låter ditt eget system utfärda, slå upp, lösa in och ångra presentkort med en API-nyckel. Er webbplats kan dessutom hämta arrangemang, serier, priser och bordspaket utan nyckel (se Evenemang nedan), och webhooks skickar besked om presentkort, ordrar, biljetter, bordsbokningar och arrangemang. Det är vanlig HTTP med JSON, och det finns ingen SDK som du behöver installera.

Bas-URL

https://api.kuvert.dk

Auktorisering

Alla anrop auktoriseras med en API-nyckel i Authorization-huvudet som en bearer-token.

Terminal
curl https://api.kuvert.dk/v1/api/giftcards \
  -H "Authorization: Bearer pk_live_..."

Nycklar skapas under Inställningar → API-nycklar. Bara ägaren kan skapa och återkalla dem. Det finns två prefixer, och du väljer inte själv mellan dem:

PrefixAnvänds för
pk_test_Testning. Rör inte riktiga pengar.
pk_live_Drift. Fungerar på riktiga kort och saldon.

Din butik säljer i exakt en Stripe-miljö, och nyckeln får den miljön. En demobutik får en pk_test_-nyckel; en butik som säljer för riktiga pengar får en pk_live_. Nycklar från den andra miljön avvisas vid första anropet. Därför finns det ingen knapp som kan välja fel.

Alla anrop är bundna till nyckelns företag. Du kan inte se eller röra ett annat företags kort, och en nyckel fungerar bara medan företaget är aktivt. Ett företag som ännu inte har slutfört Stripe, eller som är avstängt, får 401.

Svarformat

Svar är JSON. Ett presentkort ligger under nyckeln giftCard, en lista under giftCards.

Belopp är alltid heltal i öre, och tidpunkter är ISO 8601 i UTC. Varje svar har en x-request-id-header. Ta med den när du kontaktar oss om ett visst anrop, så kan vi hitta just det.

Listor är inte sidindelade: GET /v1/api/giftcards svarar med alla företagets kort på en gång, nyaste först.

Fel

Ett fel har alltid samma form: ett objekt med ett fält kallat error.

JSON
{ "error": "unauthorized" }
StatuserrorBetyder
400invalid_issue_requestKroppen matchar inte det som utfärdning kräver.
400invalid_redeem_requestKroppen matchar inte det som inlösen kräver.
400bad_requestAnropet saknar något grundläggande, vanligtvis koden i vägen.
400not_a_gift_cardKoden i sökvägen är en biljettkod (TKT-…). Den hör till incheckning, inte till ett presentkort. Svaret är 400 och inte 404, så att du inte letar efter ett kort som aldrig har funnits.
401unauthorizedNyckeln saknas, är återkallad, eller företaget är inte aktivt.
404gift_card_not_foundKoden finns inte på detta företag.
409idempotency_key_conflictNyckeln har använts på ett ANNAT kort. En återanvänd nyckel upprepar bara exakt det anrop den användes till, och den kan aldrig lyckas på ett nytt kort.
409cash_claim_cannot_be_deniednoCashClaim kan inte sättas på ett SÅLT kort. Ett kort som kunden har betalat för ger rätt att få restbeloppet utbetalt kontant, och den rätten kan en flagga inte ta bort. Utfärda som b2b eller comp.
404merchant_not_foundNyckeln är giltig, men företaget bakom den finns inte längre. Det händer sällan och kan inte rättas av en klient. Kontakta oss.
404order_not_foundOmskicka hittade kortet, men inte den order det kom från. Ett kort utfärdat för hand har ingen order och kan därför inte omskickas på det sättet.
409card_has_no_deliveryKortet har aldrig skickats av oss, eftersom det lämnades ut över disken. Det finns ingen leverans att upprepa.
422invalid_recipientrecipient i body för omskicka är inte en e-postadress vi kan skicka till. Utelämna fältet för att skicka till den adress kortet redan har.
502delivery_failedVi nådde vår leverantör, och den avvisade försändelsen. Det är inget fel på kortet, och ingenting har dragits. Försök igen eller kontrollera adressen.
403key_environment_mismatchNyckeln är giltig, men från en annan Stripe-miljö än den din butik säljer i, t.ex. en pk_test_ på en butik som säljer för riktiga pengar, eller tvärtom. 403 och inte 401: det hjälper inte att logga in igen, du behöver den andra nyckeln.
404not_foundSökvägen finns inte. Kontrollera metod och sökväg. En POST till en sökväg som bara tar GET får också det svaret.
429rate_limitedFör många anrop för tätt. Retry-After-headern anger hur många sekunder det dröjer innan du får försöka igen. Se Gränser.
500internal_errorEtt oväntat fel hos oss. Inget i svaret avslöjar vilket; skicka oss x-request-id-headern, så hittar vi det.

Inlösen har dessutom egna svar om kortets status, giltigheten, fördröjningen och saldot. De står samlade i tabellen under Lös in på sidan Presentkort. Ett av dem återkommer: card_inactive är också ett svar från Ångra en inlösen, men med ett snävare villkor. Där gäller det bara ett annullerat eller fryst kort, och det har en egen tabell längre ner.

Gränser

Du kan göra 240 anrop per 60 sekunder mot /v1/api, räknat i fasta fönster. Går du över svarar vi 429 rate_limited med en Retry-After-header som anger hur många sekunder som återstår av fönstret.

Alla slutpunkter

Var sidan till hjälp?