La API de la etiqueta GARAN crea etiquetas conforme al anexo II del Reglamento de Ejecución (UE) 2025/1960 a partir de tres datos: duración de la garantía en años, marca e identificador del modelo. Cada combinación nueva cuesta un crédito; volver a obtener la misma combinación es gratis. Los 3 créditos iniciales de una cuenta nueva también funcionan con la API, salvo que ya se hayan usado en etiquetas creadas sin registrarse; los créditos son los mismos para la web, la carga de CSV y la API.
Autenticación
Cada petición lleva la clave de acceso en la cabecera Authorization: Bearer gl_…. Creas la clave en el área de cuenta del generador después de iniciar sesión con tu dirección de correo electrónico. Una clave nueva sustituye a la anterior. No la pongas nunca en código fuente público ni en código del navegador; úsala solo en el servidor.
Crear una etiqueta
POST https://www.garantielabel.app/api/v1/labels con un cuerpo JSON:
| Campo | Obligatorio | Descripción |
|---|---|---|
jahre | Sí | Duración de la garantía en años, más de 2, años enteros o medios: "5", "2.5" o "2,5" |
marke | Sí | Nombre del productor que ofrece la garantía, hasta 40 caracteres |
modell | Sí | Identificador del modelo, hasta 24 caracteres |
variante | No | full-colour (predeterminada), nested (solo online) o full-bw (blanco y negro, solo offline) |
Respuesta en JSON: {"svg": "<svg …", "neu_berechnet": true, "guthaben": 99, "id": "…"}. Aquí guthaben es tu saldo de créditos restante y neu_berechnet indica si la etiqueta se ha creado y cobrado de nuevo. Con la cabecera Accept: image/svg+xml recibes directamente el archivo SVG; el saldo y el cobro aparecen entonces en las cabeceras X-Guthaben y X-Neu-Berechnet.
Ejemplos
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":"Ejemplo","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" => "Ejemplo", "modell" => "MX-500"]),
]);
$etiqueta = json_decode(curl_exec($ch), true);
file_put_contents("GARAN-MX-500.svg", $etiqueta["svg"]);
JavaScript (Node.js)
const respuesta = 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: "Ejemplo", modell: "MX-500" }),
});
const { svg, guthaben } = await respuesta.json();
Consultar el saldo
GET https://www.garantielabel.app/api/konto con la misma clave devuelve {"angemeldet": true, "email": "…", "guthaben": 99, "labels": 1}.
Errores
| Estado | Significado |
|---|---|
| 400 | Datos no válidos, por ejemplo dos años o menos. El mensaje está en fehler, en el idioma de la cabecera x-sprache o Accept-Language (de, en, fr, pl, es, it, nl); si no, en alemán. |
| 401 | Falta la clave o es desconocida. |
| 402 | No te quedan créditos. Un paquete nuevo recarga la misma clave. |
| 409 | La misma etiqueta se solicitó al mismo tiempo. Repite la petición; solo se cobra una vez. |
| 413, 415 | Petición de más de 8 KB o no enviada como JSON. |
| 429 | Demasiadas peticiones: como máximo 600 por minuto y 30.000 al día por cuenta. Espera un momento y vuelve a enviarla. |
Qué contiene la etiqueta
La API usa la plantilla original de la Comisión Europea y sustituye solo los tres campos editables, con la fuente Inter incrustada. El archivo SVG es autónomo y no necesita archivos externos.
Los créditos para la API se venden en paquetes desde 4,90 € netos, solo a empresas y sin suscripción; los precios y el pago están en la página del generador. Los mismos créditos sirven en el generador de etiquetas GARAN de esta web, donde tus primeras 3 etiquetas son gratis.
