Créer des QR codes depuis votre application avec une API REST : guide en 10 minutes
Pour créer des QR codes depuis votre propre système, envoyez une requête POST authentifiée à l'API REST de QR Maker avec l'URL de destination et votre propre identifiant de référence, puis affichez le lien court qu'elle renvoie. Utilisez l'identifiant de référence pour sécuriser les nouvelles tentatives, demandez le SVG dans le même appel, et modifiez la destination plus tard par un PATCH quand la page change. L'API est disponible avec l'offre Business et doit être appelée depuis votre serveur, pas depuis un navigateur.
Ce qu'il vous faut
- Une offre Business et un jeton d'API. Créez le jeton dans la page Réglages, sous Jetons API, et copiez-le dès qu'il s'affiche : il commence par
qrs_et n'est affiché qu'une seule fois. Choisissez la portée en lecture seule pour les jetons qui ne servent qu'à récupérer des rapports. - Un environnement côté serveur. L'API n'autorise pas les appels de navigateur entre origines : gardez le jeton sur votre serveur.
- Une référence stable pour chaque code dans votre propre système, comme un numéro de commande, un SKU ou un code de parrainage. Elle devient l'
external_id.
L'URL de base est https://qrmaker.ai/api/v1, et chaque requête porte Authorization: Bearer qrs_....
Étape 1 : créer un code
curl -X POST "https://qrmaker.ai/api/v1/qrcodes?include=svg" \
-H "Authorization: Bearer $QR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://shop.example.com/product/AB12CD?ref=qr",
"external_id": "AB12CD",
"name": "Product AB12CD",
"folder": "spring-campaign"
}'
Seul target_url est obligatoire. La réponse contient le code, dont un short_link comme https://qrmk.cc/hzu23X et, grâce à ?include=svg, le balisage SVG dans le champ svg. Le lien court est la seule chose à encoder dans l'image ou à partager. Modifier target_url plus tard ne change pas l'image.
Étape 2 : sécuriser les nouvelles tentatives avec external_id
Les réseaux tombent en panne et les tâches s'exécutent deux fois. Si vous renvoyez le même external_id avec le même target_url, l'API ne crée pas de second code : elle renvoie le code existant avec un statut 200 et un en-tête X-Idempotent-Replay: true. Un target_url différent pour un external_id existant renvoie 409, si bien qu'une nouvelle tentative ne peut jamais changer en silence la destination d'un code imprimé.
Étape 3 : utiliser le SVG
Stockez ou servez le SVG tel quel. Il s'adapte à toutes les tailles d'impression et fonctionne dans une balise img. Pour le récupérer plus tard, appelez GET /v1/qrcodes/{id}/svg avec les paramètres facultatifs size et margin ; la réponse porte un ETag, vous pouvez donc le mettre en cache et ne le retélécharger que lorsque le style change. L'API ne produit pas de fichiers PNG. Si vous avez besoin d'un PNG, convertissez le SVG dans votre propre système.
Étape 4 : changer la destination sans réimprimer
curl -X PATCH "https://qrmaker.ai/api/v1/qrcodes/by-external-id/AB12CD" \
-H "Authorization: Bearer $QR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "target_url": "https://shop.example.com/product/AB12CD-v2" }'
Vous pouvez retrouver les codes par votre propre référence, inutile donc de stocker l'identifiant QR Maker. La nouvelle URL passe par les mêmes contrôles de sécurité qu'une URL saisie sur le site.
Étape 5 : lire les résultats
GET /v1/qrcodes/{id}/analytics renvoie les scans, les visiteurs uniques par jour et des répartitions par pays, appareil, système d'exploitation, navigateur, référent, langue et étiquette d'emplacement, pour la période et le fuseau horaire de votre choix. GET /v1/analytics/summary agrège de nombreux codes en un seul appel, ce qui évite une requête par code. Si vous préférez un flux, GET /v1/scans renvoie les nouveaux scans dans l'ordre, et vous conservez le dernier next_since_id reçu.
Limites de débit et quotas
Chaque compte peut effectuer 120 requêtes API par minute, partagées entre tous ses jetons, et chaque réponse contient des en-têtes indiquant le budget restant. L'offre Business inclut 50 000 requêtes réussies par mois ; les requêtes qui échouent avec un statut 4xx ou 5xx ne comptent pas. Pour les traitements en masse, POST /v1/qrcodes/batch crée jusqu'à 100 codes par requête, chacun idempotent individuellement.
Un petit exemple Node
const res = await fetch('https://qrmaker.ai/api/v1/qrcodes?include=svg', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.QR_TOKEN}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ target_url: url, external_id: orderId }),
})
if (!res.ok) throw new Error(`QR API ${res.status}: ${(await res.json()).code}`)
const { data } = await res.json()
// data.short_link est ce qu'encode le code imprimé ; data.svg est l'image
Appuyez-vous sur le champ stable code des réponses d'erreur plutôt que sur le message lisible.
Pour aller plus loin
La référence de l'API liste tous les points de terminaison et codes d'erreur, et la page de présentation renvoie vers le fichier OpenAPI, la collection Postman et des programmes d'exemple complets. Pour créer des codes sans écrire de serveur, consultez les guides pour Google Sheets et pour Make, n8n et Zapier.
FAQ
Puis-je appeler l'API depuis le navigateur ?
Non. Si les navigateurs appelaient directement l'API, votre jeton serait exposé à tous les visiteurs. Appelez-la depuis votre serveur et transmettez le SVG ou le lien court à la page.
Que se passe-t-il si mon jeton fuite ?
Révoquez-le dans les Réglages et créez-en un nouveau. Les jetons ne peuvent appeler que l'API des QR codes, pas modifier votre mot de passe, votre facturation ou vos domaines, et un jeton en lecture seule ne peut rien créer, modifier ni supprimer.
Les codes peuvent-ils utiliser mon propre domaine ?
Oui. Avec l'offre Business, vous pouvez connecter un domaine personnalisé pour les liens courts. Passez-le en short_domain à la création d'un code, et le lien court utilisera votre domaine au lieu du domaine partagé.