Panoramica API
Panoramica API
L’API REST di qr3.app è disponibile all’indirizzo https://qr3.app/v1/.
Versionamento
L’API è versionata tramite il percorso dell’URL (/v1/). Le modifiche di tipo breaking portano sempre a una nuova versione principale.
Formato della richiesta
- Content-Type:
application/json - Autenticazione:
Authorization: Bearer qr3_sk_xxx - Idempotenza: Le richieste POST possono essere rese idempotenti con
Idempotency-Key: <uuid>
Formato della risposta
Tutte le risposte andate a buon fine restituiscono JSON:
{ "id": "qr_abc123", "type": "url", "url": "https://example.com", "short_url": "https://qr3.app/r7f3Kx", "created_at": "2026-03-15T10:00:00.000Z"}Le risposte di tipo elenco hanno sempre una struttura meta.pagination:
{ "data": [...], "meta": { "request_id": "req_xxx", "pagination": { "has_more": true, "next_cursor": "qr_abc", "total_count": 142 } }}Formato degli errori (RFC 7807)
Tutti gli errori seguono lo standard RFC 7807 Problem Details:
{ "type": "https://docs.qr3.app/errors/not-found", "title": "Not Found", "status": 404, "detail": "QR code qr_xxx not found", "instance": "/v1/codes/qr_xxx"}| Stato | Tipo di errore | Descrizione |
|---|---|---|
| 400 | bad-request | JSON non valido o campi obbligatori mancanti |
| 401 | authentication | API key mancante o non valida |
| 403 | forbidden | Nessuna autorizzazione per questa risorsa |
| 404 | not-found | Risorsa non trovata |
| 409 | conflict | Conflitto di Idempotency-Key |
| 422 | validation-error | Dati di input errati (con array errors) |
| 429 | rate-limited | Limite di richieste superato |
| 500 | internal | Errore interno del server |
Paginazione
L’API utilizza la paginazione basata su cursore:
# Erste SeiteGET /v1/codes?limit=20
# Nächste SeiteGET /v1/codes?limit=20&cursor=qr_lastidRate limit
Ogni risposta contiene:
X-RateLimit-Limit: 30X-RateLimit-Remaining: 28X-RateLimit-Reset: 1742040120Riferimento API interattivo
Testa tutti gli endpoint direttamente nel browser:
→ Apri il riferimento API (Scalar, interattivo, con Try-it-out)
DPP-Contract (Fase 4a)
Per il flusso di lavoro delle batterie, qr3.app documenta inoltre queste rotte:
POST /v1/dppGET /v1/dppGET /v1/dpp/:idPOST /v1/dpp/validateGET /v1/dpp/:id/qr.svgGET /v1/dpp/:id/qr.pngGET /v1/dpp/:id/qr.pdfGET /v1/dpp/:id/qr.epsGET /01/...GET /dpp/:gtin/:serial?lot=...
Le pagine della dashboard, gli SDK e questa documentazione utilizzano lo stesso contratto dati.