Google Tasks API, Webhooks en Zapier: Een API voor gevorderden
Je wilt een taak aangemaakt in Google Tasks elke keer dat een formulier wordt ingediend. Of een Slack-bericht wanneer een teamgenoot een taak afrondt op de gedeelde lanceerlijst. Of een nachtelijk script dat achterstallige taken in een spreadsheet plaatst.
Google heeft een Tasks API, en die werkt. Maar er zijn geen webhooks, dus “wanneer een taak is voltooid” betekent dat je elke lijst op een timer moet controleren. Het weet niets van labels, toegewezen personen of boards, omdat Google Tasks die niet heeft. En elk script begint met een Google Cloud-project, een OAuth-toestemmingsscherm en een token-verversroutine.
TasksBoard biedt nu een openbare REST API bovenop je Google Tasks-data, met persoonlijke API-sleutels, webhooks ondertekend met HMAC, en een Zapier-app. Deze gids behandelt wat het biedt, hoe je een sleutel krijgt, de meest gebruikte endpoints, hoe webhooks en polling werken, en voor wie dit bedoeld is. De API is onderdeel van het Team-plan.
Wat de TasksBoard API toevoegt aan Google Tasks
De API leest en schrijft dezelfde Google Tasks-lijsten en taken die je ziet in Gmail en de Google Tasks-app. Elke lijst- en taak-ID is de Google Tasks-ID, dus alles wat je bouwt blijft compatibel met Google Tasks zelf en met andere tools die de API van Google gebruiken.
Daarnaast onthult het wat TasksBoard toevoegt:
- Labels en toegewezen personen als echte velden. Google Tasks slaat alleen een titel, notities en een vervaldatum op; TasksBoard bewaart labels en de toegewezen persoon in de notities (labels op de eerste regel, dan
👤 Toegewezen aan <email>). De API leest en schrijft ze alslabelsenassignee, zodat de vrije tekst innotesis wat mensen op het board zien. - Boards: welke lijsten elk TasksBoard-board toont.
- Gedeelde lijsten: een
shared-vlag op elke lijst, en gebeurtenissen wanneer een samenwerker een gedeelde taak wijzigt. - Webhooks voor
task.created,task.updated,task.completedentask.deleted.
Basis-URL: https://api.tasksboard.com/v1. Reacties zijn JSON onder een data-sleutel; fouten komen als { "error": { "code", "message", "details" } }, waarbij code stabiel is en details de ongeldige velden noemt bij een 422.
Een API-sleutel aanmaken
Sleutels zijn persoonlijk. Een sleutel handelt als de gebruiker die hem heeft aangemaakt: wat die persoon kan doen in Google Tasks, kan de sleutel ook.
- Klik in TasksBoard op je avatar en open Team, dan het tabblad API (of ga direct naar
/team?tab=api). - Klik om een sleutel aan te maken. Kies of deze mag schrijven; een sleutel zonder schrijfrechten krijgt
403 verbodenbij elke schrijfactie. - Kopieer de sleutel. Deze begint met
tb_live_en wordt één keer getoond. - Stuur hem als een bearer-token bij elke aanvraag:
curl https://api.tasksboard.com/v1/lists \
-H "Authorization: Bearer tb_live_…"
Hetzelfde tabblad toont je sleutels met hun rechten, laat je er een intrekken, en toont je webhooks. Trek een sleutel direct in als deze mogelijk gelekt is; een nieuwe duurt maar een paar seconden.
De belangrijkste endpoints
Een snelle rondleiding door de resources. Het volledige overzicht, gegenereerd vanuit de OpenAPI-definitie, staat in het helpcentrum: TasksBoard API-referentie.
Account
GET /me: het account waar de sleutel bij hoort, het plan en de rechten van de sleutel.
Lijsten
GET /lists: je Google Tasks-lijsten, metsharedenboardId.POST /lists: maak een lijst aan (title).GET /lists/{listId}: één lijst.
Taken
GET /lists/{listId}/tasks: standaard open taken;status=completedofall,updatedAfter,dueBefore,dueAfter,includeDeleted.POST /lists/{listId}/tasks: maak een taak aan mettitle,notes,due,labels,assignee,parent(maak er een subtask van),previous(plaats na een sibling).GET /tasks/{taskId}?listId=: één taak. Google adresseert een taak per lijst en ID, duslistIdis verplicht.PATCH /tasks/{taskId}: gedeeltelijke update; stuurnullomnotes,due,labelsofassigneete wissen;status: "open"heropent een voltooide taak.POST /tasks/{taskId}/complete: voltooi deze.DELETE /tasks/{taskId}?listId=: verwijder deze.
Boards
GET /boards: je boards en de lijst-ID’s die elk toont. Het hoofdboard staat altijd eerst.
Webhooks
GET,POST /webhooks, enGET,PATCH,DELETE /webhooks/{webhookId}.
Een taak aanmaken met een label en een toegewezen persoon ziet er zo uit:
curl -X POST https://api.tasksboard.com/v1/lists/LIST_ID/tasks \
-H "Authorization: Bearer tb_live_…" \
-H "Content-Type: application/json" \
-d '{"title": "Verstuur het Q3-rapport", "due": "2026-10-24",
"labels": ["❗️Belangrijk"], "assignee": "bob@voorbeeld.com"}'
De toegewezen persoon moet een samenwerker van de lijst zijn (of jijzelf). Lijst-endpoints retourneren meta.nextCursor wanneer er meer is; geef deze terug als cursor met dezelfde filters.
- 60 aanvragen per minuut per sleutel. Reacties bevatten X-RateLimit-Limit en X-RateLimit-Remaining; een 429 bevat Retry-After in seconden. Google Tasks' eigen quota gelden bovenop
- Vervaldatums zijn datums. Google Tasks negeert het tijdstip; een due-waarde komt altijd terug om middernacht UTC
- 10 webhooks per account, alleen https-URL's
- Team-plan vereist. Een sleutel waarvan de eigenaar het plan verlaat, geeft 403 team_plan_required
Webhooks: krijg een seintje bij taakwijzigingen
Polling is het zwakke punt van de Google Tasks API. Een webhook vervangt dit: TasksBoard roept je URL aan wanneer een taak wordt aangemaakt, bijgewerkt, voltooid of verwijderd.
- Registreer een webhook met de gewenste gebeurtenissen:
curl -X POST https://api.tasksboard.com/v1/webhooks \
-H "Authorization: Bearer tb_live_…" \
-H "Content-Type: application/json" \
-d '{"url": "https://hooks.voorbeeld.com/tasksboard",
"events": ["task.created", "task.completed"]}'
- Bewaar de
secretuit het antwoord. Deze wordt één keer geretourneerd, alleen in dat antwoord; je kunt ook je eigen opgeven. - Beantwoord elke levering binnen 10 seconden met een 2xx-status.
Elke levering bevat drie headers: X-TasksBoard-Event (de gebeurtenisnaam), X-TasksBoard-Delivery (een leverings-ID) en X-TasksBoard-Signature. De body bevat de gebeurtenis, een createdAt-tijdstempel, het pogingsnummer, de volledige taak onder data.task, en een source: api voor een REST-aanroep, sync voor een wijziging via een gedeelde lijst, poll voor de 15-minuten poll hieronder.
Verifieer de handtekening
De signature-header heeft de vorm t=<unix seconden>,v1=<hex>, waarbij v1 de HMAC-SHA256 is van "<t>.<raw body>" met je secret. Bereken de HMAC over de ruwe request-body precies zoals ontvangen, vóór JSON-parsing, en weiger tijdstempels die te oud zijn:
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"))
}
Pogingen en uitschakelen
Mislukte leveringen worden tot 3 keer opnieuw geprobeerd met backoff. Na 20 opeenvolgende mislukkingen wordt de webhook uitgeschakeld (active: false) tot je deze weer inschakelt met PATCH /webhooks/{id} en "active": true. Het API-tabblad op de Team-pagina toont elke webhook met zijn URL, gebeurtenissen en een Active of Disabled-badge, zodat een dood eindpunt makkelijk te spotten is.
Pollen voor niet-gedeelde lijsten
Waar komen webhook-gebeurtenissen vandaan? Van drie plaatsen: de eigen schrijfacties van de API, wijzigingen doorgegeven via gedeelde lijsten, en, als je dit inschakelt, een poll van je andere lijsten.
Dat laatste is belangrijk. Een wijziging in Gmail of de Google Tasks-app op een lijst die niet gedeeld is, wordt niet opgemerkt door TasksBoard tenzij iets naar de lijst kijkt. Schakel op het API-tabblad poll mijn lijsten elke 15 minuten in: TasksBoard controleert die lijsten dan op dat schema en zendt gebeurtenissen uit met source: "poll". Zonder dit produceren alleen gedeelde lijsten en API-schrijfacties gebeurtenissen.
Als je alleen wilt reageren op wijzigingen op de lijsten die je team deelt, laat polling dan uit.
Zapier
Niet iedereen wil code schrijven. De TasksBoard-app voor Zapier authenticeert met dezelfde persoonlijke API-sleutel en biedt:
- Triggers: Nieuwe Taak, Taak Voltooid. Beide pollen
GET /lists/{listId}/tasksmetupdatedAfter, hetzelfde patroon dat je in je eigen script zou gebruiken. - Acties: Taak Aanmaken, Taak Voltooien, Lijst Aanmaken.
De Zapier-integratie wordt gepubliceerd. Zodra deze gelist is, zoek je naar TasksBoard in Zapier, plak je je sleutel wanneer gevraagd en kies je een lijst. Tot die tijd dekken de REST API en webhooks dezelfde functionaliteit, en vertellen de bovenstaande triggers en acties wat je kunt verwachten. Voor een bredere blik op automatiseringsopties, zie onze gids over Google Tasks-integraties.
Gedeelde lijsten, rollen, een activiteitenlog en een REST API met webhooks, bovenop de Google Tasks die je al gebruikt. Eén factuur voor het hele team.
Bekijk abonnementen →Voor wie dit bedoeld is
De API is een Team-plan-functie, en het past bij specifieke use cases:
- Teams met een gedeelde lijst als bron van waarheid. Een webhook op
task.completedmetsource: "sync"activeert wanneer een samenwerker een taak afrondt, ongeacht welke app ze gebruikten. Dat is het aanknopingspunt voor een Slack-bericht, een rij in Sheets of een ticketupdate. - Operationele mensen die tools aan elkaar knopen. Formulieren, CRM’s en supportdesks kunnen taken aanmaken met een label en een toegewezen persoon in één aanroep, en de taak verschijnt op het board van de juiste persoon en in hun Google Tasks-app.
- Ontwikkelaars die de Google Tasks API probeerden en stopten bij polling, OAuth-instellingen of het ontbreken van toegewezen personen. Eén sleutel, één header, Google’s eigen ID’s.
Het is niet bedoeld om Google’s API volledig te vervangen. Als je alleen je eigen taken nodig hebt in een persoonlijk script en al een OAuth-client hebt, is Google’s API gratis en volstaat deze. Onze Google Tasks exportgids behandelt de eenmalige gevallen.
FAQ
Conclusie
Google Tasks heeft een API, maar geen webhooks, geen labels of toegewezen personen, en opstartkosten die de meeste kleine automatiseringen stoppen voordat ze beginnen. De TasksBoard API behoudt Google’s ID’s en voegt de ontbrekende stukken toe: een persoonlijke sleutel die je in een minuut aanmaakt, endpoints voor lijsten, taken en boards, webhooks die je kunt verifiëren, optionele polling voor niet-gedeelde lijsten, en een Zapier-app onderweg.
Maak een sleutel aan op het API-tabblad van de Team-pagina, doe één GET /lists-aanroep, en de rest volgt uit de API-referentie.
Klaar om uw Google Tasks te delen?
Ga gratis aan de slag met TasksBoard, geen creditcard vereist.
Inloggen

