Enqre

API pro QR kódy

Vytvářejte kódy z vlastního backendu, čtěte jejich skeny a dostávejte webhook ve chvíli, kdy někdo některý naskenuje. Tahle stránka účet nepotřebuje.

API je součástí tarifu Business. Klíče se vytvářejí v panelu v sekci API a webhooky a ukazujeme je jednou — ztracený klíč zneplatníme a nahradíme novým, nikdy ho neobnovujeme.

Základní adresa

https://enqre.com/api/v1

Ověřování

Každý požadavek nese klíč jako token bearer. Požadavek bez platného klíče dostane 401; platný klíč v tarifu bez API dostane 403.

curl https://enqre.com/api/v1/qrcodes \
  -H "Authorization: Bearer $ENQRE_API_KEY"

Endpointy

GET/api/v1/qrcodes?limit=50&cursor=<id>

Vypíše vaše kódy, od nejnovějších. Stránkování kurzorem: pošlete vrácený nextCursor a dostanete další stranu.

{
  "data": [
    {
      "id": "clx…", "name": "Table tent", "type": "URL",
      "slug": "a1b2c3", "destinationUrl": "https://example.com/menu",
      "scanCount": 128, "active": true, "createdAt": "2026-09-01T10:00:00.000Z",
      "shortUrl": "https://enqre.com/r/a1b2c3"
    }
  ],
  "nextCursor": "clx…"
}

POST/api/v1/qrcodes

Vytvoří dynamický kód s adresou. Odpověď nese krátkou adresu k vytištění.

{ "name": "Table tent", "url": "https://example.com/menu" }
201 Created
{
  "data": {
    "id": "clx…", "name": "Table tent", "slug": "a1b2c3",
    "destinationUrl": "https://example.com/menu",
    "shortUrl": "https://enqre.com/r/a1b2c3"
  }
}

GET/api/v1/qrcodes/{id}

Přečte jeden kód.

PATCH/api/v1/qrcodes/{id}

Změní kód — včetně jeho cíle. O to v dynamickém kódu jde: vytištěný výtisk funguje dál a začne vést jinam.

{ "url": "https://example.com/autumn-menu", "name": "Autumn menu", "active": true }

DELETE/api/v1/qrcodes/{id}

Smaže kód. Vytištěné výtisky se přestanou otevírat, takže tudy cesta k pozastavení kampaně nevede — nastavte místo toho active na false.

GET/api/v1/qrcodes/{id}/scans

Posledních 1000 skenů jednoho kódu, od nejnovějších, plus součet za celý jeho život.

{
  "total": 128,
  "data": [
    { "createdAt": "2026-09-06T18:12:03.000Z", "device": "mobile", "os": "iOS", "browser": "Safari" }
  ]
}

Chyby

Chyby jsou v JSON, se stabilním strojově čitelným kódem. Větvěte podle kódu, ne podle zprávy — zprávy můžeme přeformulovat, kódy ne.

401invalid_api_keyNo key, a revoked key, or one that does not exist.
403api_not_available_on_planThe key is valid; the account is not on Business.
400invalid_bodyThe JSON body failed validation.
402plan_limit_reachedThe account is at its dynamic-code limit.
404not_foundNo code with that id on this account.
429rate_limitedMore than 60 writes in a minute.

Limit požadavků

60 zápisů za minutu na účet, po překročení odpovídáme 429. Čtení dnes omezené není; to ale není slib, na kterém stavět.

Webhooky

Zaregistrujte adresu v sekci API a webhooky a každý sken na ni odešleme, jakmile nastane — váš systém se o něm dozví bez dotazování.

POST your-endpoint
X-Enqre-Event: scan.created
X-Enqre-Signature: <hex hmac-sha256 of the raw body>
Content-Type: application/json

{
  "event": "scan.created",
  "qrCodeId": "clx…",
  "slug": "a1b2c3",
  "name": "Table tent",
  "device": "mobile",
  "os": "iOS",
  "browser": "Safari"
}

Ověřte podpis

Spočítejte HMAC-SHA256 ze surového těla požadavku svým tajným klíčem webhooku a porovnejte s hlavičkou. Odmítněte všechno, co nesedí — a porovnávejte v konstantním čase.

import crypto from "node:crypto";

const raw = await req.text(); // the raw body, before JSON.parse
const expected = crypto
  .createHmac("sha256", process.env.ENQRE_WEBHOOK_SECRET)
  .update(raw)
  .digest("hex");

const given = req.headers.get("x-enqre-signature") ?? "";
const ok =
  given.length === expected.length &&
  crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected));

Kolekce Postman

Každý endpoint z téhle stránky, připravený ke spuštění: naimportujte kolekci, nastavte proměnnou apiKey, odešlete.

Stáhnout kolekci

Co API zatím nedělá

Kódy vytvořené přes API jsou kódy s adresou a výchozím vzhledem. Zbylých šestnáct typů, pole vzhledu a hromadný import jsou zatím jen v panelu. Všechno, co API vytvoří, je normální kód: k úpravám, k měření a k tisku jako každý jiný.

Získat klíč

API, webhooky, GS1 Digital Link, white-label a vlastní doména jsou v tarifu Business, za 39 € měsíčně.

Zobrazit tarify