Podręcznik dewelopera CreateQR

Automatyzuj tworzenie kodów QR bez nudnych etapów

Użyj trzech endpointów, aby tworzyć, wyświetlać i usuwać kody QR z pełną kontrolą nad stylizacją. Integracja tego samego dnia, przejrzysty JSON, a Twoje kody QR pozostają w panelu.

Ścieżka bazowa: /api/v1 Uwierzytelnianie: Authorization: Bearer <key> (zalecane)

Przykłady kodów QR wygenerowanych za pomocą naszego API

Ten sam endpoint, różne style. Zachowaj prostotę, postaw na pełny branding lub opraw go na potrzeby kampanii offline.

Tworzenie kodów QR

Utwórz statyczny lub dynamiczny kod QR i zapisz go na swoim koncie.

POST https://createqr.app/api/v1/create

Wysyłaj tylko JSON. W przypadku uwierzytelniania kluczem najlepszą praktyką jest użycie nagłówka. Pola klucza w treści są dostępne dla zgodności z istniejącymi integracjami.

Szybki start (cURL)

To najszybszy sposób na rozpoczęcie.

curl -sS -X POST 'https://createqr.app/api/v1/create' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer ck_live_XXXXXXXXXXXXXXXXXXXXXXXX' \
  -d '{"data":"https://createqr.app","qrtype":"static"}'

Uwierzytelnianie i zgodność

  • Zalecane: Authorization: Bearer <key>
  • Akceptowane również: X-API-Key
  • Alternatywa JSON: apikey lub api_key
  • Content-Type musi mieć wartość application/json
  • Metody inne niż POST zwracają 405 method_not_allowed

Parametry główne

Parametr Typ Domyślnie Opis
apikey String Wymagane Tajny klucz API. Zalecane jest użycie w nagłówku Authorization (Bearer). Akceptowane są także apikey/api_key w treści JSON.
data String Wymagane Treść do zakodowania. W przypadku dynamicznego QR musi to być prawidłowy URL.
qrtype String static Tryb QR: static lub dynamic.
title String Opcjonalne Tytuł QR wyświetlany w panelu (przycinany do 120 znaków).
folderid Number Opcjonalne Dodatnia liczba całkowita będąca ID folderu należącego do Twojego konta.

Parametry koloru i kształtu

Parametr Typ Domyślnie Opis
transparent String/Bool off Akceptowane wartości: on/off, true/false, 1/0, yes/no.
backcolor String #FFFFFF Kolor tła w formacie hex #RRGGBB.
frontcolor String #000000 Główny kolor kropek w formacie hex #RRGGBB.
gradient String/Bool off Włącza dwukolorowy gradient kropek.
radial String/Bool off Włącza gradient radialny (działa, gdy gradient jest włączony).
gradient_color String #15A97C Drugi kolor gradientu w formacie #RRGGBB.
marker_out_color String #000000 Kolor zewnętrznego markera pozycjonującego.
marker_in_color String #000000 Kolor wewnętrznego markera pozycjonującego.
pattern String default Preset stylu kropek.
default circle star diamond sparkle danger cross plus x heart shake blob special-circle-orizz special-circle-vert special-circle special-diamond ribbon oriental ellipse
marker String default Preset stylu zewnętrznego markera.
default flurry sdoz drop_in drop dropeye dropeyeleft dropeyeleaf dropeyeright squarecircle circle rounded flower flower_in leaf
marker_in String default Preset stylu wewnętrznego markera.
default flurry sdoz drop_in drop dropeye circle rounded sun star diamond danger cross plus x heart
optionlogo String none none, zalecana lokalna ścieżka do znaku wodnego SVG, starsza lokalna ścieżka do PNG lub dane obrazu base64.
none data:image/*;base64,... /images/watermarks/v2/01-link.svg /images/watermarks/v2/02-location.svg /images/watermarks/v2/03-email.svg /images/watermarks/v2/04-whatsapp.svg /images/watermarks/v2/05-wifi.svg /images/watermarks/v2/06-vcard.svg /images/watermarks/v2/07-menu.svg /images/watermarks/v2/08-app.svg /images/watermarks/v2/09-video.svg /images/watermarks/v2/10-feedback.svg /images/watermarks/v2/11-event.svg /images/watermarks/v2/12-coupon.svg /images/watermarks/v2/13-music.svg /images/watermarks/v2/14-social.svg /images/watermarks/v2/15-paypal.svg /images/watermarks/v2/16-bitcoin.svg /images/watermarks/v2/17-scan.svg
no_logo_bg String/Bool off Wyłącza tło pod logo.

Parametry ramki

Parametr Typ Domyślnie Opis
outer_frame String none Preset stylu ramki.
none bottom top balloon-bottom balloon-top ribbon-bottom ribbon-top phone cine
framelabel String SCAN ME Etykieta tekstowa ramki (przycinana do 80 znaków).
label_font String Arial, Helvetica, sans-serif Stos czcionek dla etykiety ramki.
custom_frame_color String/Bool off Włącza niestandardowy kolor ramki.
framecolor String #000000 Kolor ramki w formacie hex #RRGGBB.

Przykłady żądań tworzenia

Przykład: Prosty QR

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app",
    "qrtype": "static",
    "title": "Launch Landing QR",
    "transparent": "off",
    "backcolor": "#FFFFFF",
    "frontcolor": "#000000",
    "marker_out_color": "#000000",
    "marker_in_color": "#000000",
    "pattern": "default",
    "marker": "default",
    "marker_in": "default",
    "optionlogo": "none"
}
Podgląd przykładowego wyniku

Przykład: Kolor + logo

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app/features",
    "qrtype": "static",
    "title": "Feature Tour QR",
    "transparent": "off",
    "backcolor": "#033895",
    "frontcolor": "#FFFFFF",
    "marker_out_color": "#669DF4",
    "marker_in_color": "#669DF4",
    "pattern": "oriental",
    "marker": "flower",
    "marker_in": "circle",
    "optionlogo": "/images/watermarks/v2/01-link.svg"
}

Przykład: QR kampanii w ramce

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "data": "https://createqr.app/pricing",
    "qrtype": "static",
    "title": "Pricing Poster QR",
    "transparent": "off",
    "frontcolor": "#2B0011",
    "marker_out_color": "#3B0001",
    "marker_in_color": "#3B0001",
    "pattern": "ellipse",
    "marker": "sdoz",
    "marker_in": "sdoz",
    "optionlogo": "none",
    "outer_frame": "balloon-top",
    "framelabel": "SCAN ME",
    "label_font": "Arial, Helvetica, sans-serif",
    "custom_frame_color": "on",
    "framecolor": "#3B0001"
}
Podgląd przykładowego wyniku

Obiekt odpowiedzi powodzenia

{
    "success": true,
    "data": {
        "qrid": "1284",
        "svg": "<svg ...>...</svg>",
        "type": "static",
        "title": "Pricing Poster QR",
        "dashboard_url": "https://createqr.app/app/qrs/1284",
        "download_url": "https://createqr.app/app/qrs/1284/download/svg"
    },
    "request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}

Usuwanie kodów QR

Usuń kod QR według ID (tylko właściciel).

POST https://createqr.app/api/v1/delete

Treść żądania

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "qrid": "1284"
}

Odpowiedź

{
    "success": true,
    "data": {
        "deleted": true,
        "qrid": "1284"
    },
    "request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}

Lista kodów QR

Wyświetl swoje kody QR na stronach po 100, od najnowszych.

POST https://createqr.app/api/v1/list

Użyj paginacji zaczynającej się od 1. Wyniki zwracają do 100 elementów na stronę.

Treść żądania

{
    "apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
    "pagination": "1"
}

Odpowiedź

{
    "success": true,
    "data": {
        "pagination": "1",
        "page_size": 100,
        "total": 2,
        "items": [
            {
                "qrid": "1284",
                "title": "Campaign QR",
                "type": "dynamic",
                "created_at": "2026-02-17 09:12:30",
                "short_url": "https://createqr.app/r/a1b2c3",
                "dashboard_url": "https://createqr.app/app/qrs/1284"
            },
            {
                "qrid": "1269",
                "title": "Storefront QR",
                "type": "static",
                "created_at": "2026-02-17 08:02:08",
                "dashboard_url": "https://createqr.app/app/qrs/1269"
            }
        ]
    },
    "request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}

Odpowiedzi błędów, limity i ponowienia

Każda odpowiedź zawiera request_id. Zachowaj go podczas kontaktu z pomocą techniczną, abyśmy mogli szybko zdiagnozować problem.

Typowa struktura błędu

{
    "success": false,
    "error": {
        "code": "validation_error",
        "message": "Dynamic QR requires a valid URL in data."
    },
    "request_id": "5f5fbd38-f82f-49ad-bf11-f7f04ca9747a"
}

Strategia ponawiania

  • 429 rate_limited: ponów próbę z wykładniczym opóźnieniem i jitterem.
  • Przestrzegaj Retry-After, jeśli jest obecny.
  • 429 monthly_quota_exceeded: poczekaj na reset limitu lub użyj klucza z dostępnym limitem.
  • 5xx: ponawiaj z ograniczoną liczbą prób, a następnie powiadom swój zespół.
Kod błędu HTTP Kiedy występuje Co zrobić
invalid_api_key 401 Brak klucza API lub jest on nieprawidłowy Podaj prawidłowy klucz przez Bearer, X-API-Key lub pole w treści JSON.
invalid_content_type 415 Treść nie jest w formacie application/json Wyślij Content-Type: application/json.
request_too_large 413 Ładunek przekracza skonfigurowany limit Zmniejsz rozmiar treści, zwłaszcza logo base64.
plan_upgrade_required 403 Plan nie obsługuje API Przejdź na plan Business w sekcji Rozliczenia.
validation_error 422 Nieprawidłowe pola, takie jak URL, kolor lub folderid Popraw format ładunku i wyślij ponownie.
rate_limited 429 Osiągnięto limit na minutę Ponów próbę z wykładniczym opóźnieniem i uwzględnij Retry-After.
monthly_quota_exceeded 429 Miesięczny limit został wyczerpany Poczekaj na reset lub dostosuj ustawienia limitu i klucza.
qr_not_found 404 Cel usunięcia nie istnieje lub nie należy do Ciebie Sprawdź własność qrid i spróbuj ponownie.
internal_error 500 Nieoczekiwany problem po stronie serwera Ponów próbę z opóźnieniem i zachowaj request_id dla pomocy technicznej.

FAQ

Krótkie odpowiedzi na pytania, które najczęściej pojawiają się przy integracjach.

Ile żądań API mogę wykonać?

API jest dostępne tylko w planie Business. Miesięczny limit wynika z aktywnego planu i nadpisań kluczy. Domyślny limit początkowy dla Business jest wysoki, a administratorzy mogą precyzyjnie dostosować go dla każdego klucza.

Czy mogę wysyłać klucze API w treści JSON?

Tak. Zalecane jest uwierzytelnianie oparte na nagłówkach, ale akceptowane są też pola zgodności w treści: apikey lub api_key.

Czy kody QR utworzone przez API pojawiają się w moim panelu?

Tak. Każde pomyślnie utworzone QR jest zapisywane na Twoim koncie i można nim zarządzać tak jak każdym innym QR.

Co się stanie, gdy osiągnę limity?

Otrzymasz błędy JSON. W przypadku odpowiedzi 429 uwzględnij Retry-After i zastosuj exponential backoff z jitter.

Czy mogę usunąć QR z innego konta?

Nie. Usuwanie i listowanie są ograniczone do właściciela uwierzytelnionego klucza API.

Najlepsze praktyki bezpieczeństwa

  • Nigdy nie ujawniaj surowych kluczy API w JavaScript przeglądarki, pakietach mobilnych ani publicznych repozytoriach.
  • Używaj list dozwolonych adresów IP dla kluczy API, aby ograniczyć użycie do zaufanych serwerów.
  • Rejestruj request_id razem z własnymi identyfikatorami śledzenia, aby szybciej analizować incydenty.
  • Rotuj klucze zgodnie z harmonogramem oraz natychmiast po wycieku poświadczeń.
Otwórz menedżer kluczy API