Google Tasks API, Webhooks och Zapier: En kraftfull API-lösning
Du vill att en uppgift skapas i Google Tasks varje gång ett formulär skickas in. Eller ett Slack-meddelande när en lagkamrat slutför en uppgift på den gemensamma lanseringlistan. Eller ett nattligt skript som arkiverar försenade uppgifter i ett kalkylblad.
Google har en Tasks API, och den fungerar. Men den har inga webhooks, så “när en uppgift är slutförd” innebär att man måste polla varje lista med jämna mellanrum. Den vet inget om etiketter, tilldelade personer eller tavlor, eftersom Google Tasks inte har dessa funktioner. Och varje skript börjar med ett Google Cloud-projekt, en OAuth-consent-skärm och en token-uppdateringsrutin.
TasksBoard erbjuder nu en offentlig REST API ovanpå dina Google Tasks-data, med personliga API-nycklar, webhooks signerade med HMAC och en Zapier-app. Den här guiden täcker vad den erbjuder, hur du får en nyckel, de vanligaste slutpunkterna, hur webhooks och polling fungerar och vem detta är för. API:et ingår i Team-planen.
Vad TasksBoard API lägger till Google Tasks
API:et läser och skriver till samma Google Tasks-listor och uppgifter som du ser i Gmail och Google Tasks-appen. Varje lista och uppgifts-id är Google Tasks-id, så allt du bygger förblir kompatibelt med Google Tasks självt och med andra verktyg som använder Googles API.
Utöver detta exponerar det vad TasksBoard lägger till:
- Etiketter och tilldelade personer som egna fält. Google Tasks lagrar bara en titel, anteckningar och ett förfallodatum; TasksBoard sparar etiketter och den tilldelade i anteckningarna (etiketter på första raden, sedan
👤 Tilldelad till <e-post>). API:et läser och skriver dem somlabelsochassignee, så den fria texten inotesär det som syns på tavlan. - Tavlor: vilka listor varje TasksBoard-tavla visar.
- Delade listor: en
shared-flagga på varje lista och händelser när en medarbetare ändrar en delad uppgift. - Webhooks för
task.created,task.updated,task.completedochtask.deleted.
Bas-URL: https://api.tasksboard.com/v1. Svar är JSON under en data-nyckel; fel kommer som { "error": { "code", "message", "details" } }, där code är stabil och details namnger ogiltiga fält vid 422.
Skapa en API-nyckel
Nycklar är personliga. En nyckel agerar som den användare som skapade den: vad den personen kan göra i Google Tasks kan nyckeln göra.
- I TasksBoard, klicka på din avatar och öppna Team, sedan fliken API (eller gå direkt till
/team?tab=api). - Klicka för att skapa en nyckel. Välj om den får skriva; en nyckel utan skrivrättigheter får
403 forbiddenpå alla skrivförsök. - Kopiera nyckeln. Den börjar med
tb_live_och visas bara en gång. - Skicka den som en bearer-token i varje förfrågan:
curl https://api.tasksboard.com/v1/lists \
-H "Authorization: Bearer tb_live_…"
Samma flik listar dina nycklar med deras behörigheter, låter dig återkalla en och visar dina webhooks. Återkalla en nyckel om den kan ha läckt; en ny tar bara några sekunder.
De viktigaste slutpunkterna
En snabb genomgång av resurserna. Den fullständiga referensen, genererad från OpenAPI-definitionen, finns i hjälpcentret: TasksBoard API-referens.
Konto
GET /me: kontot nyckeln tillhör, dess plan och nyckelns behörigheter.
Listor
GET /lists: dina Google Tasks-listor, medsharedochboardId.POST /lists: skapa en lista (title).GET /lists/{listId}: en lista.
Uppgifter
GET /lists/{listId}/tasks: öppna uppgifter som standard;status=completedellerall,updatedAfter,dueBefore,dueAfter,includeDeleted.POST /lists/{listId}/tasks: skapa en uppgift medtitle,notes,due,labels,assignee,parent(gör den till en deluppgift),previous(sätt in efter en syskonuppgift).GET /tasks/{taskId}?listId=: en uppgift. Google adresserar en uppgift via lista och id, sålistIdkrävs.PATCH /tasks/{taskId}: partiell uppdatering; skickanullför att rensanotes,due,labelsellerassignee;status: "open"öppnar en slutförd uppgift igen.POST /tasks/{taskId}/complete: markera som slutförd.DELETE /tasks/{taskId}?listId=: ta bort uppgiften.
Tavlor
GET /boards: dina tavlor och de list-id:n som varje tavla visar. Huvudtavlan är alltid först.
Webhooks
GET,POST /webhooks, ochGET,PATCH,DELETE /webhooks/{webhookId}.
Att skapa en uppgift med en etikett och en tilldelad person ser ut så här:
curl -X POST https://api.tasksboard.com/v1/lists/LIST_ID/tasks \
-H "Authorization: Bearer tb_live_…" \
-H "Content-Type: application/json" \
-d '{"title": "Skicka Q3-rapporten", "due": "2026-10-24",
"labels": ["❗️Viktigt"], "assignee": "bob@example.com"}'
Den tilldelade måste vara en medarbetare på listan (eller du). List-slutpunkter returnerar meta.nextCursor när det finns mer; skicka tillbaka den som cursor med samma filter.
- 60 förfrågningar per minut per nyckel. Svar innehåller X-RateLimit-Limit och X-RateLimit-Remaining; ett 429-svar innehåller Retry-After i sekunder. Googles egna kvoter gäller ovanpå detta
- Förfallodatum är datum. Google Tasks ignorerar tid på dygnet; ett due-värde kommer alltid tillbaka som midnatt UTC
- 10 webhooks per konto, endast https-URL:er
- Team-plan krävs. En nyckel vars ägare lämnar planen svarar med 403 team_plan_required
Webhooks: bli meddelad när en uppgift ändras
Polling är den svaga punkten i Google Tasks API. En webhook ersätter det: TasksBoard anropar din URL när en uppgift skapas, uppdateras, slutförs eller tas bort.
- Registrera en webhook med de händelser du vill ha:
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"]}'
- Spara
secretfrån svaret. Den returneras bara en gång, endast i det svaret; du kan också ange en egen. - Svara på varje leverans med något 2xx inom 10 sekunder.
Varje leverans har tre rubriker: X-TasksBoard-Event (händelsenamn), X-TasksBoard-Delivery (ett leverans-id) och X-TasksBoard-Signature. Brödtexten innehåller händelsen, en createdAt-tidsstämpel, försöksnumret, hela uppgiften under data.task och en source: api för REST-anrop, sync för ändringar via en delad lista, poll för den 15-minuterspoll som beskrivs nedan.
Verifiera signaturen
Signaturrubriken har formen t=<unix-sekunder>,v1=<hex>, där v1 är HMAC-SHA256 för "<t>.<raw body>" med din hemlighet. Beräkna HMAC över den råa förfrågansbrödtexten exakt som mottagen, före all JSON-tolkning, och avvisa tidsstämplar som är för gamla:
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"))
}
Försök igen och avstängning
Misslyckade leveranser försöker igen upp till 3 gånger med backoff. Efter 20 misslyckade försök i rad stängs webhooken av (active: false) tills du aktiverar den igen med PATCH /webhooks/{id} och "active": true. API-fliken på Teamsidan visar varje webhook med dess URL, händelser och en Active- eller Disabled-bricka, så en död slutpunkt är lätt att upptäcka.
Polling för listor som inte delas
Varifrån kommer webhook-händelser? Från tre platser: API:ets egna skrivningar, ändringar på delade listor och, om du aktiverar det, en poll av dina andra listor.
Det sista är viktigt. En ändring i Gmail eller Google Tasks-appen på en lista som inte delas observeras inte av TasksBoard om ingen tittar på listan. På API-fliken, aktivera poll mina listor var 15:e minut: TasksBoard kontrollerar då dessa listor på den schemalagda tiden och skickar händelser med source: "poll". Utan detta kommer endast delade listor och API-skrivningar att generera händelser.
Om du bara behöver reagera på ändringar i de listor ditt team delar, lämna polling avstängt.
Zapier
Alla vill inte skriva kod. TasksBoard-appen för Zapier autentiserar med samma personliga API-nyckel och erbjuder:
- Utlösare: Ny uppgift, Uppgift slutförd. Båda pollar
GET /lists/{listId}/tasksmedupdatedAfter, samma idiom som i ett eget skript. - Åtgärder: Skapa uppgift, Slutför uppgift, Skapa lista.
Zapier-integrationen publiceras. När den är listad söker du efter TasksBoard i Zapier, klistrar in din nyckel när du uppmanas och väljer en lista. Tills dess täcker REST API och webhooks samma behov, och utlösarna och åtgärderna ovan ger en uppfattning om vad som kommer. För en bredare överblick över automatiseringsalternativ, se vår guide till Google Tasks-integrationer.
Delade listor, roller, en aktivitetslogg och ett REST API med webhooks, ovanpå Google Tasks som du redan använder. En faktura för hela teamet.
Se planer →Vem detta är för
API:et är en funktion i Team-planen och passar specifika behov:
- Team med en delad lista som sanningens källa. En webhook på
task.completedmedsource: "sync"utlöses när någon medarbetare slutför en uppgift, oavsett vilket verktyg de använde. Det är kopplingen till ett Slack-meddelande, en rad i Sheets eller en biljettuppdatering. - Operations-personer som kopplar ihop verktyg. Formulär, CRM:er och supportsystem kan skapa uppgifter med en etikett och en tilldelad person i ett anrop, och uppgiften dyker upp på rätt persons tavla och i deras Google Tasks-app.
- Utvecklare som provat Google Tasks API och stannat vid polling, OAuth-inställningar eller bristen på tilldelningar. En nyckel, en rubrik, Googles egna id:n.
Det är inte för att ersätta Googles API helt. Om du bara behöver dina egna uppgifter i ett personligt skript och redan har en OAuth-klient är Googles API gratis och duger. Vår guide till Google Tasks-export täcker enstaka fall.
FAQ
Sammanfattning
Google Tasks har ett API, men inga webhooks, inga etiketter eller tilldelningar och en inställningskostnad som stoppar de flesta små automatiseringar innan de börjar. TasksBoard API behåller Googles id:n och lägger till det som saknas: en personlig nyckel du skapar på en minut, slutpunkter för listor, uppgifter och tavlor, webhooks du kan verifiera, valfri polling för odelade listor och en Zapier-app på gång.
Skapa en nyckel på API-fliken på Teamsidan, gör ett GET /lists-anrop och resten följer från API-referensen.


