QRinio API v1
API-Dokumentation
Verwalte dynamische QR-Inhalte und Kurzlinks von deinem Server aus. Einstieg mit Authentifizierung, sicheren Wiederholungen und Revisionen.
1. Authentifizieren
Bestätige deine E-Mail und erstelle in den Kontoeinstellungen einen API-Schlüssel. Sende ihn als Bearer-Token von deinem Server. Schlüssel unterstützen Inhalte, Dateien und Designs sowie das Lesen von Kontingenten und Bereichen. Kontosicherheit, Domainverwaltung und Administration benötigen eine Browsersitzung. Schlüssel gehören nicht in Client-Code.
2. Inhalt erstellen
Das Beispiel erstellt eine Website-QR-Weiterleitung und einen Kurzlink auf der Standarddomain. Beide Kanäle teilen ein Ziel und belegen ihr jeweiliges Kontingent. Die Antwort enthält ID, Kurzcode und Revision. Rendere die /r/-Adresse als QR-Bild und teile /s/ als Kurzlink. Die API liefert Daten, keine Bilddatei.
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. Änderungen im Team erhalten
Lies zuerst den Inhalt und sende seine aktuelle Revision mit PATCH. Bei revision_conflict (409) lade ihn neu und gleiche Änderungen vor dem nächsten Versuch ab. DELETE mit ?revision= verschiebt ihn in den Papierkorb; Wiederherstellung ist 30 Tage möglich. Endgültiges Löschen ist separat. Archiv und Papierkorb zählen weiter.
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. Wiederholungen und Batches
Wiederhole eine Anlage mit identischem Idempotency-Key und unverändertem Body. Schlüssel bleiben 24 Stunden erhalten; ein anderer Body mit demselben Schlüssel ergibt 409. Batches benötigen einen Schlüssel, akzeptieren 1–100 Einträge mit eigenen Zeilenkennungen und liefern je Eintrag einen Status. HTTP 200 bedeutet nicht Erfolg aller Zeilen. Speichere Ergebnisse in deinem System.
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
}
}
]
}'Limits und Fehler
Lies /quotas für aktuelle Kontingente einschließlich Admin-Ausnahmen. API-Schlüssel und Sitzungen teilen Anfragelimits des Kontos; eigene Bereiche teilen das Ressourcenkontingent des Inhabers. Beachte bei 429 Retry-After und warte. Nutze code zur Fehlerbehandlung; message ist Diagnosetext. Validierungs-, Rechte- und Kontingentfehler nicht blind wiederholen.
- Leseanfragen pro Minute
- 120
- Schreibanfragen pro Minute
- 30
- Batchanfragen pro Minute
- 2
Endpunktübersicht
Inhaltslisten nutzen page (ab 1), pageSize (1–100), q, status und workspaceId. Ohne workspaceId kommen nur persönliche Inhalte zurück. Dateien nutzen limit (1–200), offset, search und kind=pdf oder image. Gehostete Kontakt-, Link- und PDF-Inhalte werden erst mit published=true öffentlich.
| GET /resources | Alles an einem Ort. |
|---|---|
| POST /resources | QR-Code erstellen |
| GET · PATCH · DELETE /resources/{id} | Bearbeiten |
| POST /resources/batch | CSV-Import |
| POST /resources/bulk | Ordner und Tags setzen |
| GET /resources/{id}/analytics?days=30 | Statistiken |
| GET /resources/{id}/history | Versionsverlauf |
| GET · POST /assets | Dateien |
| GET /quotas | Kostenlos anfangen. Klar planen. |
| GET /workspaces | Bereiche |