QRCode Suiteplateforme QR
Documentation

Quickstart API REST

QRCode Suite expose une API REST versionnée sur `https://qrcode-suite.com/api/v1/`. Chaque appel s'authentifie avec une clé API Bearer rattachée à votre workspace. Ce guide vous mène de la création de la clé à la création d'un QR code, la lecture de ses événements de scan, le changement de destination et l'enregistrement d'une conversion côté serveur — six requêtes au total.

  1. 1

    Créez une clé API

    Dans le dashboard : Paramètres → Clés API → Nouvelle clé. La clé en clair n'est affichée qu'une fois et n'est plus jamais stockée — seuls un hash HMAC-SHA-256 et un court préfixe d'affichage sont conservés. Format : `qrs_live_<64 caractères hex>` ; stockez-la comme `QCS_API_KEY`. Choisissez les scopes à la création : `qrcodes:read`, `qrcodes:write`, `scans:read`, `conversions:write`. Le formulaire présélectionne les deux scopes de lecture, le défaut prudent pour un identifiant qui finit dans un job CI. L'accès API est une fonction du plan Business ; une clé sur un plan inférieur s'authentifie mais reçoit un 403 `plan_limit`. Chaque clé est limitée à 300 requêtes par minute.

  2. 2

    Créez un QR code dynamique

    POST sur `/api/v1/qrcodes` avec l'en-tête `Authorization: Bearer $QCS_API_KEY` et le corps `{"name": "Flyer printemps", "type": "url", "destination_url": "https://example.com/landing"}`. La réponse `{"data": {…}}` contient l'id du QR code, le slug généré et `scan_url` — l'adresse tracée `/q/{slug}` encodée dans le code imprimé. `status` accepte `draft`, `active` ou `paused`, et `campaign_id` rattache le code à une campagne existante. Si le workspace a épuisé son quota de QR dynamiques, l'appel répond 403 `plan_limit` avec `details.limit` et `details.current` plutôt qu'une erreur générique. Les types statiques ne consomment jamais ce quota.

  3. 3

    Lisez les événements de scan

    GET `/api/v1/scans?qr_id={id}&days=30&per_page=50` retourne une page d'événements de scan et un bloc `pagination`. Chaque événement porte `device_type`, `os`, `browser`, `country`, `region`, `city`, `language`, `referrer`, `is_bot`, `ab_variant` et la `destination` vers laquelle le visiteur a été envoyé. `days` accepte 1 à 365 et vaut 30 par défaut. Aucune adresse IP dans la réponse : la plateforme n'en stocke pas, seul un hash à clé arrive en base. Omettez `qr_id` pour lire tous les scans du workspace.

  4. 4

    Changez la destination

    PATCH `/api/v1/qrcodes/{id}` avec le corps `{"destination_url": "https://example.com/new-destination"}`. Le même endpoint accepte `name`, `payload`, `campaign_id`, et `status` avec `draft`, `active`, `paused` ou `archived` ; au moins un champ est requis. Il répond 200 avec l'enregistrement mis à jour. Le code imprimé résout vers la nouvelle URL dès le scan suivant — pas de réimpression, pas de purge de cache. `DELETE /api/v1/qrcodes/{id}` répond 204 et retire le code.

  5. 5

    Enregistrez une conversion côté serveur

    POST `/api/v1/conversions` avec le corps `{"event_name": "purchase", "external_id": "order-1042", "amount": 49.9, "currency": "EUR", "qr_slug": "flyer-printemps"}`. Un nouvel événement répond 201 `{"id": …, "created": true}` ; rejouer le même `external_id` répond 200 `{"duplicate": true}`, donc un job qui réessaie ne peut pas compter le chiffre d'affaires deux fois. L'attribution accepte soit `qr_slug`, soit la valeur `session_ref` captée sur la landing page. L'appel exige le scope `conversions:write`.

  6. 6

    Erreurs, et la place du plugin WordPress

    Chaque échec retourne `{"error": {"code": …, "message": …}}` avec un code stable sur lequel brancher : `unauthorized`, `insufficient_scope`, `plan_limit`, `validation_error`, `not_found`, `rate_limited`. Les échecs de validation ajoutent `details.issues` indexé par champ. Le plugin WordPress est un connecteur, pas une seconde API : il se synchronise dans le même workspace via `/api/v1/wp/*` avec sa clé de licence, si bien que les codes créés dans WordPress apparaissent dans la même liste `GET /api/v1/qrcodes` que ceux créés ici. Le plugin n'est pas requis pour utiliser l'API, ni l'API pour utiliser le plugin.

Questions fréquemment posées

Qu'est-ce que QRCode Suite ?

QRCode Suite est une plateforme QR autonome : créez un compte gratuit et générez des QR codes dynamiques et personnalisés dans le navigateur — sans WordPress. Des connecteurs apportent les mêmes codes à WordPress et WooCommerce, où les commandes peuvent être attribuées à des QR codes spécifiques.

QRCode Suite fonctionne-t-il sans WordPress ?

Oui. QRCode Suite est un SaaS autonome : inscrivez-vous, créez vos QR codes et suivez les scans entièrement sur qrcode-suite.com. Le plugin WordPress est un connecteur optionnel qui ramène vos codes dans wp-admin et ajoute l'attribution des commandes WooCommerce.

QRCode Suite nécessite-t-il un abonnement séparé ?

Le plan Free est disponible gratuitement — sans carte bancaire. Les plans payants (Pro 9 €, Business 29 €, Agency 79 € par mois) débloquent codes illimités, règles de redirection et plus encore. Aucun frais par scan ne s'applique.

Quels types de QR codes QRCode Suite prend-il en charge ?

QRCode Suite prend en charge 22 types de QR codes : URL statique, URL dynamique, Texte brut, Téléphone, Email, Localisation, Link Hub, SMS, WhatsApp, Wi-Fi, vCard, Profil social, PDF, Téléchargement de fichier, Téléchargement d'app, Coupon, Événement calendrier, Formulaire de capture de leads, Collecte d'avis, Demande de gros, Récompense de fidélité et Payload personnalisé.

Puis-je modifier la destination d'un QR code après l'avoir imprimé ?

Oui. Les QR codes dynamiques utilisent une URL de redirection courte. Vous pouvez mettre à jour la destination depuis votre tableau de bord à tout moment, sans regénérer ni réimprimer le code.

Besoin d'aide pour démarrer ?

Commencez gratuitement ou parcourez toute la documentation.

Commencer gratuitementToute la doc