API de QR Branding
La API de códigos QR más personalizable que existe. Genera códigos QR impactantes, con tu marca y conformes a ISO 18004, con 37 formas de módulo, 118 plantillas, diseño asistido por IA y 5 formatos de salida.
Suscríbete en RapidAPI: rapidapi.com/quartzondev/api/qr-branding. Los planes y las cuotas figuran en la página de RapidAPI.
Inicio rápido
1. Genera un código QR personalizado
curl -X POST "https://qr-branding.p.rapidapi.com/api/qr/generate" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: qr-branding.p.rapidapi.com" \
-d '{
"content": "https://example.com",
"primaryColor": "#1a1a2e",
"backgroundColor": "#FFFFFF",
"moduleShape": "circle",
"fileFormat": "png",
"outputWidth": 512,
"eccLevel": "H"
}'
Respuesta:
{
"success": true,
"qrBase64": "iVBORw0KGgoAAAANSUhEUg...",
"format": "png",
"contentType": "image/png",
"sizeBytes": 15234
}
2. Genera a partir de una plantilla
curl -X POST "https://qr-branding.p.rapidapi.com/api/qr/templates/cyber-neon" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: qr-branding.p.rapidapi.com" \
-d '{
"content": "https://mywebsite.com",
"outputWidth": 600
}'
3. Código QR diseñado con IA
curl -X POST "https://qr-branding.p.rapidapi.com/api/qr/ai/generate" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-H "X-RapidAPI-Host: qr-branding.p.rapidapi.com" \
-d '{
"prompt": "A luxurious gold and black QR code with rounded modules and a subtle glow effect, suitable for a premium brand",
"content": "https://premium-brand.com",
"llmProvider": "openai",
"llmApiKey": "sk-your-openai-key",
"creativity": 0.7,
"strictScannability": true,
"stylePreset": "luxury"
}'
Respuesta:
{
"success": true,
"qrBase64": "iVBORw0KGgoAAAANSUhEUg...",
"format": "png",
"contentType": "image/png",
"sizeBytes": 28456,
"generatedConfig": { },
"aiExplanation": "I designed a premium QR code with...",
"llmProviderUsed": "openai",
"llmModelUsed": "gpt-6-luna"
}
Ejemplos de código
Python
import requests
url = "https://qr-branding.p.rapidapi.com/api/qr/generate"
headers = {
"Content-Type": "application/json",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "qr-branding.p.rapidapi.com"
}
payload = {
"content": "https://example.com",
"primaryColor": "#FF6B35",
"moduleShape": "star",
"eccLevel": "H",
"outputWidth": 800,
"fileFormat": "png"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
if data["success"]:
import base64
img_bytes = base64.b64decode(data["qrBase64"])
with open("my_qr.png", "wb") as f:
f.write(img_bytes)
print(f"QR saved! Size: {data['sizeBytes']} bytes")
JavaScript (Node.js)
const response = await fetch(
"https://qr-branding.p.rapidapi.com/api/qr/generate",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "qr-branding.p.rapidapi.com",
},
body: JSON.stringify({
content: "https://example.com",
primaryColor: "#0066FF",
moduleShape: "hexagon",
eccLevel: "H",
outputWidth: 600,
fileFormat: "png",
}),
}
);
const data = await response.json();
if (data.success) {
const buffer = Buffer.from(data.qrBase64, "base64");
require("fs").writeFileSync("qr_code.png", buffer);
console.log(`QR generated: ${data.sizeBytes} bytes`);
}
Resumen de funciones
| Categoría | Detalles |
|---|---|
| Formas de módulo | 37: square, circle, diamond, star, heart, hexagon, leaf, cross, dot, mosaic, clipped, edgecut, pointed, pill, rounded, japanese, octagon, shield, arrow, drop + SVG personalizado |
| Plantillas | 118 prediseñadas en 28 categorías |
| Proveedores de IA | 9 proveedores de LLM y cualquier endpoint compatible con OpenAI (con tu propia clave), o IA gestionada sin clave |
| Formatos de salida | PNG, JPEG, SVG, PDF, WebP |
| Resolución máxima | 4096 × 4096 píxeles |
| Degradados | Lineal, radial y cónico, con paradas de color ilimitadas |
| Efectos visuales | Sombra, resplandor/neón, relieve/3D, ruido, desenfoque, difuminado de bordes, filtros de color |
| Logo | URL o Base64, formas circular/cuadrada/redondeada, sombra, tamaño personalizable |
| Textos superpuestos | Texto circular, banda central, bandas de llamada a la acción (CTA) |
| Marcos | Rectángulo, bocadillo, insignia, escudo, círculo |
| Corrección de errores | L (7%), M (15%), Q (25%), H (30%), según ISO 18004 |
| Utilidades de contenido | Generadores de cadenas WiFi, vCard y geolocalización |
| Imágenes de fondo | URL/Base64, modos de fusión, modos de ajuste, desenfoque |
| Módulos conectados | Uniones fluidas, en ángulo o redondeadas para diseños artísticos |
Categorías de plantillas (28)
Technology, Corporate, Social, Luxury, Nature, Artistic, Marketing, Events, Music, Fun, Background, Culture, Industry, Restaurant, Retail, Education, Travel, Automotive, Healthcare, Social Media, Art & Design, Business, Food & Drink, Finance, Health, Legal, Non-Profit, Real Estate.
Usa GET /api/qr/templates?category=luxury para filtrar por categoría.
Proveedores y modelos de IA
| Proveedor | Modelos |
|---|---|
| OpenAI | gpt-6-astra, gpt-6.1-sol, gpt-6-luna, gpt-6-sol, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-4.1-mini |
| Anthropic | claude-fable-5-1, claude-opus-5-5, claude-sonnet-5-5, claude-haiku-4-5 |
| gemini-3.1-pro-preview, gemini-3.8-flash, gemini-3.5-flash-lite, gemini-3.5-flash | |
| Mistral | mistral-large-latest, mistral-medium-latest, mistral-small-latest |
| Cohere | command-a-plus-05-2026, command-a-03-2025, command-a-reasoning-08-2025, command-r7b-12-2024 |
| Groq | openai/gpt-oss-120b, openai/gpt-oss-20b, llama-3.3-70b-versatile |
| xAI | grok-4.7, grok-4.3, grok-4.20-0309-non-reasoning |
| DeepSeek | deepseek-v4-pro, deepseek-flash |
| Qwen | qwen3.8-max, qwen3.7-plus, qwen3.8-flash |
| Local | Cualquier endpoint compatible con OpenAI (Ollama, LM Studio, vLLM); indica llmProvider: "local" y pasa localEndpoint |
Funciona cualquier ID de modelo que ofrezca tu proveedor; esta lista muestra los recomendados.
Nota: en
/api/qr/ai/generateaportas tu propia clave de API del proveedor de LLM que elijas y el proveedor te factura directamente; QR Branding no añade ningún recargo. En/api/qr/ai/generate-managedno hace falta clave de LLM: ejecutamos los modelos nosotros, y esas llamadas cuentan para la cuota independiente de IA gestionada de tu plan.
Endpoints
POST /api/qr/generate: generar un QR personalizado
Genera un código QR totalmente personalizable con más de 100 parámetros, entre ellos formas de módulo, degradados, efectos, logos, textos superpuestos, marcos y mucho más. Admite cuerpo JSON o multipart/form-data para subir el logo como archivo.
Cuerpo de la petición:
{
"content": "https://example.com",
"eccLevel": "H",
"pixelsPerModule": 20,
"outputWidth": 512,
"fileFormat": "png",
"quality": 90,
"responseType": "base64",
"backgroundColor": "#FFFFFF",
"transparentBackground": false,
"primaryColor": "#000000",
"secondaryColor": null,
"foregroundStyle": "solid",
"gradientType": "linear",
"gradientDirection": "vertical",
"gradientColors": ["#FF0000", "#0000FF"],
"gradientStops": [0.0, 1.0],
"gradientAngle": 0,
"qrShape": "square",
"moduleShape": "square",
"moduleScale": 0.85,
"moduleRotation": 0,
"moduleStyle": "solid",
"modulePattern": "standard",
"connectedStyle": "none",
"finderOuterShape": "square",
"finderInnerShape": "square",
"finderOuterColor": "#000000",
"finderInnerColor": "#000000",
"finderStyle": "standard",
"logoUrl": "https://example.com/logo.png",
"logoShape": "circle",
"logoSizePercent": 18,
"logoBorderWidth": 2,
"logoBorderColor": "#FFFFFF",
"logoShadow": true,
"logoBackground": "solid",
"ctaText": "SCAN ME"
}
Respuesta 200:
{
"success": true,
"qrBase64": "iVBORw0KGgoAAAANSUhEUg...",
"format": "png",
"contentType": "image/png",
"sizeBytes": 15234
}
Respuesta 400:
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed with 1 error.",
"details": [
{
"field": "moduleShape",
"code": "INVALID_MODULE_SHAPE",
"message": "Invalid module shape 'triangle'. Valid shapes: square, circle, diamond, star, heart, hexagon, leaf, cross, dot, mosaic, clipped, edgecut, pointed, pill, rounded, japanese, octagon, shield, arrow, drop."
}
]
}
}
POST /api/qr/ai/generate: generar un QR con IA
Describe en lenguaje natural tu código QR ideal y deja que la IA lo diseñe por ti. Admite 9 proveedores de LLM y cualquier endpoint compatible con OpenAI (local); se acepta cualquier ID de modelo que ofrezca tu proveedor. Aquí aportas tu propia clave de API del LLM; si prefieres no usar una, llama a POST /api/qr/ai/generate-managed (más abajo).
Cuerpo de la petición:
{
"prompt": "A modern tech-style QR code with hexagonal modules, a blue-to-purple gradient, subtle glow effect, and rounded finder patterns",
"content": "https://myapp.com",
"llmProvider": "openai",
"llmApiKey": "sk-your-api-key-here",
"llmModel": "gpt-6-luna",
"creativity": 0.7,
"strictScannability": true,
"stylePreset": "tech",
"fileFormat": "png",
"outputWidth": 800,
"logoUrl": "https://example.com/logo.png",
"ctaText": "Download App"
}
Respuesta 200:
{
"success": true,
"qrBase64": "iVBORw0KGgoAAAANSUhEUg...",
"format": "png",
"contentType": "image/png",
"sizeBytes": 28456,
"generatedConfig": {
"content": "https://myapp.com",
"moduleShape": "hexagon",
"primaryColor": "#4A90D9",
"gradientColors": ["#4A90D9", "#7B2FF7"],
"gradientType": "linear",
"gradientDirection": "vertical",
"finderOuterShape": "roundedsquare",
"finderInnerShape": "circle",
"eccLevel": "H"
},
"aiExplanation": "I designed a tech-inspired QR code with hexagonal modules...",
"llmProviderUsed": "openai",
"llmModelUsed": "gpt-6-luna"
}
POST /api/qr/ai/generate-managed: IA gestionada (sin clave de LLM)
Mismo formato de petición que /api/qr/ai/generate, pero llmProvider, llmApiKey y llmModel se ignoran: no hace falta clave de LLM. El motor usa sus propios modelos con una cadena de respaldo (Groq → Gemini → OpenAI). Las llamadas cuentan para la cuota de IA gestionada de tu plan.
{
"prompt": "A luxurious gold and black QR with rounded modules and a subtle glow effect",
"content": "https://premium-brand.com",
"creativity": 0.7,
"strictScannability": true,
"stylePreset": "luxury",
"fileFormat": "png",
"outputWidth": 800
}
La respuesta tiene el mismo formato que /api/qr/ai/generate, con el campo adicional "managed": true.
GET /api/qr/ai/providers: obtener los proveedores de IA
Lista todos los proveedores de LLM admitidos y sus modelos disponibles para la generación de QR con IA.
Respuesta 200:
{
"success": true,
"count": 10,
"providers": [
{
"id": "openai",
"name": "OpenAI",
"defaultModel": "gpt-6-luna",
"availableModels": ["gpt-6-astra", "gpt-6.1-sol", "gpt-6-luna", "gpt-6-sol", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-4.1-mini"]
},
{
"id": "anthropic",
"name": "Anthropic",
"defaultModel": "claude-sonnet-5-5",
"availableModels": ["claude-fable-5-1", "claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-4-5"]
}
]
}
GET /api/qr/templates: listar plantillas
Explora 118 plantillas de códigos QR de diseño profesional en 28 categorías.
Parámetros de consulta:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
category | string | No | Filtra por categoría (p. ej., luxury, corporate, social) |
Respuesta 200:
{
"success": true,
"count": 118,
"categories": [
"Technology", "Corporate", "Social", "Luxury", "Nature",
"Artistic", "Marketing", "Events", "Music", "Fun"
],
"templates": [
{
"id": "cyber-neon",
"name": "Cyber Neon",
"category": "Technology",
"description": "Futuristic glowing neon style with diamond modules and vibrant cyan-pink gradient"
},
{
"id": "professional-blue",
"name": "Professional Blue",
"category": "Corporate",
"description": "Clean corporate style with blue gradient, ideal for business"
}
]
}
POST /api/qr/templates/{templateId}: generar a partir de una plantilla
Genera un código QR con una plantilla prediseñada. Se conserva el diseño visual de la plantilla; si quieres, puedes cambiar los ajustes de salida.
Parámetros de ruta:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
templateId | string | Sí | ID de la plantilla obtenido del endpoint de listado de plantillas (p. ej., cyber-neon) |
Cuerpo de la petición:
{
"content": "https://mywebsite.com",
"fileFormat": "png",
"responseType": "base64",
"outputWidth": 600,
"logoUrl": "https://example.com/logo.png",
"ctaText": "Visit Us"
}
Respuesta 200:
{
"success": true,
"qrBase64": "iVBORw0KGgoAAAANSUhEUg...",
"format": "png",
"contentType": "image/png",
"sizeBytes": 22100
}
POST /api/qr/content/wifi: generar una cadena WiFi
Genera una cadena de conexión WiFi para codificarla en un QR. A quien escanee el código QR se le ofrecerá conectarse automáticamente a la red.
Cuerpo de la petición:
{
"ssid": "MyNetwork",
"password": "MyP@ssw0rd!",
"encryption": "WPA",
"hidden": false
}
Respuesta 200:
{
"success": true,
"text": "WIFI:T:WPA;S:MyNetwork;P:MyP@ssw0rd!;H:false;;"
}
POST /api/qr/content/vcard: generar una cadena vCard
Genera una cadena de contacto vCard para codificarla en un QR. Al escanear el código QR, se ofrecerá guardar el contacto en el teléfono.
Cuerpo de la petición:
{
"firstName": "John",
"lastName": "Doe",
"phone": "+1-555-123-4567",
"email": "john.doe@example.com",
"org": "Acme Corp",
"url": "https://johndoe.com"
}
Respuesta 200:
{
"success": true,
"text": "BEGIN:VCARD\nVERSION:3.0\nN:Doe;John\nFN:John Doe\nTEL:+1-555-123-4567\nEMAIL:john.doe@example.com\nORG:Acme Corp\nURL:https://johndoe.com\nEND:VCARD"
}
POST /api/qr/content/geo: generar una cadena de geolocalización
Genera una URI de geolocalización para codificarla en un QR. Al escanear el código QR, la ubicación se abrirá en la app de mapas predeterminada.
Cuerpo de la petición:
{
"lat": 40.7128,
"lng": -74.0060
}
Respuesta 200:
{
"success": true,
"text": "geo:40.7128,-74.006"
}
Gestión de errores
Todos los errores siguen un formato uniforme:
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed with 2 errors.",
"details": [
{
"field": "primaryColor",
"code": "INVALID_COLOR_FORMAT",
"message": "Invalid color format. Use hex (#RRGGBB or #RRGGBBAA).",
"value": "not-a-color"
}
]
}
}
Códigos de error
Validación (400)
VALIDATION_ERROR · INVALID_JSON · MISSING_REQUIRED_FIELD · INVALID_FIELD_VALUE · INVALID_COLOR_FORMAT · INVALID_FILE_FORMAT · CONTENT_TOO_LONG · FILE_TOO_LARGE · INVALID_URL · INVALID_ECC_LEVEL · INVALID_MODULE_SHAPE · INVALID_GRADIENT_TYPE · INVALID_RESPONSE_TYPE · VALUE_OUT_OF_RANGE · MULTIPART_CONFIG_MISSING
Autenticación (401)
UNAUTHORIZED · INVALID_API_KEY · MISSING_API_KEY
No encontrado (404)
RESOURCE_NOT_FOUND · TEMPLATE_NOT_FOUND
Errores de IA/LLM (400/500)
INVALID_LLM_PROVIDER · INVALID_LLM_MODEL · LLM_API_KEY_INVALID · AI_GENERATION_FAILED · AI_CONFIG_INVALID · AI_REQUEST_TIMEOUT
Presupuesto de salida (422)
OUTPUT_TOO_COMPLEX — el diseño produciría un SVG o PDF de más de 20 MB o un lienzo de más de 5120 px por lado. Expórtalo en PNG, acorta el contenido o usa formas de módulo más sencillas
Capacidad (503)
SERVER_BUSY · AI_QUOTA_EXCEEDED (la IA gestionada se ha quedado sin cuota en todos los proveedores; vuelve a intentarlo más tarde)
Errores del servidor (500)
INTERNAL_ERROR · QR_GENERATION_FAILED · LOGO_LOAD_FAILED · BACKGROUND_LOAD_FAILED