API REST di lyz.bz
Con l’API crei e gestisci i link dai tuoi programmi: gestionali, CRM, e-commerce, automazioni (Zapier, Make, n8n). Disponibile dal piano Pro.
Crea una chiave APIAutenticazione
Crea una chiave nella sezione API della dashboard e mandala nell’intestazione Authorization di ogni richiesta. Le chiavi non scadono: revocale dalla dashboard se non servono più.
Authorization: Bearer lyz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoint
| POST | /api/v1/links | Crea un link. Corpo: url (obbligatorio), slug, domain, title, password, expires_at (ISO 8601). |
| GET | /api/v1/links?limit=100 | Elenco dei link dal più recente, con i clic totali (massimo 500). |
| GET | /api/v1/links/{id} | Un link con i clic totali. L’id è l’alias per lyz.bz, dominio:alias per i domini personalizzati. |
| PATCH | /api/v1/links/{id} | Modifica url, title, password, remove_password, expires_at (null = nessuna scadenza). |
| DELETE | /api/v1/links/{id} | Elimina link, QR code e statistiche. Risponde 204. |
| GET | /api/v1/links/{id}/stats?days=30 | Clic, visitatori unici e scansioni per giorno; orari, paesi, dispositivi, sistemi, browser, provenienza. days: 7, 30, 90, 365. |
| GET | /api/v1/domains | Domini personalizzati dell’account e loro stato. |
POST /api/v1/links
curl -X POST https://lyz.bz/api/v1/links \
-H "Authorization: Bearer $LYZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/summer?utm_source=newsletter", "slug": "summer", "title": "Summer sale"}'HTTP/1.1 201 Created
{
"data": {
"id": "summer",
"short_url": "https://lyz.bz/summer",
"domain": null,
"slug": "summer",
"url": "https://example.com/summer?utm_source=newsletter",
"title": "Summer sale",
"password_protected": false,
"expires_at": null,
"suspended": false,
"created_at": "2026-11-12T10:00:00.000Z",
"updated_at": "2026-11-12T10:00:00.000Z",
"clicks": 0
}
}GET /api/v1/links/summer/stats?days=7
{
"data": {
"days": 7,
"totals": { "clicks": 412, "qr": 96, "visitors": 351 },
"daily": [{ "day": "2026-11-06", "clicks": 51, "qr": 12, "visitors": 44 }, …],
"hours": [3, 1, 0, …],
"countries": { "IT": 380, "CH": 21, "DE": 11 },
"devices": { "mobile": 301, "desktop": 104, "tablet": 7 },
"os": { "iOS": 170, "Android": 131, "Windows": 64, "macOS": 47 },
"browsers": { "Safari": 160, "Chrome": 190, "Instagram": 41, "Firefox": 21 },
"referrers": { "instagram.com": 140, "qr": 96, "direct": 120, "newsletter.example": 56 }
}
}Limiti
Pro: 1000 richieste al giorno; Business: 20.000. Oltre il limite la risposta è 429. I nuovi link contano nella quota mensile del piano.
Errori
Gli errori rispondono con un codice HTTP e un JSON { "error": "codice" }.
| 401 | missing_api_key, invalid_api_key |
| 403 | plan_required, plan_protect, plan_edit |
| 404 | not_found |
| 409 | slug_taken, slug_reserved |
| 422 | invalid_request, invalid_url, blocked_url, slug_invalid, domain_invalid, expiry_invalid |
| 429 | rate_limited, monthly_quota_exceeded |
| 503 | edge, stats_unavailable |