Google Tasks API, Webhooks & Zapier: API für Power-User
Du möchtest, dass bei jeder Formularabgabe eine Aufgabe in Google Tasks erstellt wird. Oder eine Slack-Nachricht, wenn ein Teammitglied eine Aufgabe auf der gemeinsamen Launch-Liste erledigt. Oder ein nächtliches Skript, das überfällige Aufgaben in eine Tabelle exportiert.
Google bietet eine Tasks API, die funktioniert. Aber es gibt keine Webhooks, also bedeutet “wenn eine Aufgabe erledigt ist” regelmäßiges Abfragen aller Listen per Timer. Die API kennt keine Labels, Verantwortliche oder Boards, weil Google Tasks diese nicht hat. Und jedes Skript beginnt mit einem Google Cloud-Projekt, einem OAuth Consent Screen und einer Token-Aktualisierungsroutine.
TasksBoard bietet nun eine öffentliche REST API für deine Google Tasks-Daten, mit persönlichen API-Schlüsseln, HMAC-signierten Webhooks und einer Zapier-Integration. Diese Anleitung erklärt, was sie bietet, wie du einen Schlüssel erhältst, die wichtigsten Endpunkte, wie Webhooks und Polling funktionieren und für wen das gedacht ist. Die API ist Teil des Team-Plans.
Was die TasksBoard API zu Google Tasks hinzufügt
Die API liest und schreibt die gleichen Google Tasks-Listen und Aufgaben, die du in Gmail und der Google Tasks-App siehst. Jede Listen- und Aufgaben-ID ist die Google Tasks-ID, sodass alles, was du erstellst, mit Google Tasks selbst und anderen Tools, die die Google API nutzen, kompatibel bleibt.
Darüber hinaus macht sie sichtbar, was TasksBoard hinzufügt:
- Labels und Verantwortliche als eigene Felder. Google Tasks speichert nur Titel, Notizen und ein Fälligkeitsdatum; TasksBoard verwaltet Labels und Verantwortliche innerhalb der Notizen (Labels in der ersten Zeile, dann
👤 Assigned to <Email>). Die API liest und schreibt sie alslabelsundassignee, sodass der Freitext innotesdas ist, was Nutzer auf dem Board sehen. - Boards: Welche Listen jedes TasksBoard-Board anzeigt.
- Geteilte Listen: Ein
shared-Flag pro Liste und Events, wenn ein Mitarbeiter eine geteilte Aufgabe ändert. - Webhooks für
task.created,task.updated,task.completedundtask.deleted.
Basis-URL: https://api.tasksboard.com/v1. Antworten sind JSON unter einem data-Schlüssel; Fehler kommen als { "error": { "code", "message", "details" } }, wobei code stabil ist und details bei einem 422 die ungültigen Felder benennt.
API-Schlüssel erstellen
Schlüssel sind persönlich. Ein Schlüssel agiert als der Nutzer, der ihn erstellt hat: Alles, was diese Person in Google Tasks tun kann, kann auch der Schlüssel.
- Klicke in TasksBoard auf dein Avatar und öffne Team, dann den API-Tab (oder gehe direkt zu
/team?tab=api). - Klicke, um einen Schlüssel zu erstellen. Wähle, ob er schreiben darf; ein Schlüssel ohne Schreibberechtigung erhält
403 forbiddenbei jedem Schreibversuch. - Kopiere den Schlüssel. Er beginnt mit
tb_live_und wird nur einmal angezeigt. - Sende ihn als Bearer-Token bei jeder Anfrage:
curl https://api.tasksboard.com/v1/lists \
-H "Authorization: Bearer tb_live_…"
Derselbe Tab listet deine Schlüssel mit ihrem Scope auf, lässt dich einen widerrufen und zeigt deine Webhooks. Widerrufe einen Schlüssel sofort, wenn er geleakt sein könnte; ein neuer ist in Sekunden erstellt.
Die wichtigsten Endpunkte
Ein kurzer Überblick über die Ressourcen. Die vollständige Referenz, generiert aus der OpenAPI-Definition, findest du im Help Center: TasksBoard API-Referenz.
Account
GET /me: Das Konto, zu dem der Schlüssel gehört, dessen Plan und die Berechtigungen des Schlüssels.
Listen
GET /lists: Deine Google Tasks-Listen mitsharedundboardId.POST /lists: Erstelle eine Liste (title).GET /lists/{listId}: Eine einzelne Liste.
Aufgaben
GET /lists/{listId}/tasks: Standardmäßig offene Aufgaben;status=completedoderall,updatedAfter,dueBefore,dueAfter,includeDeleted.POST /lists/{listId}/tasks: Erstelle eine Aufgabe mittitle,notes,due,labels,assignee,parent(als Unteraufgabe),previous(nach einer bestimmten Aufgabe einfügen).GET /tasks/{taskId}?listId=: Eine einzelne Aufgabe. Google adressiert Aufgaben über Liste und ID, daher istlistIderforderlich.PATCH /tasks/{taskId}: Teilweise Aktualisierung; sendenull, umnotes,due,labelsoderassigneezu löschen;status: "open"öffnet eine erledigte Aufgabe wieder.POST /tasks/{taskId}/complete: Als erledigt markieren.DELETE /tasks/{taskId}?listId=: Aufgabe löschen.
Boards
GET /boards: Deine Boards und die Listen-IDs, die jedes anzeigt. Das Hauptboard ist immer das erste.
Webhooks
GET,POST /webhookssowieGET,PATCH,DELETE /webhooks/{webhookId}.
Eine Aufgabe mit Label und Verantwortlichem erstellen sieht so aus:
curl -X POST https://api.tasksboard.com/v1/lists/LIST_ID/tasks \
-H "Authorization: Bearer tb_live_…" \
-H "Content-Type: application/json" \
-d '{"title": "Q3-Bericht versenden", "due": "2026-10-24",
"labels": ["❗️Wichtig"], "assignee": "bob@example.com"}'
Der Verantwortliche muss ein Mitarbeiter der Liste (oder du selbst) sein. Listen-Endpunkte geben meta.nextCursor zurück, wenn es mehr gibt; übergib ihn als cursor mit den gleichen Filtern.
- 60 Anfragen pro Minute pro Schlüssel. Antworten enthalten X-RateLimit-Limit und X-RateLimit-Remaining; eine 429 enthält Retry-After in Sekunden. Die Quoten von Google Tasks gelten zusätzlich
- Fälligkeitsdaten sind Datumsangaben. Google Tasks ignoriert die Tageszeit; ein Fälligkeitsdatum kommt immer um Mitternacht UTC zurück
- 10 Webhooks pro Konto, nur HTTPS-URLs
- Team-Plan erforderlich. Ein Schlüssel, dessen Besitzer den Plan verlässt, antwortet mit 403 team_plan_required
Webhooks: Benachrichtigungen bei Aufgabenänderungen
Polling ist die Schwachstelle der Google Tasks API. Ein Webhook ersetzt das: TasksBoard ruft deine URL auf, wenn eine Aufgabe erstellt, aktualisiert, erledigt oder gelöscht wird.
- Registriere einen Webhook mit den gewünschten Events:
curl -X POST https://api.tasksboard.com/v1/webhooks \
-H "Authorization: Bearer tb_live_…" \
-H "Content-Type: application/json" \
-d '{"url": "https://hooks.example.com/tasksboard",
"events": ["task.created", "task.completed"]}'
- Speichere das
secretaus der Antwort. Es wird nur einmal zurückgegeben, nur in dieser Antwort; du kannst auch ein eigenes angeben. - Beantworte jede Lieferung innerhalb von 10 Sekunden mit einem 2xx-Status.
Jede Lieferung enthält drei Header: X-TasksBoard-Event (der Event-Name), X-TasksBoard-Delivery (eine Lieferungs-ID) und X-TasksBoard-Signature. Der Body enthält das Event, einen createdAt-Zeitstempel, die Versuchsnummer, die vollständige Aufgabe unter data.task und eine source: api für einen REST-Aufruf, sync für eine Änderung über eine geteilte Liste, poll für den 15-Minuten-Poll, der unten beschrieben wird.
Signatur verifizieren
Der Signatur-Header hat die Form t=<Unix-Sekunden>,v1=<hex>, wobei v1 der HMAC-SHA256 von "<t>.<roher Body>" mit deinem Secret ist. Berechne den HMAC über den rohen Request-Body genau wie empfangen, vor jeglicher JSON-Verarbeitung, und lehne zu alte Zeitstempel ab:
const crypto = require("crypto")
function verify(secret, rawBody, header, toleranceSeconds = 300) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")))
if (Math.abs(Date.now() / 1000 - Number(parts.t)) > toleranceSeconds) return false
const expected = crypto.createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex")
return crypto.timingSafeEqual(Buffer.from(parts.v1, "hex"), Buffer.from(expected, "hex"))
}
Wiederholungen und Deaktivierung
Fehlgeschlagene Lieferungen werden bis zu 3 Mal mit Backoff wiederholt. Nach 20 aufeinanderfolgenden Fehlern wird der Webhook deaktiviert (active: false), bis du ihn mit PATCH /webhooks/{id} und "active": true wieder aktivierst. Der API-Tab auf der Team-Seite zeigt jeden Webhook mit seiner URL, Events und einem “Aktiv”- oder “Deaktiviert”-Badge, sodass ein toter Endpunkt leicht zu erkennen ist.
Polling für nicht geteilte Listen
Woher kommen Webhook-Events? Aus drei Quellen: Eigene Schreibvorgänge der API, Änderungen über geteilte Listen und, wenn du es aktivierst, ein Poll deiner anderen Listen.
Letzteres ist wichtig. Eine Änderung in Gmail oder der Google Tasks-App an einer Liste, die nicht geteilt ist, wird von TasksBoard nicht beobachtet, es sei denn, jemand sieht sich die Liste an. Aktiviere auf dem API-Tab Meine Listen alle 15 Minuten abfragen: TasksBoard prüft dann diese Listen im genannten Intervall und sendet Events mit source: "poll". Ohne diese Option erzeugt nur API-Zugriff und geteilte Listen Events.
Wenn du nur auf Änderungen an den Listen deines Teams reagieren musst, lasse Polling deaktiviert.
Zapier
Nicht jeder möchte Code schreiben. Die TasksBoard-App für Zapier authentifiziert sich mit dem gleichen persönlichen API-Schlüssel und bietet:
- Trigger: Neue Aufgabe, Aufgabe erledigt. Beide fragen
GET /lists/{listId}/tasksmitupdatedAfterab, das gleiche Muster, das du in deinem eigenen Skript verwenden würdest. - Aktionen: Aufgabe erstellen, Aufgabe erledigen, Liste erstellen.
Die Zapier-Integration wird gerade veröffentlicht. Sobald sie gelistet ist, suchst du in Zapier nach TasksBoard, fügst deinen Schlüssel ein und wählst eine Liste. Bis dahin decken die REST API und Webhooks die gleichen Funktionen ab, und die oben genannten Trigger und Aktionen zeigen, was zu erwarten ist. Für einen breiteren Überblick über Automatisierungsmöglichkeiten siehe unseren Guide zu Google Tasks-Integrationen.
Geteilte Listen, Rollen, ein Aktivitätsprotokoll und eine REST API mit Webhooks, aufbauend auf den Google Tasks, die du bereits nutzt. Eine Rechnung für das ganze Team.
Pläne ansehen →Für wen das gedacht ist
Die API ist ein Feature des Team-Plans und hat einen spezifischen Anwendungsfall:
- Teams mit einer geteilten Liste als Single Source of Truth. Ein Webhook auf
task.completedmitsource: "sync"feuert, wenn ein Mitarbeiter eine Aufgabe erledigt, egal welche App er genutzt hat. Das ist der Haken für eine Slack-Nachricht, eine Zeile in Sheets oder ein Ticket-Update. - Operations-Teams, die Tools verbinden. Formulare, CRMs und Support-Systeme können Aufgaben mit Label und Verantwortlichem in einem Aufruf erstellen, und die Aufgabe erscheint auf dem Board der richtigen Person und in ihrer Google Tasks-App.
- Entwickler, die die Google Tasks API ausprobiert haben und an Polling, OAuth-Einrichtung oder fehlenden Verantwortlichen gescheitert sind. Ein Schlüssel, ein Header, Googles eigene IDs.
Es ist nicht dafür gedacht, die Google API vollständig zu ersetzen. Wenn du nur deine eigenen Aufgaben in einem persönlichen Skript brauchst und bereits einen OAuth-Client hast, ist die Google API kostenlos und erledigt den Job. Unser Google Tasks-Export-Guide behandelt Einmal-Fälle.
FAQ
Fazit
Google Tasks hat eine API, aber keine Webhooks, keine Labels oder Verantwortliche und einen Einrichtungsaufwand, der die meisten kleinen Automatisierungen stoppt, bevor sie beginnen. Die TasksBoard API behält Googles IDs bei und fügt die fehlenden Teile hinzu: einen persönlichen Schlüssel, den du in einer Minute erstellst, Endpunkte für Listen, Aufgaben und Boards, verifizierbare Webhooks, optionales Polling für nicht geteilte Listen und eine Zapier-Integration in Arbeit.
Erstelle einen Schlüssel im API-Tab der Team-Seite, mache einen GET /lists-Aufruf, und der Rest folgt aus der API-Referenz.
Bereit, Ihre Google Tasks zu teilen?
Starten Sie kostenlos mit TasksBoard, keine Kreditkarte erforderlich.
Anmelden

