API Dokumentation

Die QRtrack API ermöglicht es Ihnen, QR-Codes programmatisch zu erstellen, zu verwalten und Analytics-Daten abzurufen. Alle Requests verwenden JSON und erfordern einen API-Token.

Basis-URL: https://qr.bigtex.de/api/v1

Erste Schritte

Die QRtrack API ermöglicht es Ihnen, QR-Codes programmatisch zu erstellen, zu verwalten und Analytics-Daten abzurufen. Alle Requests verwenden JSON und erfordern einen API-Token.

Voraussetzungen:

  • ✓ Ein QRtrack-Account (Pro-Plan für API-Zugriff)
  • ✓ Ein gültiger API-Token aus dem Dashboard
  • ✓ HTTPS für alle API-Anfragen

Authentifizierung

API-Tokens können im Dashboard unter "Einstellungen → API-Tokens" erstellt werden. Fügen Sie den Token in jeden Request im Authorization Header ein.

Header-Format:

Authorization: Bearer IHR_API_TOKEN

Beispiel-Request:

curl -X GET "https://qr.bigtex.de/api/v1/qr-codes" \
  -H "Authorization: Bearer IHR_API_TOKEN" \
  -H "Accept: application/json"

Wichtig: Behandle deinen API-Token wie ein Passwort. Teile ihn niemals öffentlich und committe ihn nicht in Git-Repositories.

Endpoints

GET /qr-codes
Berechtigung: read

Liste aller QR-Codes des authentifizierten Users abrufen (paginiert).

Query-Parameter:

  • page - Seitennummer (Standard: 1)
  • per_page - Einträge pro Seite (Standard: 20)
POST /qr-codes
Berechtigung: write

Neuen QR-Code erstellen.

Body-Parameter (JSON):

  • name (string, erforderlich) - Name des QR-Codes
  • target_url (string, erforderlich) - Ziel-URL
  • folder_id (integer, optional) - Ordner-ID
  • is_active (boolean, optional) - Aktiv-Status (Standard: true)
GET /qr-codes/{'{id}'}
Berechtigung: read

Details eines spezifischen QR-Codes abrufen.

PUT /qr-codes/{'{id}'}
Berechtigung: write

QR-Code aktualisieren.

Body-Parameter (JSON):

  • name (string, optional) - Name des QR-Codes
  • target_url (string, optional) - Ziel-URL
  • is_active (boolean, optional) - Aktiv-Status
DELETE /qr-codes/{'{id}'}
Berechtigung: delete

QR-Code löschen (Soft Delete).

GET /qr-codes/{'{id}'}/stats
Berechtigung: read

Statistiken für einen QR-Code abrufen.

Query-Parameter:

  • from (date, optional) - Startdatum (Format: YYYY-MM-DD)
  • to (date, optional) - Enddatum (Format: YYYY-MM-DD)

Code-Beispiele

cURL - QR-Code erstellen

curl -X POST "https://qr.bigtex.de/api/v1/qr-codes" \
  -H "Authorization: Bearer IHR_API_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mein QR-Code",
    "target_url": "https://example.com"
  }'

PHP - QR-Codes abrufen

<?php
$token = 'IHR_API_TOKEN';
$baseUrl = 'https://qr.bigtex.de/api/v1';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baseUrl . '/qr-codes');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Accept: application/json',
]);

$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);

print_r($data);

JavaScript - QR-Code erstellen

const token = 'IHR_API_TOKEN';
const baseUrl = 'https://qr.bigtex.de/api/v1';

const response = await fetch(`${baseUrl}/qr-codes`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Mein QR-Code',
    target_url: 'https://example.com'
  })
});

const data = await response.json();
console.log(data);

Python - Statistiken abrufen

import requests

token = 'IHR_API_TOKEN'
base_url = 'https://qr.bigtex.de/api/v1'
qr_id = 1

headers = {
    'Authorization': f'Bearer {token}',
    'Accept': 'application/json'
}

params = {
    'from': '2025-01-01',
    'to': '2025-01-31'
}

response = requests.get(
    f'{base_url}/qr-codes/{qr_id}/stats',
    headers=headers,
    params=params
)

data = response.json()
print(data)

Antwort-Format

Alle erfolgreichen Antworten werden im JSON-Format mit folgendem Schema zurückgegeben:

{
  "data": {
    "id": 1,
    "name": "Mein QR-Code",
    "short_code": "abc123",
    "target_url": "https://example.com",
    "redirect_url": "https://qr.bigtex.de/r/abc123",
    "total_scans": 42,
    "unique_scans": 38,
    "is_active": true,
    "created_at": "2025-01-15T12:00:00Z",
    "updated_at": "2025-01-15T12:00:00Z"
  }
}

Paginierte Antworten enthalten zusätzlich ein meta-Objekt mit Pagination-Informationen.

Fehlerbehandlung

Die API verwendet standard HTTP-Statuscodes und gibt Fehlermeldungen im JSON-Format zurück.

400 Bad Request

Ungültige Parameter oder fehlerhafte JSON-Syntax

401 Unauthorized

Fehlender oder ungültiger API-Token

403 Forbidden

Keine Berechtigung für diese Aktion

404 Not Found

Ressource nicht gefunden

429 Too Many Requests

Rate Limit überschritten

Beispiel Fehler-Response:

{
  "message": "Validierungsfehler",
  "errors": {
    "target_url": [
      "Das Feld target_url muss eine gültige URL sein."
    ]
  }
}

Rate Limiting

Die API ist auf 60 Anfragen pro Minute pro API-Token limitiert. Bei Überschreitung erhältst du einen 429 Too Many Requests Fehler.

Response-Header:

  • X-RateLimit-Limit: 60 - Maximale Anfragen pro Minute
  • X-RateLimit-Remaining: 45 - Verbleibende Anfragen
  • X-RateLimit-Reset: 1642247340 - Zeitpunkt des Limit-Resets (Unix-Timestamp)

Fragen zur API?

Unser Support-Team hilft dir gerne bei der Integration weiter.