QRinio

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.

Beispielanfrage
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
}'
Auszug der Antwort
{
  "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.

Beispielanfrage
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.

Beispielanfrage
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.

Endpunktübersicht
GET /resourcesAlles an einem Ort.
POST /resourcesQR-Code erstellen
GET · PATCH · DELETE /resources/{id}Bearbeiten
POST /resources/batchCSV-Import
POST /resources/bulkOrdner und Tags setzen
GET /resources/{id}/analytics?days=30Statistiken
GET /resources/{id}/historyVersionsverlauf
GET · POST /assetsDateien
GET /quotasKostenlos anfangen. Klar planen.
GET /workspacesBereiche