API kodów QR
Twórz kody z własnego backendu, odczytuj ich skany i odbieraj webhooka w chwili, gdy ktoś jeden z nich zeskanuje. Ta strona nie wymaga konta.
API jest częścią planu Business. Klucze tworzysz w panelu w sekcji API i webhooki, a pokazujemy je raz — zgubiony klucz unieważniamy i zastępujemy nowym, nigdy go nie odzyskujemy.
Adres bazowy
https://enqre.com/api/v1Uwierzytelnianie
Każde żądanie niesie klucz jako token bearer. Żądanie bez ważnego klucza dostaje 401; ważny klucz na planie bez API dostaje 403.
curl https://enqre.com/api/v1/qrcodes \
-H "Authorization: Bearer $ENQRE_API_KEY"Endpointy
GET/api/v1/qrcodes?limit=50&cursor=<id>
Wypisuje Twoje kody, od najnowszych. Stronicowanie kursorem: przekaż zwrócony nextCursor, żeby dostać następną stronę.
{
"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
Tworzy dynamiczny kod z adresem URL. Odpowiedź niesie krótki adres do wydrukowania.
{ "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}
Odczytuje jeden kod.
PATCH/api/v1/qrcodes/{id}
Zmienia kod — łącznie z jego celem. O to właśnie chodzi w kodzie dynamicznym: wydrukowany egzemplarz działa dalej i zaczyna prowadzić gdzie indziej.
{ "url": "https://example.com/autumn-menu", "name": "Autumn menu", "active": true }DELETE/api/v1/qrcodes/{id}
Usuwa kod. Wydrukowane egzemplarze przestają się otwierać, więc nie tędy droga do wstrzymania kampanii — ustaw wtedy active na false.
GET/api/v1/qrcodes/{id}/scans
Ostatnie 1000 skanów jednego kodu, od najnowszych, plus suma z całego życia kodu.
{
"total": 128,
"data": [
{ "createdAt": "2026-09-06T18:12:03.000Z", "device": "mobile", "os": "iOS", "browser": "Safari" }
]
}Błędy
Błędy są w JSON-ie, ze stabilnym kodem czytelnym dla maszyny. Rozgałęziaj się po kodzie, nie po komunikacie — komunikaty możemy przeredagować, kodów nie.
| 401 | invalid_api_key | No key, a revoked key, or one that does not exist. |
| 403 | api_not_available_on_plan | The key is valid; the account is not on Business. |
| 400 | invalid_body | The JSON body failed validation. |
| 402 | plan_limit_reached | The account is at its dynamic-code limit. |
| 404 | not_found | No code with that id on this account. |
| 429 | rate_limited | More than 60 writes in a minute. |
Limit zapytań
60 zapisów na minutę na konto, po przekroczeniu odpowiadamy 429. Odczyty nie są dziś ograniczone; to nie jest obietnica, na której warto budować.
Webhooki
Zarejestruj adres w sekcji API i webhooki, a każde zeskanowanie trafi tam metodą POST na bieżąco — Twój system dowie się o nim bez odpytywania.
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"
}Sprawdź podpis
Policz HMAC-SHA256 surowego ciała żądania swoim sekretem webhooka i porównaj z nagłówkiem. Odrzuć wszystko, co się nie zgadza — i porównuj w stałym czasie.
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));Kolekcja Postmana
Każdy endpoint z tej strony, gotowy do uruchomienia: zaimportuj kolekcję, ustaw zmienną apiKey, wyślij.
Pobierz kolekcjęCzego API jeszcze nie robi
Kody utworzone przez API to kody z adresem URL, z domyślnym wyglądem. Pozostałych szesnaście typów, pola wyglądu i import zbiorczy są na razie tylko w panelu. Wszystko, co API tworzy, jest normalnym kodem: do edycji, do mierzenia i do druku, jak każdy inny.
Weź klucz
API, webhooki, GS1 Digital Link, white-label i własna domena są w planie Business, 39 € miesięcznie.
Zobacz plany