Welcome to the Taskade developer docs. Taskade turns a plain-English description of your business into a real, running app. Taskade Genesis builds the app, and the workspace underneath keeps working as its database, its agent team, and its automation engine. Taskade calls that foundation Workspace DNA: memory, intelligence, and execution. These docs show you how to reach all of it from your own code. The fastest first win is a personal access token and your first API call, which takes about two minutes.
YOUR CODE / YOUR AGENT / YOUR AI CLIENT
│
┌──────────────────┼──────────────────┬─────────────────┐
│ │ │ │
REST v1 Action v2 MCP servers Webhooks
resource-shaped verb-shaped tool-calling events out
49 paths 61 paths hosted + local 6 event types
│ │ │ │
└──────────────────┴────────┬─────────┴─────────────────┘
│
┌────────▼────────┐
│ WORKSPACE DNA │
│ │
│ Memory │ projects, tasks, media, long-term memory
│ Intelligence │ agents, knowledge, 15+ frontier models
│ Execution │ automations, bundles, published apps
└─────────────────┘
The two layers
Think of a Taskade account the way a hosting control panel thinks about a server. There is a root layer, the workspace where members, folders, and billing live. And there is an app layer, the projects, agents, and published Taskade Genesis apps that run inside it. Every API surface below addresses one layer or the other, and most confusion dissolves once you know which one you are holding.
| Workspace layer (root) | App layer (per app) | |
|---|---|---|
| What lives here | Workspaces, folders (subspaces), members, tokens | Projects, tasks, agents, media, published apps |
| Human entry point | taskade.com/create | your app's own URL, or Preview App while building |
| REST API | GET /workspaces, GET /workspaces/{id}/folders |
GET /projects/{id}/tasks, POST /projects |
| Action API | listSpaces, listFolders |
createTask, promptAgent, exportBundle |
| Portable unit | a whole workspace bundle | a single app bundle (Bundles) |
From zero to programmatic
The whole journey, human or agent:
- Sign up — a free account can use the entire public API.
- Describe your app — Taskade Genesis builds it; Preview App shows it running against your real workspace data while you iterate.
- Publish — the app gets a live URL; the workspace underneath keeps being the database, the agent roster, and the automation engine.
- Create a token — then everything the UI just did is addressable from code, an MCP client, or a webhook pointing back at you.
Pick a surface
| You want to… | Use | Shape |
|---|---|---|
| Read and write tasks, projects, assignees, dates, custom fields | REST API | GET /projects/{id}/tasks — resource paths, standard verbs |
| Prompt agents, manage knowledge, import/export bundles, register webhooks | Action API | POST /promptAgent — one verb per action, built for tool-calling |
| Let Claude, Cursor or VS Code operate a workspace directly | MCP | Streamable HTTP, OAuth 2.0 + PKCE |
| Receive events when work changes | Webhooks | Signed POST to your endpoint |
| Ship a whole app as one portable artifact | Bundles & App Kits | Export/import a workspace or Genesis app |
Authenticate once
Every surface takes the same header. Create a personal access token at taskade.com/settings/api. The token is shown once, never expires, and you can hold five at a time.
curl "https://www.taskade.com/api/v1/me/projects" \
-H "Authorization: Bearer tskdp_your_token_here"
The public API is not plan-gated. A Free account can mint a token and call every v1 and v2 endpoint. Two things on this surface do depend on plan: outbound webhooks need Pro or above, and MCP needs any paid plan.
How a request travels
Rate limits at a glance
Requests are rate limited to keep the service fast for everyone. Exact ceilings are not published and can change without notice, so read your budget from the response instead: every response carries x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset (seconds until the window reopens). If you receive a 429, wait out x-rate-limit-reset and retry with exponential backoff. There is no Retry-After header, and retrying before the window reopens will fail again.
Two habits keep most integrations well clear of 429: batch writes where an operation accepts arrays, and prefer webhooks over tight polling loops.
Live endpoints
These pages are the crawlable reference; the running service also speaks for itself. The Swagger consoles are interactive try-it-now UIs generated by the same server that validates every request, and the raw specs behind them are what regenerate this reference.
| Endpoint | What it is |
|---|---|
| api/documentation/v1 | Interactive Swagger console for the REST API |
| api/documentation/v2 | Interactive Swagger console for the Action API |
| api/documentation/v1/json · v2/json | The machine-readable OpenAPI documents |
https://www.taskade.com/mcp |
The hosted MCP endpoint — paste it into Claude, Cursor, or VS Code as a remote MCP server and OAuth discovery does the rest. (A bare browser GET returns 401 by design: it speaks MCP, not HTML — see MCP.) |