Google TasksAPIWebhooksZapierAutomation

Google Tasks API, Webhooks en Zapier: Een API voor gevorderden

TasksBoard Team
TasksBoard Team
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 als labels en assignee, zodat de vrije tekst in notes is 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.completed en task.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.

  1. Klik in TasksBoard op je avatar en open Team, dan het tabblad API (of ga direct naar /team?tab=api).
  2. Klik om een sleutel aan te maken. Kies of deze mag schrijven; een sleutel zonder schrijfrechten krijgt 403 verboden bij elke schrijfactie.
  3. Kopieer de sleutel. Deze begint met tb_live_ en wordt één keer getoond.
  4. 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, met shared en boardId.
  • POST /lists: maak een lijst aan (title).
  • GET /lists/{listId}: één lijst.

Taken

  • GET /lists/{listId}/tasks: standaard open taken; status=completed of all, updatedAfter, dueBefore, dueAfter, includeDeleted.
  • POST /lists/{listId}/tasks: maak een taak aan met title, 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, dus listId is verplicht.
  • PATCH /tasks/{taskId}: gedeeltelijke update; stuur null om notes, due, labels of assignee te 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, en GET, 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.

Limieten om rekening mee te houden
  • 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.

  1. 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"]}'
  1. Bewaar de secret uit het antwoord. Deze wordt één keer geretourneerd, alleen in dat antwoord; je kunt ook je eigen opgeven.
  2. 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}/tasks met updatedAfter, 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.

TasksBoard logo Probeer TasksBoard Team

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.completed met source: "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

Heeft de Google Tasks API webhooks?
Nee. Google's Tasks API heeft geen pushmeldingen voor taakwijzigingen, dus integraties pollen op een timer. De TasksBoard API voegt webhooks toe voor task.created, task.updated, task.completed en task.deleted, ondertekend met HMAC-SHA256.
Verschijnen taken aangemaakt via de API in de Google Tasks-app?
Ja. De API schrijft naar je Google Tasks-lijsten, en elke ID is van Google zelf. Labels en de toegewezen persoon verschijnen als tekst bovenin de taaknotities in Google's apps, omdat TasksBoard ze daar opslaat.
Waarom activeert mijn webhook niet voor een taak die ik in Gmail heb voltooid?
Als de lijst niet gedeeld is, merkt TasksBoard alleen wijzigingen in Google's apps op wanneer "poll mijn lijsten elke 15 minuten" aan staat in Team → API. Schakel dit in, en verwacht de gebeurtenis binnen de volgende poll. Wijzigingen op gedeelde lijsten komen binnen wanneer de lijst synchroniseert.
Is de Zapier-app nu beschikbaar?
De TasksBoard-app voor Zapier wordt gepubliceerd. Deze gebruikt dezelfde persoonlijke API-sleutel en biedt Nieuwe Taak en Taak Voltooid-triggers, en Taak Aanmaken, Taak Voltooien en Lijst Aanmaken-acties. De REST API en webhooks zijn vandaag beschikbaar.

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