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 commelabelsetassignee, le texte libre dansnotesétant ce que les utilisateurs voient sur le tableau. - Tableaux : quelles listes chaque tableau TasksBoard affiche.
- Listes partagées : un indicateur
sharedsur chaque liste, et des événements quand un collaborateur modifie une tâche partagée. - Webhooks pour
task.created,task.updated,task.completedettask.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.
- Dans TasksBoard, cliquez sur votre avatar et ouvrez Team, puis l’onglet API (ou allez directement sur
/team?tab=api). - Cliquez pour créer une clé. Choisissez si elle peut écrire ; une clé sans ce droit recevra
403 forbiddensur toute écriture. - Copiez la clé. Elle commence par
tb_live_et n’est affichée qu’une fois. - 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, avecsharedetboardId.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=completedouall,updatedAfter,dueBefore,dueAfter,includeDeleted.POST /lists/{listId}/tasks: créer une tâche avectitle,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, donclistIdest requis.PATCH /tasks/{taskId}: mise à jour partielle ; envoyeznullpour effacernotes,due,labelsouassignee;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, etGET,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.
- 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.
- 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"]}'
- Sauvegardez le
secretde la réponse. Il n’est renvoyé qu’une fois, uniquement dans cette réponse ; vous pouvez aussi fournir le vôtre. - 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}/tasksavecupdatedAfter, 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.
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.completedavecsource: "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
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

