Vue d'ensemble de l'API
Le moteur est publié sous forme d'une petite API HTTP. Il existe deux façons de s'authentifier.
Deux canaux
1. Marketplace RapidAPI (clients existants)
Appelez https://api.qr-branding.com avec votre secret de proxy RapidAPI. Les endpoints IA utilisent votre propre clé LLM, ou l'endpoint géré, qui n'en demande aucune. Rien ne change par rapport au fonctionnement de l'API Signet QR d'origine.
2. Packs de crédits grand public (nouveau)
Achetez un pack sur /pricing. Vos endpoints IA utilisent des clés LLM côté serveur (Groq / Gemini / OpenAI), et les crédits sont déduits à chaque génération réussie. L'éditeur du front-end utilise ce canal de façon transparente.
Endpoints
| Méthode | Chemin | Rôle |
|---|---|---|
POST | /api/qr/generate | Rendre un QR à partir d'un QrConfig explicite. |
POST | /api/qr/ai/generate | IA marketplace : vous apportez votre propre clé LLM. |
POST | /api/qr/ai/generate-managed | IA marketplace gérée : aucune clé LLM nécessaire. |
POST | /api/qr/ai/generate/server | IA grand public : clé LLM côté serveur, décompte en crédits. |
GET | /api/qr/templates | Lister les 118 modèles prêts à l'emploi (éventuellement ?category=…). |
POST | /api/qr/templates/{templateId} | Rendre un QR à partir d'un identifiant de modèle, avec remplacements facultatifs. |
POST | /api/qr/content/wifi | Assistant : construire la chaîne d'un QR WiFi. |
POST | /api/qr/content/vcard | Assistant : construire la chaîne d'une vCard. |
POST | /api/qr/content/geo | Assistant : construire la chaîne d'une géolocalisation. |
GET | /api/qr/ai/providers | Lister les fournisseurs et modèles de LLM pris en charge. |
GET | /api/ping | Vérification de santé (anonyme). |
En-têtes d'authentification
RapidAPI
X-RapidAPI-Proxy-Secret: <secret>
BFF interne (site grand public)
X-Internal-Service-Secret: <secret>
X-Internal-Customer-Id: <customer id>
X-Internal-Ts: <unix seconds>
X-Internal-Signature: <HMAC-SHA256(signing-key, "{customerId}.{ts}")>
TTL anti-rejeu : 60 secondes. Utilisés en interne par le front-end Next.js : vous ne les définirez jamais à la main.
Enveloppe d'erreur
Toute réponse hors 2xx a une structure stable :
{
"success": false,
"error": "Content length (5000) exceeds maximum allowed (4296 characters).",
"code": "CONTENT_TOO_LONG",
"field": "content"
}
field est renseigné lorsque l'échec concerne une entrée précise.
Limites de débit
| Formule | Par minute | Remarques |
|---|---|---|
| RapidAPI général | 60 | docs, ping, assistants |
| RapidAPI génération | 30 | /api/qr/generate |
| RapidAPI IA | 15 | appels LLM externes |
| Grand public général | 120 | par identifiant client |
| Grand public génération | 60 | par identifiant client |
| Grand public IA | 30 | par identifiant client |
Il existe aussi des plafonds globaux par minute pour protéger l'offre gratuite d'Azure. Si vous en atteignez un, vous recevez un 429 avec un en-tête Retry-After.
Formats de sortie
png (par défaut, base64), jpg, svg, pdf, webp. Définissez "responseType": "binary" pour télécharger directement le fichier au lieu de recevoir du base64 dans le JSON.