Semplice
Essenziale, scansione rapida
Manuale per sviluppatori di CreateQR.app
Usa tre endpoint per creare, elencare ed eliminare codici QR con controllo completo dello stile. Integrazione in giornata, JSON pulito e i tuoi QR restano nella dashboard.
/api/v1
Autenticazione: Authorization: Bearer <key> (consigliato)
Stesso endpoint, stili diversi. Mantienilo semplice, personalizzalo con il tuo brand o incornicialo per campagne offline.
Essenziale, scansione rapida
Progettato per la distanza
Campagna in linea con il tema
Icona filigrana preimpostata
Pronto per poster "SCANSIONAMI"
Stile extra per i social
Crea un codice QR statico o dinamico e salvalo nel tuo account.
Invia solo JSON. Per l'autenticazione tramite chiave, l'header è la best practice. I campi della chiave nel body sono presenti per compatibilità con le integrazioni esistenti.
Questo è il modo più veloce per iniziare.
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"}'
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
apikey |
String | Obbligatorio |
Chiave API segreta. Consigliata nell'header Authorization (Bearer). Sono accettati anche apikey/api_key nel body JSON. |
data |
String | Obbligatorio |
Contenuto da codificare. Per i QR dinamici, deve essere un URL valido. |
qrtype |
String | static |
Modalità QR: statico o dinamico. |
title |
String | Facoltativo |
Titolo del QR mostrato nella dashboard (troncato a 120 caratteri). |
folderid |
Number | Facoltativo |
ID numerico positivo della cartella associata al tuo account. |
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
transparent |
String/Bool | off |
Sono accettati on/off, true/false, 1/0, yes/no. |
backcolor |
String | #FFFFFF |
Colore esadecimale di sfondo nel formato #RRGGBB. |
frontcolor |
String | #000000 |
Colore esadecimale principale dei punti nel formato #RRGGBB. |
gradient |
String/Bool | off |
Abilita il gradiente a due colori dei punti. |
radial |
String/Bool | off |
Abilita il gradiente radiale (funziona quando il gradiente è attivo). |
gradient_color |
String | #15A97C |
Secondo colore del gradiente in #RRGGBB. |
marker_out_color |
String | #000000 |
Colore del marcatore di rilevamento esterno. |
marker_in_color |
String | #000000 |
Colore del marcatore di rilevamento interno. |
pattern |
String | default |
Preset di stile dei punti del corpo.
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 di stile del marcatore esterno.
default
flurry
sdoz
drop_in
drop
dropeye
dropeyeleft
dropeyeleaf
dropeyeright
squarecircle
circle
rounded
flower
flower_in
leaf
|
marker_in |
String | default |
Preset di stile del marcatore interno.
default
flurry
sdoz
drop_in
drop
dropeye
circle
rounded
sun
star
diamond
danger
cross
plus
x
heart
|
optionlogo |
String | none |
none, percorso consigliato a una filigrana SVG locale, percorso legacy a un PNG locale oppure dati immagine 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 |
Disattiva lo sfondo del logo. |
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
outer_frame |
String | none |
Preset di stile della cornice.
none
bottom
top
balloon-bottom
balloon-top
ribbon-bottom
ribbon-top
phone
cine
|
framelabel |
String | SCAN ME |
Etichetta di testo della cornice (troncata a 80 caratteri). |
label_font |
String | Arial, Helvetica, sans-serif |
Stack di font per l'etichetta della cornice. |
custom_frame_color |
String/Bool | off |
Abilita un colore personalizzato per la cornice. |
framecolor |
String | #000000 |
Colore esadecimale della cornice nel formato #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"
}
Elimina un QR tramite ID (solo proprietario).
{
"apikey": "ck_live_XXXXXXXXXXXXXXXXXXXXXXXX",
"qrid": "1284"
}
{
"success": true,
"data": {
"deleted": true,
"qrid": "1284"
},
"request_id": "0f8fad5b-d9cb-469f-a165-70867728950e"
}
Elenca i tuoi QR in pagine da 100, dai più recenti.
Usa la paginazione a partire da 1. I risultati restituiscono fino a 100 elementi per pagina.
{
"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"
}
Ogni risposta include request_id. Conservalo quando contatti l'assistenza così possiamo eseguire il debug rapidamente.
{
"success": false,
"error": {
"code": "validation_error",
"message": "Dynamic QR requires a valid URL in data."
},
"request_id": "5f5fbd38-f82f-49ad-bf11-f7f04ca9747a"
}
| Codice errore | HTTP | Quando si verifica | Cosa fare |
|---|---|---|---|
invalid_api_key |
401 | Chiave API mancante o non valida | Fornisci una chiave valida tramite Bearer, X-API-Key o il campo nel body JSON. |
invalid_content_type |
415 | Il body non è application/json | Invia Content-Type: application/json. |
request_too_large |
413 | Il payload supera il limite configurato | Riduci la dimensione del body, in particolare i loghi in base64. |
plan_upgrade_required |
403 | Il piano non è abilitato per l'API | Passa a Business dalla sezione Fatturazione. |
validation_error |
422 | Campi non validi come URL, colore o folderid | Correggi il formato del payload e invialo di nuovo. |
rate_limited |
429 | Raggiunto il limite per minuto | Riprova con backoff esponenziale e rispetta Retry-After. |
monthly_quota_exceeded |
429 | Quota mensile esaurita | Attendi il ripristino o modifica le impostazioni di quota e della chiave. |
qr_not_found |
404 | La destinazione di eliminazione è mancante o non ti appartiene | Verifica la proprietà di qrid e riprova. |
internal_error |
500 | Problema imprevisto lato server | Riprova con backoff e conserva request_id per l'assistenza. |
Risposte brevi alle domande che vediamo più spesso nelle integrazioni.
L'API è disponibile solo per Business. La quota mensile dipende dal tuo piano attivo e dalle impostazioni specifiche della chiave. La dotazione predefinita di Business è elevata e gli amministratori possono regolarla nel dettaglio per ogni chiave.
Sì. L'autenticazione tramite header è consigliata, ma sono accettati anche i campi di compatibilità nel body apikey o api_key.
Sì. Ogni creazione andata a buon fine viene salvata nel tuo account e può essere gestita come qualsiasi altro QR.
Ricevi errori JSON. Per le risposte 429, rispetta Retry-After e usa un backoff esponenziale con jitter.
No. Le operazioni di eliminazione e visualizzazione elenco sono limitate al proprietario della chiave API autenticata.