QR Code API
Dashboard →
RESTJSONHTTPSAPI KEY

Documentation API REST

Intégrez la génération de QR codes et codes-barres directement dans vos applications. L'API est disponible exclusivement avec le plan Business.

01

Authentification

Comment s'identifier auprès de l'API

Toutes les requêtes doivent inclure votre clé API dans le header HTTP Authorization.

HTTP Header
Authorization: Bearer YOUR_API_KEY
ℹ️
Où trouver votre clé ? Connectez-vous au dashboard → Paramètres → Clés API. Vous pouvez générer plusieurs clés et les révoquer à tout moment.
cURL — Requête authentifiée
400">curl -X 400 font-semibold">GET https:500 italic">//api.qrcode-app.com/v1/qrcodes \
  -H 400">"Authorization: Bearer sk_live_abc123xyz789" \
  -H 400">"Content-Type: application/json"
⚠️
Sécurité : Ne jamais exposer votre clé API dans du code front-end ou un dépôt public. Utilisez des variables d'environnement (.env).
02

URL de Base & Versioning

Base URL
https:500 italic">//api.qrcode-app.com/v1/
ParamètreValeur
ProtocoleHTTPS uniquement — les connexions HTTP sont refusées
Version actuellev1
FormatJSON exclusivement (Content-Type: application/json)
EncodageUTF-8
Timeout30 secondes par requête
03

Codes de Statut HTTP

CodeStatutDescription
200OKRequête réussie
201CreatedRessource créée avec succès
400Bad RequestParamètres manquants ou invalides
401UnauthorizedClé API manquante ou invalide
403ForbiddenQuota dépassé ou plan insuffisant
404Not FoundRessource introuvable
429Too Many RequestsLimite de taux atteinte
500Server ErrorErreur interne — contacter le support

Structure JSON des erreurs :

JSON — Réponse d'erreur
{
  400">"error": {
    400">"code": 400">"QUOTA_EXCEEDED",
    400">"message": 400">"Vous avez atteint la limite de votre plan.",
    400">"details": 400">"Passez au plan Business pour un accès illimité."
  }
}
04

Rate Limiting

Limites de requêtes par minute

PlanLimiteNote
Business1 000 req/minFenêtre de 60 secondes glissante
ProNon disponibleL'API n'est pas disponible sur ce plan
GratuitNon disponibleL'API n'est pas disponible sur ce plan
Headers de réponse
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 873
X-RateLimit-Reset: 1710254400
⚠️
En cas de HTTP 429, attendez l'expiration de la fenêtre indiquée par X-RateLimit-Reset (timestamp Unix).
05

Générer un QR Code Statique

Créer un QR code avec options de design

POST/v1/qrcodes/generate

Paramètres du body (JSON)

ChampTypeRequisDescription
typestringOuiurl, wifi, vcard, sms, whatsapp, maps, email, phone, event, payment, text
contentstring / objectOuiContenu encodé. Chaîne pour url/text/phone, objet JSON pour wifi/vcard/event/maps.
formatstringNonpng (défaut), svg, pdf
sizeintegerNonTaille px: 100 à 4096. Défaut: 512
error_correctionstringNonL, M (défaut), Q, H — H recommandé si logo
designobjectNonOptions visuelles (couleurs, logo, style des points)

Objet design

ChampTypeDescription
fg_colorstring (hex)Couleur des modules. Ex: #1a1a2e. Défaut: #000000
bg_colorstring (hex)Couleur de fond. Défaut: #ffffff
logo_urlstring (URL)URL HTTPS de votre logo (PNG/SVG, carré recommandé)
logo_sizenumberTaille du logo: 0.1 à 0.4. Défaut: 0.2
dot_stylestringsquare (défaut), round, dots, classy, classy-rounded
corner_stylestringsquare (défaut), round, extra-rounded

Types de QR codes disponibles

typeStructure de content
url"content": "https://example.com"
email"content": {"to":"a@b.com","subject":"Objet","body":"Msg"}
wifi"content": {"ssid":"MonWifi","password":"pass","encryption":"WPA"}
vcard"content": {"first_name":"Jean","last_name":"Dupont","phone":"+336...","email":"..."}
maps"content": {"latitude":48.8566,"longitude":2.3522,"label":"Paris"}
event"content": {"title":"Conférence","start":"2026-06-01T09:00","end":"2026-06-01T18:00"}
sms"content": {"phone":"+33612345678","message":"Bonjour"}
whatsapp"content": {"phone":"+33612345678","message":"Salut!"}
phone"content": "+33612345678"
payment"content": {"iban":"FR76...","amount":50,"currency":"EUR","label":"Facture"}

Exemple complet — QR URL avec logo

cURL
400">curl -X 400 font-semibold">POST https:500 italic">//api.qrcode-app.com/v1/qrcodes/generate \
  -H 400">"Authorization: Bearer sk_live_abc123" \
  -H 400">"Content-Type: application/json" \
  -d '{
    400">"type": 400">"url",
    400">"content": 400">"https:500 italic">//monsite.com",
    400">"format": 400">"png",
    400">"size": 1024,
    400">"error_correction": 400">"H",
    400">"design": {
      400">"fg_color": 400">"500 italic">#1a1a2e",
      400">"bg_color": 400">"500 italic">#ffffff",
      400">"logo_url": 400">"https:500 italic">//monsite.com/logo.png",
      400">"logo_size": 0.25,
      400">"dot_style": 400">"round",
      400">"corner_style": 400">"extra-rounded"
    }
  }'
JSON — Réponse
500 italic"># Réponse — 200 OK
{
  400">"success": 400">true,
  400">"data": {
    400">"qr_id": 400">"qr_K9mX2pL7nR",
    400">"type": 400">"url",
    400">"content": 400">"https:500 italic">//monsite.com",
    400">"format": 400">"png",
    400">"image_url": 400">"https:500 italic">//cdn.qrcode-app.com/qr_K9mX2pL7nR.png",
    400">"download_url": 400">"https:500 italic">//api.qrcode-app.com/v1/qrcodes/qr_K9mX2pL7nR/download",
    400">"created_at": 400">"2026-03-12T10:30:00Z"
  }
}
06

QR Codes Dynamiques

Modifiez la destination sans réimprimer

Un QR code dynamique pointe vers une URL intermédiaire contrôlée par l'API. Vous pouvez modifier la destination à tout moment. Les statistiques de scan sont disponibles en temps réel.

POST/v1/qrcodes/dynamicCréer un QR code dynamique
PUT/v1/qrcodes/{qr_id}/destinationMettre à jour la destination
JSON — Créer un QR dynamique
{
  400">"name": 400">"Campagne Été 2026",
  400">"destination_url": 400">"https:500 italic">//monsite.com/promo-ete",
  400">"format": 400">"png",
  400">"size": 512,
  400">"protection": {
    400">"password": 400">"secret123",
    400">"expiry_date": 400">"2026-09-01",
    400">"max_scans": 500
  },
  400">"design": { 400">"fg_color": 400">"500 italic">#e11d48", 400">"dot_style": 400">"round" }
}

Paramètres de protection

ChampTypeDescription
passwordstringMot de passe requis avant chaque scan
expiry_datestring ISO 8601Date d'expiration. Le QR sera inactif après cette date.
max_scansintegerNombre maximum de scans autorisés. 0 = illimité.
07

Gérer vos QR Codes

Lister, consulter, supprimer

GET/v1/qrcodesLister tous vos QR codes (pagination)
GET/v1/qrcodes/{qr_id}Consulter un QR code spécifique
DELETE/v1/qrcodes/{qr_id}Supprimer un QR code
GET/v1/qrcodes/{qr_id}/downloadTélécharger le fichier image

Query params — liste

ParamètreTypeDescription
pageintegerNuméro de page (défaut: 1)
limitintegerRésultats par page: 1–100 (défaut: 20)
typestringFiltrer par type: url, wifi, vcard... (optionnel)
kindstringFiltrer: static ou dynamic (optionnel)
Exemple — Liste des QR codes
400 font-semibold">GET /v1/qrcodes?page=1&limit=10&type=url&kind=dynamic

500 italic"># Réponse
{
  400">"data": [
    { 400">"qr_id": 400">"qr_K9mX2pL7nR", 400">"type": 400">"url", 400">"kind": 400">"dynamic", ... },
    { 400">"qr_id": 400">"qr_P3rT8qW1xN", 400">"type": 400">"wifi", 400">"kind": 400">"static", ... }
  ],
  400">"pagination": { 400">"total": 42, 400">"page": 1, 400">"limit": 10, 400">"pages": 5 }
}
08

Statistiques & Analytiques

Analysez vos scans en temps réel

GET/v1/qrcodes/{qr_id}/statsStats globales d'un QR code
GET/v1/qrcodes/{qr_id}/stats/dailyScans par jour (série temporelle)
GET/v1/qrcodes/{qr_id}/stats/countriesScans par pays
GET/v1/qrcodes/{qr_id}/stats/devicesScans par type d'appareil
GET/v1/stats/overviewVue globale de tous vos QR codes
JSON — Stats globales
{
  400">"data": {
    400">"qr_id": 400">"qr_dyn_5Rp9wZ",
    400">"total_scans": 1284,
    400">"unique_scans": 1102,
    400">"last_scan_at": 400">"2026-03-12T09:45:00Z",
    400">"top_country": 400">"France",
    400">"top_city": 400">"Paris",
    400">"devices": { 400">"mobile": 78.4, 400">"desktop": 18.2, 400">"tablet": 3.4 },
    400">"os": { 400">"ios": 45.1, 400">"android": 42.3, 400">"windows": 9.8, 400">"other": 2.8 }
  }
}

Filtres temporels (query params)

ParamètreTypeDescription
fromstring ISO 8601Date de début. Ex: 2026-01-01
tostring ISO 8601Date de fin. Ex: 2026-03-12
granularitystringPour /daily: hour, day (défaut), week, month
09

Codes-barres Produits

EAN-13, EAN-8, UPC-A, Code128 et plus

POST/v1/barcodes/generate
ChampTypeRequisDescription
formatstringOuiEAN13, EAN8, UPCA, CODE128, CODE39, ITF, QR
valuestringOuiValeur à encoder. Pour EAN-13: 12 chiffres (checksum calculé auto)
outputstringNonpng (défaut), svg
widthintegerNonLargeur en pixels (défaut: 400)
heightintegerNonHauteur en pixels (défaut: 200)
show_textbooleanNonAfficher les chiffres sous le code-barres (défaut: true)
metadataobjectNon{"sku":"...","name":"...","price":9.99,"category":"..."}
JSON — Générer un EAN-13
{
  400">"format": 400">"EAN13",
  400">"value": 400">"590123412345",
  400">"output": 400">"png",
  400">"width": 600,
  400">"height": 250,
  400">"show_text": 400">true,
  400">"metadata": {
    400">"sku": 400">"PROD-001",
    400">"name": 400">"Café Premium 250g",
    400">"price": 7.99,
    400">"category": 400">"Épicerie"
  }
}
10

Gestion des Clés API

GET/v1/api-keysLister vos clés API
POST/v1/api-keysCréer une nouvelle clé API
DELETE/v1/api-keys/{key_id}Révoquer une clé API
Création de clé API
500 italic"># Créer une clé API
400 font-semibold">POST /v1/api-keys
{ 400">"name": 400">"App Mobile Production", 400">"permissions": [400">"read", 400">"write"] }

500 italic"># Réponse (la clé n'est affichée QU'UNE SEULE FOIS)
{
  400">"key_id": 400">"key_8Wn4pQz",
  400">"name": 400">"App Mobile Production",
  400">"api_key": 400">"sk_live_x9Km2pL7nR8qW3vT...",
  400">"created_at": 400">"2026-03-12T10:00:00Z"
}
⚠️
Important : La valeur api_key n'est visible qu'une seule fois lors de la création. Copiez-la immédiatement et stockez-la dans vos variables d'environnement.
11

Exemples Complets par Langage

cURL
500 italic"># Générer un QR code
400">curl -X 400 font-semibold">POST https:500 italic">//api.qrcode-app.com/v1/qrcodes/generate \
  -H 400">"Authorization: Bearer sk_live_abc123" \
  -H 400">"Content-Type: application/json" \
  -d '{400">"type":400">"url",400">"content":400">"https:500 italic">//monsite.com",400">"format":400">"png",400">"size":512}'

500 italic"># Lister vos QR codes
400">curl https:500 italic">//api.qrcode-app.com/v1/qrcodes?limit=10 \
  -H 400">"Authorization: Bearer sk_live_abc123"

500 italic"># Consulter les stats
400">curl https:500 italic">//api.qrcode-app.com/v1/qrcodes/qr_K9mX/stats \
  -H 400">"Authorization: Bearer sk_live_abc123"
12

Erreurs & Dépannage

Code erreurHTTPCause & Solution
INVALID_API_KEY401Clé API incorrecte. Vérifiez le header Authorization et la validité de votre clé.
QUOTA_EXCEEDED403Limite de QR codes atteinte. Passez au plan supérieur ou supprimez d'anciens QR.
API_NOT_AVAILABLE403L'API n'est pas disponible sur votre plan. Plan Business requis.
INVALID_TYPE400Le type spécifié n'existe pas. Consultez la liste en section 5.
INVALID_CONTENT400Le champ content ne correspond pas au type. Ex: url requiert une URL valide.
QR_NOT_FOUND404Le qr_id n'existe pas ou n'appartient pas à votre compte.
RATE_LIMIT_EXCEEDED429Trop de requêtes. Attendez X-RateLimit-Reset avant de réessayer.
LOGO_TOO_LARGE400Logo trop grand. Utilisez logo_size entre 0.1 et 0.4.
INVALID_COLOR400Format de couleur invalide. Utilisez le format hex: #rrggbb.
INVALID_EAN400Pour EAN-13: fournir 12 chiffres (le checksum est calculé automatiquement).
ℹ️
Checklist de dépannage :
  1. Vérifiez que le header Authorization est au format Bearer YOUR_KEY
  2. Vérifiez que Content-Type: application/json est présent
  3. Lisez le champ error.code pour identifier précisément le problème
  4. Vérifiez votre quota via GET /v1/qrcodes
  5. Consultez X-RateLimit-Remaining si HTTP 429
  6. Contactez support@qrcode-app.com pour les erreurs HTTP 500

Prêt à intégrer l'API ?

Activez le plan Business pour obtenir votre clé API et commencer à générer des QR codes.