QRinio API v1
Documentación de API
Gestiona recursos QR dinámicos y enlaces cortos desde tu servidor. Empieza con autenticación, reintentos seguros y revisiones.
1. Autenticación
Verifica tu correo y crea una clave API en ajustes. Envíala como token Bearer desde tu servidor. Permite recursos, archivos y diseños, además de leer cuotas y espacios. Seguridad de cuenta, dominios y administración requieren sesión de navegador. No expongas claves en código cliente.
2. Crear un recurso
El ejemplo crea redirección QR y enlace corto en el dominio predeterminado. Comparten destino y consumen sus cuotas respectivas. La respuesta incluye ID, slug y revisión. Representa /r/ como imagen QR y comparte /s/ como enlace corto. La API devuelve datos, no imágenes.
curl --request POST 'https://qrinio.com/api/v1/resources' \
--header "Authorization: Bearer $QRINIO_API_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: product-42-v1' \
--data '{
"title": "Product 42",
"targetUrl": "https://example.com/products/42",
"qrEnabled": true,
"shortEnabled": true
}'{
"id": "00000000-0000-4000-8000-000000000042",
"slug": "sample-code",
"revision": 1
}3. Actualizar sin sobrescribir a otros
Lee el recurso y envía la revisión actual con PATCH. Ante revision_conflict (409), consulta de nuevo y concilia cambios antes de reintentar. DELETE con ?revision= mueve a la papelera; puedes restaurar durante 30 días. El borrado definitivo es separado. Archivo y papelera siguen contando.
curl --request PATCH 'https://qrinio.com/api/v1/resources/00000000-0000-4000-8000-000000000042' \
--header "Authorization: Bearer $QRINIO_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"revision": 1,
"targetUrl": "https://example.com/products/42-v2"
}'4. Reintentos y lotes seguros
Reutiliza el mismo Idempotency-Key y cuerpo idéntico al repetir una creación. Se conserva 24 horas; cambiar el cuerpo con la misma clave devuelve 409. Los lotes exigen clave y 1–100 elementos con claves de fila distintas. Devuelven estado por elemento; HTTP 200 no garantiza todas las filas. Guarda los resultados.
curl --request POST 'https://qrinio.com/api/v1/resources/batch' \
--header "Authorization: Bearer $QRINIO_API_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: catalog-batch-42-v1' \
--data '{
"items": [
{
"key": "product-42",
"data": {
"title": "Product 42",
"targetUrl": "https://example.com/products/42",
"qrEnabled": true,
"shortEnabled": true
}
}
]
}'Límites y errores
Consulta /quotas para límites actuales y excepciones. Claves y sesiones comparten límites de solicitudes; espacios propios usan la cuota del titular. Con 429, respeta Retry-After y espera. Usa code para gestionar errores; message es diagnóstico. No repitas automáticamente errores de validación, permisos o cuota.
- Lecturas por minuto
- 120
- Escrituras por minuto
- 30
- Lotes por minuto
- 2
Referencia de endpoints
Lista recursos con page (desde 1), pageSize (1–100), q, status y workspaceId. Sin workspaceId solo aparecen personales. Archivos usan limit (1–200), offset, search y kind=pdf o image. Perfiles, enlaces y PDF alojados requieren published=true para ser públicos.
| GET /resources | Todo en un solo lugar. |
|---|---|
| POST /resources | Crear código QR |
| GET · PATCH · DELETE /resources/{id} | Editar |
| POST /resources/batch | Importar CSV |
| POST /resources/bulk | Asignar carpeta y etiquetas |
| GET /resources/{id}/analytics?days=30 | Estadísticas |
| GET /resources/{id}/history | Historial de versiones |
| GET · POST /assets | Archivos |
| GET /quotas | Empieza gratis. Conoce tus límites. |
| GET /workspaces | Espacios |