Google TasksAPIWebhooksZapierAutomatisation

API Google Tasks, Webhooks et Zapier : une API publique pour experts

TasksBoard Team
TasksBoard Team
API Google Tasks, Webhooks et Zapier : une API publique pour experts

Vous souhaitez qu’une tâche soit créée dans Google Tasks à chaque soumission d’un formulaire. Ou recevoir un message Slack lorsqu’un collègue termine une tâche sur la liste de lancement partagée. Ou encore un script nocturne qui archive les tâches en retard dans une feuille de calcul.

Google propose une API Tasks qui fonctionne. Mais elle ne dispose pas de webhooks, donc pour savoir “quand une tâche est terminée”, il faut interroger chaque liste à intervalles réguliers. Elle ne gère pas les étiquettes, les assignations ou les tableaux, car Google Tasks n’en a pas. Et chaque script commence par un projet Google Cloud, un écran de consentement OAuth et une routine de rafraîchissement de token.

TasksBoard expose désormais une API REST publique basée sur vos données Google Tasks, avec des clés API personnelles, des webhooks signés avec HMAC et une application Zapier. Ce guide présente ses fonctionnalités, comment obtenir une clé, les endpoints les plus utiles, le fonctionnement des webhooks et du polling, et à qui cela s’adresse. L’API fait partie du plan Team.

Ce que l’API TasksBoard ajoute à Google Tasks

L’API lit et écrit les mêmes listes et tâches Google Tasks que vous voyez dans Gmail et l’application Google Tasks. Chaque id de liste et de tâche correspond à l’id Google Tasks, garantissant la compatibilité avec Google Tasks lui-même et les autres outils utilisant l’API de Google.

En plus, elle expose les ajouts de TasksBoard :

  • Étiquettes et assignations comme champs dédiés. Google Tasks ne stocke qu’un titre, des notes et une date d’échéance ; TasksBoard conserve les étiquettes et l’assignataire dans les notes (étiquettes en première ligne, puis 👤 Assigné à <email>). L’API les lit et écrit comme labels et assignee, le texte libre dans notes étant ce que les utilisateurs voient sur le tableau.
  • Tableaux : quelles listes chaque tableau TasksBoard affiche.
  • Listes partagées : un indicateur shared sur chaque liste, et des événements quand un collaborateur modifie une tâche partagée.
  • Webhooks pour task.created, task.updated, task.completed et task.deleted.

URL de base : https://api.tasksboard.com/v1. Les réponses sont en JSON sous une clé data ; les erreurs renvoient { "error": { "code", "message", "details" } }, où code est stable et details liste les champs invalides pour un 422.

Créer une clé API

Les clés sont personnelles. Une clé agit au nom de l’utilisateur qui l’a créée : tout ce que cette personne peut faire dans Google Tasks, la clé peut le faire.

  1. Dans TasksBoard, cliquez sur votre avatar et ouvrez Team, puis l’onglet API (ou allez directement sur /team?tab=api).
  2. Cliquez pour créer une clé. Choisissez si elle peut écrire ; une clé sans ce droit recevra 403 forbidden sur toute écriture.
  3. Copiez la clé. Elle commence par tb_live_ et n’est affichée qu’une fois.
  4. Envoyez-la comme token Bearer à chaque requête :
curl https://api.tasksboard.com/v1/lists \
  -H "Authorization: Bearer tb_live_…"

Le même onglet liste vos clés avec leurs droits, permet de les révoquer et montre vos webhooks. Révoquez une clé immédiatement en cas de fuite ; une nouvelle prend quelques secondes.

Les endpoints principaux

Un rapide tour des ressources. La référence complète, générée depuis la définition OpenAPI, est dans le centre d’aide : Référence API TasksBoard.

Compte

  • GET /me : le compte associé à la clé, son plan et les droits de la clé.

Listes

  • GET /lists : vos listes Google Tasks, avec shared et boardId.
  • POST /lists : créer une liste (title).
  • GET /lists/{listId} : une liste.

Tâches

  • GET /lists/{listId}/tasks : tâches ouvertes par défaut ; status=completed ou all, updatedAfter, dueBefore, dueAfter, includeDeleted.
  • POST /lists/{listId}/tasks : créer une tâche avec title, notes, due, labels, assignee, parent (sous-tâche), previous (insérer après une tâche).
  • GET /tasks/{taskId}?listId= : une tâche. Google adresse une tâche par liste et id, donc listId est requis.
  • PATCH /tasks/{taskId} : mise à jour partielle ; envoyez null pour effacer notes, due, labels ou assignee ; status: "open" rouvre une tâche terminée.
  • POST /tasks/{taskId}/complete : la terminer.
  • DELETE /tasks/{taskId}?listId= : la supprimer.

Tableaux

  • GET /boards : vos tableaux et les ids de liste qu’ils affichent. Le tableau principal est toujours en premier.

Webhooks

  • GET, POST /webhooks, et GET, PATCH, DELETE /webhooks/{webhookId}.

Créer une tâche avec une étiquette et un assignataire ressemble à ceci :

curl -X POST https://api.tasksboard.com/v1/lists/LIST_ID/tasks \
  -H "Authorization: Bearer tb_live_…" \
  -H "Content-Type: application/json" \
  -d '{"title": "Envoyer le rapport Q3", "due": "2026-10-24",
       "labels": ["❗️Important"], "assignee": "bob@example.com"}'

L’assignataire doit être un collaborateur de la liste (ou vous). Les endpoints de liste renvoient meta.nextCursor quand il y a plus ; passez-le comme cursor avec les mêmes filtres.

Limites à anticiper
  • 60 requêtes par minute par clé. Les réponses incluent X-RateLimit-Limit et X-RateLimit-Remaining ; un 429 inclut Retry-After en secondes. Les quotas de Google Tasks s'appliquent en plus
  • Les dates d'échéance sont des dates. Google Tasks ignore l'heure ; une échéance revient toujours à minuit UTC
  • 10 webhooks par compte, URLs https uniquement
  • Plan Team requis. Une clé dont le propriétaire quitte le plan répondra 403 team_plan_required

Webhooks : être notifié des changements de tâches

Le polling est le point faible de l’API Google Tasks. Un webhook le remplace : TasksBoard appelle votre URL quand une tâche est créée, mise à jour, terminée ou supprimée.

  1. Enregistrez un webhook avec les événements souhaités :
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"]}'
  1. Sauvegardez le secret de la réponse. Il n’est renvoyé qu’une fois, uniquement dans cette réponse ; vous pouvez aussi fournir le vôtre.
  2. Répondez à chaque livraison avec un code 2xx dans les 10 secondes.

Chaque livraison contient trois en-têtes : X-TasksBoard-Event (le nom de l’événement), X-TasksBoard-Delivery (un id de livraison) et X-TasksBoard-Signature. Le corps contient l’événement, un timestamp createdAt, le numéro de tentative, la tâche complète sous data.task, et une source : api pour un appel REST, sync pour un changement via une liste partagée, poll pour le polling de 15 minutes décrit ci-dessous.

Vérifier la signature

L’en-tête de signature a la forme t=<secondes unix>,v1=<hex>, où v1 est le HMAC-SHA256 de "<t>.<raw body>" avec votre secret. Calculez le HMAC sur le corps brut exactement reçu, avant tout parsing JSON, et rejetez les timestamps trop anciens :

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"))
}

Tentatives et désactivation

Les livraisons échouées sont réessayées jusqu’à 3 fois avec backoff. Après 20 échecs consécutifs, le webhook est désactivé (active: false) jusqu’à réactivation via PATCH /webhooks/{id} avec "active": true. L’onglet API de la page Team montre chaque webhook avec son URL, ses événements et un badge Actif ou Désactivé, facilitant le repérage des endpoints morts.

Polling pour les listes non partagées

D’où viennent les événements webhook ? De trois sources : les écritures via l’API, les changements propagés sur les listes partagées, et si activé, un polling de vos autres listes.

Ce dernier point est crucial. Un changement dans Gmail ou l’app Google Tasks sur une liste non partagée n’est pas observé par TasksBoard sans consultation de la liste. Dans l’onglet API, activez poll my lists every 15 minutes : TasksBoard vérifie alors ces listes toutes les 15 minutes et émet des événements avec source: "poll". Sans cela, seules les listes partagées et les écritures API produisent des événements.

Si vous ne réagissez qu’aux changements sur les listes partagées par votre équipe, laissez le polling désactivé.

Zapier

Pas besoin de coder pour tout le monde. L’application TasksBoard pour Zapier s’authentifie avec la même clé API personnelle et propose :

  • Déclencheurs : Nouvelle Tâche, Tâche Terminée. Les deux interrogent GET /lists/{listId}/tasks avec updatedAfter, comme dans vos propres scripts.
  • Actions : Créer Tâche, Terminer Tâche, Créer Liste.

L’intégration Zapier est en cours de publication. Une fois listée, cherchez TasksBoard dans Zapier, collez votre clé quand demandé et choisissez une liste. En attendant, l’API REST et les webhooks couvrent les mêmes besoins, et les déclencheurs/actions ci-dessus donnent un aperçu. Pour plus d’options d’automatisation, consultez notre guide sur les intégrations Google Tasks.

Logo TasksBoard Essayez TasksBoard Team

Listes partagées, rôles, journal d'activité et API REST avec webhooks, sur vos Google Tasks existants. Une facture pour toute l'équipe.

Voir les offres →

À qui cela s’adresse

L’API est une fonctionnalité du plan Team, avec des cas d’usage précis :

  • Équipes avec une liste partagée comme source de vérité. Un webhook sur task.completed avec source: "sync" se déclenche quand un collaborateur termine une tâche, quelle que soit l’app utilisée. C’est l’occasion d’un message Slack, d’une ligne dans Sheets ou d’une mise à jour de ticket.
  • Personnes opérationnelles reliant des outils. Formulaires, CRMs et helpdesks peuvent créer des tâches avec étiquette et assignataire en un appel, la tâche apparaissant sur le tableau de la bonne personne et dans son app Google Tasks.
  • Développeurs ayant essayé l’API Google Tasks et bloqués sur le polling, la configuration OAuth ou l’absence d’assignations. Une clé, un en-tête, les ids de Google.

Ce n’est pas pour remplacer complètement l’API de Google. Si vous ne gérez que vos propres tâches dans un script personnel et avez déjà un client OAuth, l’API Google est gratuite et suffisante. Notre guide d’export Google Tasks couvre les cas ponctuels.

FAQ

L'API Google Tasks a-t-elle des webhooks ?
Non. L'API Tasks de Google n'a pas de notifications push pour les changements de tâches, donc les intégrations utilisent du polling. L'API TasksBoard ajoute des webhooks pour task.created, task.updated, task.completed et task.deleted, signés avec HMAC-SHA256.
Les tâches créées via l'API apparaissent-elles dans l'app Google Tasks ?
Oui. L'API écrit dans vos listes Google Tasks, et chaque id est celui de Google. Les étiquettes et l'assignataire apparaissent en texte dans les notes de la tâche dans les apps Google, car c'est là que TasksBoard les stocke.
Pourquoi mon webhook ne se déclenche-t-il pas pour une tâche terminée dans Gmail ?
Si la liste n'est pas partagée, TasksBoard ne voit les changements dans les apps Google que si "poll my lists every 15 minutes" est activé dans Team → API. Activez-le, et attendez l'événement au prochain polling. Les changements sur listes partagées arrivent à la synchronisation.
L'app Zapier est-elle disponible maintenant ?
L'application TasksBoard pour Zapier est en cours de publication. Elle utilise la même clé API personnelle et propose les déclencheurs Nouvelle Tâche et Tâche Terminée, et les actions Créer Tâche, Terminer Tâche et Créer Liste. L'API REST et les webhooks sont disponibles dès maintenant.

Conclusion

Google Tasks a une API, mais pas de webhooks, ni d’étiquettes ou d’assignations, et une configuration qui décourage la plupart des petites automatisations. L’API TasksBoard conserve les ids de Google et ajoute les pièces manquantes : une clé personnelle créée en une minute, des endpoints pour listes, tâches et tableaux, des webhooks vérifiables, un polling optionnel pour les listes non partagées, et une app Zapier en route.

Créez une clé dans l’onglet API de la page Team, faites un appel GET /lists, et le reste suit dans la référence API.

Prêt à partager vos Google Tasks ?

Commencez avec TasksBoard gratuitement, aucune carte de crédit requise.

Se connecter