De GARAN-label-API maakt labels volgens bijlage II bij Uitvoeringsverordening (EU) 2025/1960 op basis van drie gegevens: garantieduur in jaren, merk en modelidentificatie. Elke nieuwe combinatie kost één credit; dezelfde combinatie opnieuw ophalen is gratis. De 3 startcredits van een nieuw account werken ook via de API, tenzij ze al zijn gebruikt voor labels die zonder registratie zijn gemaakt; de credits zijn dezelfde voor de website, de CSV-upload en de API.
Authenticatie
Elk request bevat de toegangssleutel in de header Authorization: Bearer gl_…. Je maakt de sleutel aan in het accountgedeelte van de generator, nadat je bent ingelogd met je e-mailadres. Een nieuwe sleutel vervangt de vorige. Zet hem nooit in openbare broncode of browsercode; gebruik hem alleen aan de serverkant.
Label aanmaken
POST https://www.garantielabel.app/api/v1/labels met een JSON-body:
| Veld | Verplicht | Beschrijving |
|---|---|---|
jahre | Ja | Garantieduur in jaren, meer dan 2, hele of halve jaren: "5", "2.5" of "2,5" |
marke | Ja | Naam van de producent die de garantie geeft, maximaal 40 tekens |
modell | Ja | Modelidentificatie, maximaal 24 tekens |
variante | Nee | full-colour (standaard), nested (alleen online) of full-bw (zwart-wit, alleen offline) |
Antwoord als JSON: {"svg": "<svg …", "neu_berechnet": true, "guthaben": 99, "id": "…"}. Daarbij is guthaben je resterende tegoed aan credits en geeft neu_berechnet aan of het label nieuw is aangemaakt en afgerekend. Met de header Accept: image/svg+xml krijg je direct het SVG-bestand; tegoed en afrekening staan dan in de headers X-Guthaben en X-Neu-Berechnet.
Voorbeelden
curl
curl -X POST https://www.garantielabel.app/api/v1/labels \
-H "Authorization: Bearer gl_…" \
-H "Accept: image/svg+xml" \
-H "Content-Type: application/json" \
-d '{"jahre":"5","marke":"Example","modell":"MX-500"}' \
-o GARAN-MX-500.svg
PHP
$ch = curl_init("https://www.garantielabel.app/api/v1/labels");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("GARAN_API_KEY"), "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["jahre" => "5", "marke" => "Example", "modell" => "MX-500"]),
]);
$label = json_decode(curl_exec($ch), true);
file_put_contents("GARAN-MX-500.svg", $label["svg"]);
JavaScript (Node.js)
const response = await fetch("https://www.garantielabel.app/api/v1/labels", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.GARAN_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ jahre: "5", marke: "Example", modell: "MX-500" }),
});
const { svg, guthaben } = await response.json();
Tegoed opvragen
GET https://www.garantielabel.app/api/konto met dezelfde sleutel levert {"angemeldet": true, "email": "…", "guthaben": 99, "labels": 1}.
Foutmeldingen
| Status | Betekenis |
|---|---|
| 400 | Ongeldige gegevens, bijvoorbeeld twee jaar of minder. De melding staat in fehler, in de taal van de header x-sprache of Accept-Language (de, en, fr, pl, es, it, nl), anders in het Duits. |
| 401 | Sleutel ontbreekt of is onbekend. |
| 402 | Geen credits meer. Een nieuw pakket vult dezelfde sleutel aan. |
| 409 | Hetzelfde label werd tegelijkertijd aangevraagd. Herhaal het request; het wordt maar één keer afgerekend. |
| 413, 415 | Request groter dan 8 KB of niet als JSON verstuurd. |
| 429 | Te veel requests: maximaal 600 per minuut en 30.000 per dag per account. Wacht even en verstuur opnieuw. |
Wat het label bevat
De API gebruikt het originele sjabloon van de Europese Commissie en vervangt alleen de drie bewerkbare velden, met het lettertype Inter ingebed. Het SVG-bestand staat op zichzelf en heeft geen externe bestanden nodig.
Credits voor de API worden verkocht in pakketten vanaf € 4,90 excl. btw, alleen aan bedrijven en zonder abonnement; prijzen en afrekenen vind je op de pagina van de generator. Dezelfde credits gelden in de GARAN-labelgenerator op deze website, waar je eerste 3 labels gratis zijn.
