CreateQR Developer Manual

Automatiser la création de QR sans les parties ennuyeuses

Utilisez trois points de terminaison pour créer, répertorier et supprimer des codes QR avec un contrôle total du style. Intégration le jour même, JSON propre et vos QR restent dans votre tableau de bord.

Chemin de base : /api/v1 Auth : Autorisation : porteur <key> (recommandé)

Exemples de codes QR générés avec notre API

Même point de terminaison, ambiances différentes. Gardez les choses simples, optez pour une marque complète ou encadrez-la pour des campagnes hors ligne.

Créer des codes QR

Créez un code QR statique ou dynamique et stockez-le dans votre compte.

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

Envoyez du JSON uniquement. Pour l’authentification par clé, l’en-tête est la meilleure pratique. Les champs clés du corps sont là pour la compatibilité avec les intégrations existantes.

Démarrage rapide (cURL)

Il s'agit du chemin hello-world le plus rapide.

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"}'

Authentification et compatibilité

  • Recommandé : Autorisation : Porteur <key>
  • Également accepté : X-API-Key
  • Repli JSON : apikey ou api_key
  • Content-Type doit être application/json
  • Les méthodes non POST renvoient 405 method_not_allowed

Main Parameters

Parameter Type Default Description
apikey String Required Secret API key. Recommandé dans l'en-tête d'autorisation (au porteur). Le corps JSON apikey/api_key est également accepté.
data String Required Contenu à encoder. Pour un QR dynamique, il doit s'agir d'une URL valide.
qrtype String static Mode QR : statique ou dynamique.
title String Facultatif Titre QR affiché dans le tableau de bord (réduit à 120 chars).
folderid Number Facultatif ID de dossier entier positif appartenant à votre compte.

Paramètres de couleur et de forme

Parameter Type Default Description
transparent String/Bool off on/off, vrai/faux, 1/0, oui/non accepté.
backcolor String #FFFFFF Couleur hexadécimale d'arrière-plan au format #RRGGBB.
frontcolor String #000000 Couleur hexadécimale des points principaux en #RRGGBB format.
gradient String/Bool off Activer le dégradé de points bicolores.
radial String/Bool off Activer le dégradé radial (fonctionne lorsque le dégradé est activé).
gradient_color String #15A97C Deuxième couleur de dégradé dans #RRGGBB.
marker_out_color String #000000 Marqueur de recherche extérieur color.
marker_in_color String #000000 Couleur du marqueur de recherche intérieur.
pattern String default Style de point du corps preset.
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 Style de marqueur extérieur prédéfini.
default flurry sdoz drop_in drop dropeye dropeyeleft dropeyeleaf dropeyeright squarecircle circle rounded flower flower_in leaf
marker_in String default Style de marqueur intérieur preset.
default flurry sdoz drop_in drop dropeye circle rounded sun star diamond danger cross plus x heart
optionlogo String none none, chemin de filigrane SVG local recommandé, chemin PNG local existant ou données d'image 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 Désactiver l'arrière-plan du logo plate.

Paramètres du cadre

Parameter Type Default Description
outer_frame String none Préglage de style de cadre.
none bottom top balloon-bottom balloon-top ribbon-bottom ribbon-top phone cine
framelabel String SCAN ME Étiquette de texte du cadre (ajustée à 80 caractères).
label_font String Arial, Helvetica, sans-serif Pile de polices pour l'étiquette du cadre.
custom_frame_color String/Bool off Activer la couleur du cadre personnalisée.
framecolor String #000000 Frame hex couleur au format #RRGGBB.

Créer des exemples de demande

Exemple : QR simple

{
    "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"
}
Exemple d'aperçu de sortie

Exemple : Couleur + 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"
}

Exemple : Campagne encadrée QR

{
    "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"
}
Exemple d'aperçu de sortie

Enveloppe de réponse de réussite

{
    "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"
}

Supprimer les codes QR

Supprimer un QR par ID (propriétaire uniquement).

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

Request body

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

Response

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

Liste des codes QR

Listez vos QR par pages de 100, le plus récent en premier.

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

Utilisez la pagination à partir de 1. Les résultats renvoient jusqu'à 100 éléments par page.

Request body

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

Response

{
    "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"
}

Réponses d'erreur, limites et retries

Chaque réponse inclut request_id. Conservez-le lorsque vous contactez l'assistance afin que nous puissions déboguer rapidement.

Enveloppe d'erreur typique

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

Stratégie de nouvelle tentative

  • 429 rate_limited : réessayez avec un intervalle exponentiel plus gigue.
  • Honor Retry-After lorsqu'il est présent.
  • 429monthly_quota_exceeded : attendez la réinitialisation du quota ou utilisez une clé avec quota gauche.
  • 5xx : réessayez avec des tentatives limitées, puis alertez votre équipe.
Code d'erreur HTTP Quand cela se produit Que faire
invalid_api_key 401 Clé API manquante ou invalide Fournissez une clé valide via Champ de corps Bearer, X-API-Key ou JSON.
invalid_content_type 415 Le corps n'est pas une application/json Envoyer le type de contenu : application/json.
request_too_large 413 La charge utile dépasse la limite configurée Réduire la taille du corps, en particulier les logos base64.
plan_upgrade_required 403 Le plan n'est pas autorisé pour l'API Mise à niveau vers Business à partir de la facturation.
validation_error 422 Champs non valides tels que l'URL, la couleur ou l'ID de dossier Corrigez le format de charge utile et soumettez à nouveau.
rate_limited 429 Limite par minute atteinte Réessayez avec un intervalle exponentiel et un honneur Réessayez après.
monthly_quota_exceeded 429 Quota mensuel épuisé Attendez la réinitialisation ou l'ajustement du quota et des paramètres clés.
qr_not_found 404 La cible de suppression est manquante ou n'est pas la vôtre Vérifiez la propriété du qrid et essayez encore une fois.
internal_error 500 Problème inattendu côté serveur Réessayez avec interruption et conservez request_id pour l'assistance.

FAQ

Réponses courtes aux questions que nous voyons le plus dans les intégrations.

Combien de requêtes d'API puis-je exécuter ?

L'API est réservée aux entreprises. Le quota mensuel provient de votre forfait actif et des remplacements de clés. La graine Business par défaut est élevée et les administrateurs peuvent affiner chaque clé.

Puis-je envoyer des clés API dans le corps JSON ?

Oui. L'authentification basée sur l'en-tête est recommandée, mais les champs de corps de compatibilité apikey ou api_key sont également acceptés.

Les QR créés par l'API apparaissent-ils dans mon tableau de bord ?

Oui. Chaque création réussie est enregistrée dans votre compte et peut être gérée comme n'importe quel autre QR.

Que se passe-t-il lorsque j'atteins les limites ?

Vous recevez des erreurs JSON. Pour 429 réponses, respectez Retry-After et utilisez l'intervalle exponentiel avec gigue.

Puis-je supprimer un QR d'un autre compte ?

Non. La suppression et la liste sont limitées au propriétaire de la clé API authentifié.

Meilleures pratiques de sécurité

  • Ne jamais exposer les clés API brutes dans le JavaScript du navigateur, forfaits mobiles ou référentiels publics.
  • Utilisez les listes d'autorisation IP des clés API pour verrouiller l'utilisation sur des serveurs de confiance.
  • Consignez request_id avec vos propres ID de trace pour un tri plus rapide des incidents.
  • Faites pivoter les clés selon un calendrier et immédiatement après les fuites d'informations d'identification.
Ouvrir le gestionnaire de clés API