Leitfaden

REST-API: Boards, Karten und Sprints per HTTP

Die offene Referenz zur Zuuna REST-API: zk_live_-Tokens, elf Scopes, 3.000 Anfragen pro Minute, Endpunkte und Idempotenz — ohne Account lesbar.

Die REST-API von Zuuna liest und schreibt genau das, was auch im Board steht: Boards und Spalten, Karten, Sprints, Releases, gebuchte Zeit und Git-Aktivität. Sie ist der Weg, Zuuna in eine Pipeline zu hängen, die es sonst nicht kennt.

Diese Seite beschreibt den stabilen Teil — Authentifizierung, Scopes, Limits, Fehler. Die vollständige Endpunkt-Referenz mit allen Feldern liegt in der App unter Entwickler, weil sie sich mit jedem Release ändert.

Authentifizierung

Jede Anfrage trägt ein Bearer-Token im Authorization-Header. Tokens beginnen mit zk_live_ und werden in der App unter Entwickler → API-Tokens ausgestellt. Der Klartext wird einmal angezeigt; gespeichert wird nur ein SHA-256-Hash.

curl -sS https://app.zuuna.de/api/v1/cards/ZNA-42 \
  -H "Authorization: Bearer $ZUUNA_TOKEN"

Ein Token ist die Delegation eines Zugriffs, keine Organisations-Zugangsdaten: Es handelt im Namen der Person, die es ausgestellt hat, und es hört auf zu funktionieren, wenn diese Person deaktiviert oder entfernt wird. Das ist Absicht — ein Token, das ein ausgeschiedenes Teammitglied überlebt, ist genau das Loch, das niemand bemerkt.

Scopes

Ein Token bekommt nur die Rechte, die du ihm gibst. Elf Scopes stehen zur Wahl:

ScopeErlaubt
boards:readBoards und Spalten lesen
cards:readKarten lesen
cards:writeKarten anlegen und ändern
comments:readKommentare lesen
comments:writeKommentare schreiben
time:readErfasste Zeiten lesen
time:writeZeit auf Karten buchen
git:writeCommits, Branches und PRs verknüpfen
releases:writeReleases anlegen und veröffentlichen
deployments:writeDeployments melden (building, live, failed)
webhooks:manageWebhooks verwalten und Zustellprotokoll lesen

Limits

Der API-Zugriff gehört zum Developer-Tarif; Enterprise-Verträge können abweichen. Das Limit beträgt dort 3.000 Anfragen pro Minute.

Gezählt wird pro Workspace, nicht pro Token — sonst könnte man das Limit vervielfachen, indem man einfach mehr Tokens ausstellt. Jede Antwort trägt X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset; bei Überschreitung kommt 429 zurück.

Die Endpunkte im Überblick

Alles liegt unter /api/v1. Karten sprichst du dabei mit ihrem Anzeige-Key an — /api/v1/cards/ZNA-42 funktioniert genauso wie die interne ID, weil der Key das ist, was auf der Karte, im Commit und in der CLI steht.

  • /boards, /boards/{id}/cards, /boards/{id}/columns — Struktur lesen
  • /cards/{key} und darunter /comments, /checklist, /time, /relations, /attachments, /archive
  • /sprints, /sprints/{id}/cards — Sprint-Inhalt lesen und ändern
  • /releases, /deployments — Versionen und Deployment-Status
  • /time/entries — Zeiterfassung
  • /git/events, /git/branches, /git/checks, /git/merges — das, was die CLI benutzt
  • /webhooks und darunter /deliveries, /test
  • /groups, /me

Fehler und Idempotenz

Fehler kommen als JSON mit error und message. 401 heißt: Token fehlt, ist widerrufen oder seine Besitzerin ist nicht mehr im Workspace. 403 heißt: Token gültig, Scope fehlt. 404 bekommst du auch dann, wenn eine Karte existiert, dein Token sie aber nicht sehen darf — die Antwort verrät nicht, welcher der beiden Fälle vorliegt.

Beim Anlegen von Karten kannst du einen idempotencyKey mitschicken. Ein Retry nach einem Timeout legt dann keine zweite Karte an — der Fall, der sonst zuverlässig Doubletten produziert.

Weiter

Webhooks sind die Gegenrichtung: Zuuna ruft dich an, statt dass du fragst. Die CLI ist die fertig verpackte Variante für den häufigsten Fall — Commits mit Karten verknüpfen, ohne selbst HTTP zu schreiben. Praktisch anfangen kannst du mit dem Tutorial API-Token erstellen und erste Abfrage.

Häufige Fragen

Welchen Tarif brauche ich für den API-Zugriff?

Den Developer-Tarif. Dort lassen sich Tokens ausstellen und /api/v1 nutzen, mit 3.000 Anfragen pro Minute je Workspace. Enterprise-Verträge können davon abweichen.

Wie erstelle ich ein API-Token?

In der App unter Entwickler → API-Tokens. Du wählst die Scopes, und der Klartext wird genau einmal angezeigt — danach liegt nur noch ein SHA-256-Hash in der Datenbank. Verloren heißt neu ausstellen.

Wie hoch sind die Limits?

3.000 Anfragen pro Minute, gezählt pro Workspace und nicht pro Token. Jede Antwort trägt X-RateLimit-Limit, -Remaining und -Reset; darüber gibt es 429.

Kann ich Karten per API zwischen Sprints verschieben?

Ja, über /api/v1/sprints/{id}/cards. Die Karte lässt sich mit ihrem Anzeige-Key ansprechen, also etwa ZNA-42 statt der internen ID.

Gibt es die API-Dokumentation auch ohne Account?

Diese Seite ist offen und beschreibt den stabilen Teil. Die vollständige Endpunkt-Referenz steht in der App unter Entwickler, weil sie sich mit jedem Release ändert und eine zweite Kopie sonst irgendwann falsch wäre.

Bereit, es einfacher zu machen?

Boards, Sprints, Dokumente und Zeiterfassung an einem Ort — DSGVO-konform, in der EU gehostet.