API REST

Documentación

Integra el generador de códigos QR directamente en tus aplicaciones. La API es completamente gratuita, rápida y no requiere registro ni autenticación.

Base URL
https://qr.losperris.dev

Endpoint

Envía una solicitud POST con un cuerpo en formato JSON al siguiente endpoint. La respuesta será el archivo de imagen binario directamente.

POST/api/qr/generate
Sin autenticación: No necesitas incluir ningún token, clave de API ni cabecera de autorización.
Ejemplo con fetch
const response = await fetch('/api/qr/generate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'\n  },
  body: JSON.stringify({
    text: 'https://losperris.dev',
    width: 1000,
    type: 'png'\n  })
});

const blob = await response.blob();

Parámetros

Todos los parámetros se envían en el cuerpo de la solicitud como JSON. Solo text es obligatorio.

AtributoTipoDescripción
text*stringEl contenido del código QR. URL, texto, etc. (Máx: 2000 caracteres)
widthnumberTamaño en píxeles. Defecto: 300. (Mín: 100, Máx: 4000)
marginnumberGrosor del margen. Defecto: 4. (Mín: 0, Máx: 10)
typestringFormato: png, jpg, webp
Payload mínimo
{ 
  "text": "https://losperris.dev"\n}
Payload completo
{
  "text": "https://losperris.dev",
  "width": 1000,
  "margin": 4,
  "type": "png"\n}

Colores y Estilos

Personaliza la apariencia visual del código QR cambiando los colores y la forma de los módulos.

AtributoTipoDescripción
colorDarkstring (hex)Color de los módulos. Defecto: #000000
colorLightstring (hex)Color de fondo. Defecto: #ffffff
dotStylestringPuntos: square, rounded, dots
eyeStylestringOjos: square, rounded, dots
eyeColorstring (hex)Color exclusivo para los ojos.
Estilo de LosPerris
{
  "text": "https://losperris.dev",
  "colorDark": "#22c55e",
  "colorLight": "#080a08",
  "dotStyle": "rounded",
  "eyeStyle": "rounded",
  "eyeColor": "#22c55e"\n}

Gradientes

Aplica un gradiente dinámico sobre el código QR. Esto anula por completo el parámetro colorDark.

AtributoTipoDescripción
gradientTypestringEstilo: linear o none
gradientColor1string (hex)Color inicial (desde arriba)
gradientColor2string (hex)Color final (hacia abajo)
QR con gradiente
{
  "text": "https://losperris.dev",
  "gradientType": "linear",
  "gradientColor1": "#22c55e",
  "gradientColor2": "#0ea5e9"\n}


Estructura de Respuesta

Si la solicitud es exitosa, la API NO responde con JSON, sino que devuelve el archivo de imagen directamente en el cuerpo de la respuesta.

HTTP 200 OKEl cuerpo contiene los datos binarios. El encabezado de Content-Type coincidirá con el parámetro "type" solicitado.
Respuesta Exitosa
HTTP/1.1 200 OK
Content-Type: image/png
Content-Disposition: attachment; filename="qr.png"

<Binary Image Data Stream...>

Rate Limit

Para garantizar la disponibilidad del servicio gratuito, la API está protegida por un límite de peticiones estricto.

Límite: 20 peticiones / minutoCalculado individualmente por cada dirección IP mediante ventana deslizante.
Respuesta de error 429
{
  "error": "Too Many Requests",
  "message": "Has superado el límite de generación de códigos QR. Por favor, espera un minuto."
}

Gestión de Errores

En caso de error de validación o fallo interno, la API responde con un objeto JSON descriptivo.

Código HTTPSignificado
400Parámetros inválidos o faltantes.
429Demasiadas peticiones (Rate Limit).
500Error interno del servidor.
Respuesta de error 400
{
  "error": "Validation Error",
  "details": [
    {
      "message": "text is required",
      "path": ["text"]
    }
  ]\n}