qr-cow
Genera códigos QR estilizados desde cualquier agente de IA: URL, Wi-Fi, vCard y 13 tipos de contenido, con colores y logotipos, además de códigos dinámicos y análisis de escaneo desde la API de qr-cow.
Documentación
Inicio rápido
1
Obtener un token
Inicia sesión, abre Panel → API y MCP y haz clic en Crear token. Obtendrás un valor qrc_live_…, cópialo una vez; solo almacenamos el hash.
2
Haz una llamada
Envía el token como encabezado Bearer contra api.qr-cow.com. Cada endpoint al que puede acceder un JWT de sesión también acepta un token.
3
O conecta MCP
Coloca el fragmento JSON a continuación en la configuración MCP de tu cliente de IA y el mismo token funcionará allí, sin código adicional.
Pruébalo
Elige un endpoint y un lenguaje. El token en los fragmentos es un marcador de posición, pega el tuyo desde el panel.
Renderiza un QR con estilo
Datos más un preset o estilo de entrada, imagen con estilo de salida. No se requiere token.
# Styled image back, no account needed. Save straight to a file:
curl "https://qr-cow.com/api/v1/qr/render" \
-H "Content-Type: application/json" \
-o menu-qr.png \
-d '{
"data": "https://my-cafe.com/menu",
"preset": "cafe",
"size": 600,
"format": "png"
}'
# Full control instead of a preset:
# "style": { "body": "rounded", "eye": "dots",
# "gradient": { "from": "#06b6d4", "to": "#7c3aed", "direction": "vertical" } }
# Or drop it straight into an <img src>:
# https://qr-cow.com/api/v1/qr/render?data=https://my-cafe.com&preset=cafe&size=600
API de renderizado con estilo
Genera una imagen QR con estilo y terminada directamente desde tu código. Envía data más un estilo (un preset, una configuración de estudio o campos explícitos) y obtén un PNG, JPG o SVG de vuelta. Sin cuenta y sin registro almacenado, por lo que está diseñado para generar códigos en volumen. POST /api/v1/qr/render para control total, o GET en la misma ruta para insertar un código directamente en una etiqueta de imagen.
| Parámetro | Acepta | Qué hace |
|---|---|---|
| data | string | El contenido a codificar: una URL, texto plano o una cadena Wi-Fi / vCard preformateada. |
| preset | nombre ↓ | Un aspecto listo para usar, aplicado primero (ver la lista a continuación). |
| body | square · dots · rounded · extra-rounded · classy · classy-rounded · vertical-bars · horizontal-bars | Forma del módulo / punto. |
| eye | square · rounded · dots | Forma del patrón de búsqueda (esquinas). |
| fg · bg | #hex | Colores de primer plano y fondo, hex de 3, 6 u 8 dígitos. |
| gradient | { from, to, direction } | Degradado de dos colores en los módulos; la dirección es horizontal, vertical o radial. |
| logo | URL de datos base64 | Un logotipo central, pasado como URL de datos base64. Usa ecc Q o H con un logotipo. |
| ecc | L · M · Q · H | Corrección de errores. Mayor tolera más daño y un logotipo, a costa de densidad. |
| size | 64–2000 | Ancho de salida en píxeles (cuadrado). |
| format | png · jpg · svg | png y jpg llevan todos los estilos; svg es un vector limpio con forma, color y degradado (sin logotipo). |
Plantillas que puedes elegir (pasa el nombre como preset): restaurant · cafe · tech · event · retail · wedding · healthcare · real-estate · business-card · crypto · sunset · ocean · forest · aurora · berry · mono
# Pick one of our templates — pass its name as "preset"
curl -X POST https://qr-cow.com/api/v1/qr/render \
-H "Content-Type: application/json" \
-d '{"data":"https://acme.com","preset":"restaurant","size":600,"format":"png"}' \
--output qr.png
# Or your own template — set a style once and reuse it for every code
curl -X POST https://qr-cow.com/api/v1/qr/render \
-H "Content-Type: application/json" \
-d '{"data":"https://acme.com","style":{"body":"rounded","eye":"dots","fg":"#1F2937","gradient":{"from":"#F97316","to":"#F5A300"}}}' \
--output qr.png
Hecho para volumen
Define tu estilo de marca una vez como un objeto style (o elige un preset): ese es tu estilo personal, configurado con antelación y reutilizado para cada código. Recorre el endpoint para generar tantos como necesites; cada llamada es independiente y no almacena nada.
Mantenlo escaneable
Los módulos oscuros sobre fondo claro se escanean de forma más fiable. Los estilos de fondo oscuro o bajo contraste se ven geniales pero se leen con menos fiabilidad en escáneres más débiles, y con un logotipo usa ecc Q o H para que el código siga resolviéndose.
Referencia de endpoints
Todo en /api/v1, misma forma en todos los lenguajes.
| Método | Ruta | Qué hace |
|---|---|---|
| POST | /qr/render | Renderiza una imagen QR con estilo desde un estilo o preset (sin autenticación, nada almacenado). |
| GET | /qr/render | El mismo renderizado como GET simple, incrustable directamente en una etiqueta de imagen. |
| GET | /auth/me | Usuario autenticado + plan |
| POST | /qrcodes | Crea un QR estático o dinámico |
| GET | /qrcodes | Lista tus códigos QR (paginado) |
| GET | /qrcodes/{id} | Obtén los detalles completos de un QR |
| PATCH | /qrcodes/{id} | Actualiza nombre / destino dinámico |
| DELETE | /qrcodes/{id} | Eliminación suave de un QR |
| GET | /analytics/qrcodes/{id} | Escaneos, geo, dispositivo, hora del día |
| GET | /dev/tokens | Lista tokens de API |
| POST | /dev/tokens | Crea un token (devuelve texto plano UNA VEZ) |
| DELETE | /dev/tokens/{id} | Revoca un token |
MCP, Protocolo de Contexto de Modelo
MCP es un protocolo abierto que Anthropic publicó para conectar clientes de IA a herramientas externas. Una vez conectado, tu asistente puede decir cosas como "haz un código QR para mi nuevo menú" o "muéstrame qué países escanearon mi QR de la cafetería la semana pasada" y llamar a qr-cow directamente.
Claude Desktop / Claude Code
{
"mcpServers": {
"qr-cow": {
"command": "uvx",
"args": ["qr-cow-mcp"],
"env": { "QRCOW_API_TOKEN": "qrc_live_..." }
}
}
}
Cursor / Zed / otros
Misma forma, la configuración MCP del editor usa command, args y un bloque env. El servidor MCP es un proceso stdio, cualquier cosa que hable MCP puede usarlo.
Guía completa de configuración MCP ↗ qr-cow-mcp en PyPI ↗
Herramientas expuestas por el servidor
| Herramienta | Qué hace |
|---|---|
| create_qrcode | Crea un QR estático o dinámico (URL, Wi-Fi, vCard, …). |
| render_styled_qrcode | Renderiza una imagen QR completamente con estilo (formas, degradado, logotipo) a partir de datos más un preset o estilo. Devuelve la imagen; no se guarda nada. |
| list_qrcodes | Lista códigos QR recientes en la cuenta del usuario. |
| get_qrcode | Obtiene el diseño actual + destino de un QR. |
| update_qrcode_destination | Cambia el destino de un QR dinámico, el código impreso sigue funcionando. |
| delete_qrcode | Eliminación suave de un código. |
| get_qrcode_analytics | Escaneos + desglose por país, dispositivo, hora. |
| me | Perfil + plan del usuario con sesión iniciada. |
Autenticación
Envía Authorization: Bearer qrc_live_… en cada solicitud. Los tokens son universales, funcionan contra cada endpoint al que accede un JWT de sesión. Los tokens revocados se rechazan inmediatamente.
Errores
Todas las respuestas siguen {success, data, error}. Los códigos de estado HTTP coinciden con RFC 7231; el campo error lleva un código corto legible por máquina (p. ej. token_limit_reached).
Límites de velocidad y seguridad
- Lecturas Sin límite Las lecturas de listado, obtención y analíticas no tienen límite de velocidad.
- Crear / renderizar 20 / min por IP POST /qrcodes y /qr/render. Editar y eliminar no están limitados.
- Límite de tokens 20 / cuenta Tokens de API activos. Revoca uno para liberar un espacio.
Los límites se basan en IP y no se envían encabezados de límite de velocidad, así que en un 429 (error "rate_limit_exceeded") retrocede y reintenta. Solo almacenamos el SHA-256 de cada token; revoca inmediatamente si uno se filtra y aprovisiona uno nuevo en segundos.
¿Listo para construir?
Aprovisiona tu primer token y lanza una integración de "haz un código QR desde esta URL" en menos de 5 minutos.
¿No eres desarrollador? Prueba los generadores de códigos QR o consulta precios.