QR-Codes mit Python automatisieren: Bibliothek oder REST-API?
Was eine Python-Bibliothek leistet
Wer QR-Codes mit Python erzeugen will, findet mehrere freie Bibliotheken. Sie machen aus einem Text ein Bild, oft auch ein SVG, lokal und ohne Dienst. Für Etiketten mit Seriennummern, interne Dokumente oder WLAN-Zugänge ist das genau richtig.
Wo statische Bilder an Grenzen stoßen
Ein so erzeugter Code ist statisch, der Inhalt steckt im Muster. Ändert sich das Ziel durch einen Relaunch, fällt ein Tippfehler erst nach dem Druck auf oder willst du wissen, wie oft gescannt wird, hilft er nicht weiter. Dafür gibt es dynamische Codes: Same-QR speichert das Ziel hinter einer kurzen, gleichbleibenden Adresse, zählt Scans und prüft nachts, ob jedes Ziel erreichbar ist.
Dynamische Codes per REST-API
Die API liegt unter https://sameqr.com/api/v1. Leg im Dashboard unter Konto, „Zugang für CLI, Skripte und Agenten“, einen Schlüssel an, „lesen + schreiben“ zum Anlegen, und setze ihn als Umgebungsvariable SAMEQR_API_KEY. Dieses Beispiel nutzt nur die Standardbibliothek:
import json, os, urllib.request
API = "https://sameqr.com/api/v1"
KEY = os.environ["SAMEQR_API_KEY"]
def rufe(methode, weg, daten=None):
req = urllib.request.Request(
API + weg, method=methode,
data=json.dumps(daten).encode() if daten else None,
headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"})
with urllib.request.urlopen(req) as r:
return json.load(r)
code = rufe("POST", "/qr", {"name": "Anleitung Modell A", "targetUrl": "https://example.com/anleitung-a"})
print(code["id"])Antwortet die API mit einem Fehler, wirft urlopen eine Ausnahme. Der Inhalt enthält immer ein Objekt error mit status, code und message. Werte es aus, statt das Skript blind weiterlaufen zu lassen.
Ein Ablauf aus der Praxis
Ein Hersteller druckt auf jede Verpackung einen Code zur Anleitung:
- Das Skript liest die Produktliste aus einer CSV-Datei.
- Für jedes neue Produkt legt es einen Code an und merkt sich dessen Kennung neben der Artikelnummer.
- Erscheint eine neue Fassung der Anleitung, ändert es per PATCH auf /qr/<id> nur das Ziel. Dafür braucht es einen Schlüssel „voll“ und die Kopfzeile X-Confirm mit dem gelesenen Stand.
- Ein zweites Skript mit Leseschlüssel holt einmal im Monat die Scan-Zahlen.
Plane die Grenzen ein: höchstens 10 Zieländerungen je Stunde und 30 je Tag über die API, 120 Anfragen pro Minute je Schlüssel, je Stunde 60 im kostenlosen Tarif, 300 in Start, 1.000 in Pro und 5.000 in Agentur. Bei 429 wartest du die Sekunden ab, die im Kopf Retry-After stehen.
Schlüssel sicher im Skript
- Den Schlüssel nie in die .py-Datei schreiben, sondern aus der Umgebung lesen.
- Für Skripte, die nur lesen, einen Schlüssel „nur lesen“ verwenden.
- Je Skript ein eigener Schlüssel mit sprechendem Namen und passender Laufzeit.
Fazit: Warum Same-QR
Für statische Codes reicht eine Bibliothek. Sobald gedruckt wird, ist Same-QR die bessere Grundlage: eine schlanke REST-API in jedem Tarif, verständliche Fehler, Schutz vor parallelem Überschreiben und Ziele, die du nach dem Druck noch ändern kannst.
Leg gleich los: Registriere dich kostenlos auf sameqr.com, zwei dynamische QR-Codes sind dauerhaft gratis. API, CLI und MCP-Server gibt es in jedem Tarif, die Dokumentation steht auf sameqr.com/entwickler.
Häufig gestellte Fragen
Nein. Die REST-API funktioniert mit der Standardbibliothek oder jeder Bibliothek für Web-Anfragen.
Ja. Für feste Inhalte reicht ein statischer Code, für alles Gedruckte mit möglichem Wechsel nimm einen dynamischen.
Im Dashboard als PNG, SVG oder PDF, oder per API mit demselben Schlüssel. Die Wege beschreibt die Dokumentation auf sameqr.com/entwickler.
Jetzt vormerken, bevor es losgeht.
Eine E-Mail, sobald das Tool startet — mit den Preisen und dem kostenlosen Tarif. Kein Spam, jederzeit abbestellbar.
- Dein kostenloser Zugang ist vorgemerkt — bezahlen kann man ohnehin noch nicht
- 90 statt 30 Tage unbegrenzte Zieländerungen: dreifache Testphase, nur für Vorgemerkte
- Startpreis-Garantie: dein Preis bleibt, auch wenn wir später erhöhen
Mit der Anmeldung willigst du ein, den Newsletter zu erhalten. Die Einwilligung kannst du jederzeit über den Abmeldelink in jeder E-Mail widerrufen.