Schlicht
Ohne Schnickschnack, schnell scanbar
CreateQR Entwicklerhandbuch
Nutze drei Endpunkte, um QR-Codes zu erstellen, aufzulisten und zu löschen – mit voller Kontrolle über das Styling. Integration am selben Tag, sauberes JSON, und deine QRs bleiben in deinem Dashboard.
/api/v1
Auth: Authorization: Bearer <key> (empfohlen)
Derselbe Endpunkt, unterschiedliche Looks. Halte es schlicht, setze voll auf deine Marke oder rahme es für Offline-Kampagnen ein.
Ohne Schnickschnack, schnell scanbar
Für große Distanzen entwickelt
Auf das Design abgestimmte Kampagne
Voreingestelltes Wasserzeichen-Symbol
Poster-taugliches "SCAN ME"
Extra Stil für Social Media
Erstellen Sie einen statischen oder dynamischen QR-Code und speichern Sie ihn in Ihrem Konto.
Senden Sie nur JSON. Für die Schlüsselauthentifizierung ist ein Header Best Practice. Schlüssel-Felder im Body sind aus Kompatibilitätsgründen mit bestehenden Integrationen vorhanden.
Das ist der schnellste Hello-World-Einstieg.
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"}'
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
apikey |
String | Erforderlich |
Geheimer API-Schlüssel. Empfohlen im Authorization-Header (Bearer). JSON-Body apikey/api_key wird ebenfalls akzeptiert. |
data |
String | Erforderlich |
Zu codierender Inhalt. Für dynamische QR muss dies eine gültige URL sein. |
qrtype |
String | static |
QR-Modus: statisch oder dynamisch. |
title |
String | Optional |
QR-Titel, der im Dashboard angezeigt wird (auf 120 Zeichen gekürzt). |
folderid |
Number | Optional |
Positive ganzzahlige Ordner-ID, die Ihrem Konto gehört. |
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
transparent |
String/Bool | off |
on/off, true/false, 1/0, yes/no werden akzeptiert. |
backcolor |
String | #FFFFFF |
Hintergrund-Hexfarbe im Format #RRGGBB. |
frontcolor |
String | #000000 |
Hexfarbe der Hauptpunkte im Format #RRGGBB. |
gradient |
String/Bool | off |
Zweifarbigen Punktverlauf aktivieren. |
radial |
String/Bool | off |
Radialen Verlauf aktivieren (funktioniert, wenn gradient aktiviert ist). |
gradient_color |
String | #15A97C |
Zweite Verlaufsfarbe in #RRGGBB. |
marker_out_color |
String | #000000 |
Farbe des äußeren Finder-Markers. |
marker_in_color |
String | #000000 |
Farbe des inneren Finder-Markers. |
pattern |
String | default |
Stilvorgabe für die Körperpunkte.
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 |
Stilvorgabe für den äußeren Marker.
default
flurry
sdoz
drop_in
drop
dropeye
dropeyeleft
dropeyeleaf
dropeyeright
squarecircle
circle
rounded
flower
flower_in
leaf
|
marker_in |
String | default |
Stilvorgabe für den inneren Marker.
default
flurry
sdoz
drop_in
drop
dropeye
circle
rounded
sun
star
diamond
danger
cross
plus
x
heart
|
optionlogo |
String | none |
none, empfohlener lokaler SVG-Wasserzeichenpfad, veralteter lokaler PNG-Pfad oder base64-Bilddaten.
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 |
Hintergrundfläche des Logos deaktivieren. |
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
outer_frame |
String | none |
Stilvorgabe für den Rahmen.
none
bottom
top
balloon-bottom
balloon-top
ribbon-bottom
ribbon-top
phone
cine
|
framelabel |
String | SCAN ME |
Textbeschriftung des Rahmens (auf 80 Zeichen gekürzt). |
label_font |
String | Arial, Helvetica, sans-serif |
Schriftarten-Stack für die Rahmenbeschriftung. |
custom_frame_color |
String/Bool | off |
Benutzerdefinierte Rahmenfarbe aktivieren. |
framecolor |
String | #000000 |
Rahmen-Hexfarbe im Format #RRGGBB. |
{
"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"
}
{
"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"
}
{
"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"
}
{
"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"
}
Löschen Sie einen QR-Code per ID (nur Eigentümer).
{
"apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
"qrid": "1284"
}
{
"success": true,
"data": {
"deleted": true,
"qrid": "1284"
},
"request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}
Listen Sie Ihre QR-Codes in Seiten mit je 100 Einträgen auf, neueste zuerst.
Verwenden Sie die Paginierung ab 1. Pro Seite werden bis zu 100 Einträge zurückgegeben.
{
"apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
"pagination": "1"
}
{
"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"
}
Jede Antwort enthält request_id. Bewahren Sie sie auf, wenn Sie den Support kontaktieren, damit wir schnell debuggen können.
{
"success": false,
"error": {
"code": "validation_error",
"message": "Dynamic QR requires a valid URL in data."
},
"request_id": "5f5fbd38-f82f-49ad-bf11-f7f04ca9747a"
}
| Fehlercode | HTTP | Wann es auftritt | Was zu tun ist |
|---|---|---|---|
invalid_api_key |
401 | Fehlender oder ungültiger API-Schlüssel | Geben Sie einen gültigen Schlüssel über Bearer, X-API-Key oder das JSON-Body-Feld an. |
invalid_content_type |
415 | Der Body ist nicht application/json | Senden Sie Content-Type: application/json. |
request_too_large |
413 | Die Payload überschreitet das konfigurierte Limit | Reduzieren Sie die Body-Größe, insbesondere bei base64-Logos. |
plan_upgrade_required |
403 | Der Tarif ist für die API nicht zulässig | Wechseln Sie in Billing zu Business. |
validation_error |
422 | Ungültige Felder wie URL, Farbe oder folderid | Korrigieren Sie das Payload-Format und senden Sie es erneut. |
rate_limited |
429 | Limit pro Minute erreicht | Mit exponentiellem Backoff erneut versuchen und Retry-After beachten. |
monthly_quota_exceeded |
429 | Monatliches Kontingent ausgeschöpft | Auf das Zurücksetzen warten oder Kontingent- und Schlüsseleinstellungen anpassen. |
qr_not_found |
404 | Das Löschziel fehlt oder gehört Ihnen nicht | Prüfen Sie den Besitz von qrid und versuchen Sie es erneut. |
internal_error |
500 | Unerwartetes serverseitiges Problem | Mit Backoff erneut versuchen und request_id für den Support aufbewahren. |
Kurze Antworten auf die Fragen, die wir bei Integrationen am häufigsten sehen.
Die API ist nur für Business verfügbar. Das monatliche Kontingent ergibt sich aus deinem aktiven Tarif und den Schlüssel-Overrides. Das standardmäßige Business-Kontingent ist hoch, und Admins können es pro Schlüssel fein abstimmen.
Ja. Header-basierte Authentifizierung wird empfohlen, aber die Kompatibilitätsfelder apikey oder api_key im Body werden ebenfalls akzeptiert.
Ja. Jede erfolgreiche Erstellung wird in deinem Konto gespeichert und kann wie jeder andere QR verwaltet werden.
Du erhältst JSON-Fehler. Bei 429-Antworten beachte Retry-After und verwende exponentielles Backoff mit Jitter.
Nein. Löschen und Auflisten sind auf den Eigentümer des authentifizierten API-Schlüssels beschränkt.