REST API
Predictable JSON endpoints for generation and validation. Bulk, history and analytics endpoints are available on Pro and above.
Authentication
Create API keys from your dashboard and send them as a bearer token. Public generation and validation endpoints are open for evaluation and rate-limited per IP.
curl https://exoders.app/api/public/v1/validate \
-H "Authorization: Bearer exo_live_xxx" \
-H "Content-Type: application/json" \
-d '{"symbology":"ean13","value":"4006381333931"}'Manage API keysPOST
/api/public/v1/productsGenerate GS1-compliant product barcodes and link QR codes from a product payload. Missing GTIN check digits are calculated for you.
Request
{
"products": [
{
"name": "Single Origin Cocoa 500g",
"brand": "Ember Foods",
"sku": "EF-COC-500",
"price": "12.90",
"currency": "EUR",
"symbology": "ean13",
"value": "400638133393",
"url": "https://store.example.com/p/cocoa-500"
}
],
"options": { "scale": 3, "includeQr": true }
}Response
{
"count": 1,
"generated": 1,
"failed": 0,
"results": [{
"index": 0,
"ok": true,
"symbology": "ean13",
"value": "4006381333931",
"gs1": { "compliant": true, "checkDigit": 1 },
"barcode": { "format": "svg", "svg": "<svg …>" },
"qr": { "format": "svg", "url": "https://…", "svg": "<svg …>" }
}]
}POST
/api/public/v1/generateRender any single barcode or QR code as SVG.
Request
{
"symbology": "ean13",
"value": "4006381333931",
"scale": 3,
"foreground": "#1A1512",
"background": "#FFFFFF"
}Response
{
"symbology": "ean13",
"value": "4006381333931",
"format": "svg",
"svg": "<svg …>"
}POST
/api/public/v1/validateValidate a value against a symbology and return the expected check digit.
Request
{ "symbology": "gtin13", "value": "4006381333931" }Response
{
"valid": true,
"symbology": "gtin13",
"normalized": "4006381333931",
"checkDigit": 1,
"gs1Compliant": true
}GET
/api/public/v1/symbologiesList every supported symbology with its group and example value.
Request
—
Response
{ "count": 22, "symbologies": [ … ] }Errors
Errors return the appropriate HTTP status with a JSON body:
{ "error": "Invalid check digit", "hint": "Correct: 4006381333931" }