download dots
Connect

Public API Reference

Updated 2026-06-27·8 min read

Overview

The Taskade Public API lets you programmatically manage workspaces, projects, tasks, AI agents, and media. Use it to build custom integrations, automate workflows from external systems, or sync Taskade with your own tools.

TL;DR: Manage workspaces, projects, tasks, AI agents, and media in code with the Taskade Public API. The GA REST API v1 covers full task CRUD across 53+ endpoints, and the beta Action API v2 adds operations like prompting agents and exporting bundles. Authenticate with a Personal Access Token or OAuth 2.0, then connect to the Taskade MCP Server for AI clients.

Taskade ships two public APIs, both authenticated the same way:

API Base URL Style Status Use for
REST API v1 https://www.taskade.com/api/v1 RESTful (GET/POST/PUT/DELETE) GA Full task CRUD — assignees, dates, notes, fields (the endpoints below)
Action API v2 https://www.taskade.com/api/v2 Action / RPC (POST /{operation}) Beta Prompting agents, agent lifecycle, bundles

💡 Note: The endpoint reference below is the v1 RESTful API — it's GA and complete (full task CRUD). v2 is a newer action-based API; see Action API v2 at the bottom. For a high-level introduction see the Developer API overview; for MCP access see Taskade MCP Server.


Authentication

Personal Access Token

The simplest way to authenticate. Generate a token at Settings → API. Tokens are prefixed tskdp_, shown once, and you can hold up to 5 per account (email must be verified).

Bash
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://www.taskade.com/api/v1/me/projects

OAuth 2.0

For apps that act on behalf of other users. Taskade supports the Authorization Code grant with PKCE (S256).

  • Authorize: https://www.taskade.com/oauth2/authorize
  • Token: https://www.taskade.com/oauth2/token
  • Register (dynamic client): https://www.taskade.com/oauth2/register

Exchange the code at the token endpoint to receive an access_token (valid ~1 hour) and a refresh_token. Include Authorization: Bearer ACCESS_TOKEN on all requests. The hosted MCP server requires an OAuth token carrying the mcp scope (it does not accept personal access tokens).


Endpoints

Workspaces

Method Endpoint Description
GET /workspaces List all workspaces
GET /workspaces/{id}/folders List folders in a workspace
POST /workspaces/{id}/projects Create a project in a workspace

Folders

Method Endpoint Description
GET /folders/{id}/projects List projects in a folder
GET /folders/{id}/agents List agents in a folder
GET /folders/{id}/media List media in a folder
GET /folders/{id}/templates List project templates
POST /folders/{id}/agents Create an agent
POST /folders/{id}/agents/generate Generate an agent with AI

Projects

Method Endpoint Description
GET /projects/{id} Get a project
POST /projects Create a project
POST /projects/{id}/copy Copy a project
PUT /projects/{id}/complete Mark project as complete
PUT /projects/{id}/restore Restore a completed project
POST /projects/from-template Create from a template
GET /projects/{id}/members List project members
GET /projects/{id}/fields List custom fields
GET /projects/{id}/share-link Get share link
PUT /projects/{id}/share-link Enable/disable share link
GET /projects/{id}/blocks Get content blocks
GET /projects/{id}/tasks List all tasks

Tasks

Method Endpoint Description
POST /projects/{id}/tasks Create a task
GET /tasks/{id} Get a task
PUT /tasks/{id} Update a task
DELETE /tasks/{id} Delete a task
PUT /tasks/{id}/complete Mark task as complete
PUT /tasks/{id}/uncomplete Mark task as incomplete
PUT /tasks/{id}/move Move task to another project
GET /tasks/{id}/assignees List assignees
POST /tasks/{id}/assignees Add assignee
DELETE /tasks/{id}/assignees/{uid} Remove assignee
GET /tasks/{id}/dates Get due dates
PUT /tasks/{id}/dates Set due dates
GET /tasks/{id}/notes Get task notes
PUT /tasks/{id}/notes Update task notes
GET /tasks/{id}/field-values Get custom field values
PUT /tasks/{id}/field-values Set custom field values

AI Agents

Method Endpoint Description
GET /agents/{id} Get an agent
PUT /agents/{id} Update agent settings
DELETE /agents/{id} Delete an agent
PUT /agents/{id}/public-access Enable/disable public access
GET /agents/{id}/public Get public agent settings
POST /agents/{id}/knowledge/project Add project to knowledge
DELETE /agents/{id}/knowledge/project Remove project from knowledge
POST /agents/{id}/knowledge/media Add media to knowledge
DELETE /agents/{id}/knowledge/media Remove media from knowledge
GET /agents/{id}/conversations List conversations
GET /agents/{id}/conversations/{cid} Get a conversation

Media & User

Method Endpoint Description
GET /media/{id} Get media details
DELETE /media/{id} Delete media
GET /me/projects List your projects

Bundles (Taskade Genesis Apps)

Method Endpoint Description
GET /bundles/{spaceId}/export Export a Taskade Genesis app as .tsk file
POST /bundles/{workspaceId}/import Import a .tsk bundle into a workspace

Action API v2

v2 is a separate, newer action-based API. Every call is a POST to a named operation with a JSON body — it is not RESTful (there is no GET /api/v2/spaces; it 404s).

Operation Body
POST /api/v2/listSpaces {}
POST /api/v2/listFolders { spaceId }
POST /api/v2/listProjects { spaceId }
POST /api/v2/createProject { spaceId, contentType, content }
POST /api/v2/listTasks { projectId } (read-only)
POST /api/v2/promptAgent { spaceId, agentId, prompt }
POST /api/v2/exportBundle { spaceId }

v2 is beta and doesn't cover everything: tasks are read-only (listTasks, listBlocks) and there's no project-update operation — for full task CRUD use v1 above. v2 adds what v1 lacks, most notably promptAgent. Browse the full operation set in the live spec at /api/documentation/v2.


Pagination

The API supports two pagination styles:

Page-based (most endpoints):

GET /projects/{id}/tasks?limit=20&page=2

Cursor-based (tasks and blocks):

GET /projects/{id}/tasks?after={taskId}&limit=20

Error Handling

All errors return a consistent envelope:

Json
{
  "ok": false,
  "message": "Project not found",
  "code": "NOT_FOUND",
  "statusMessage": "Not Found"
}

Common status codes: 400 (bad request), 401 (unauthorized), 403 (forbidden), 404 (not found), 429 (rate limited).


Rate Limits

API requests are rate-limited per token. Response headers include:

Header Description
X-RateLimit-Limit Max requests per window
X-RateLimit-Remaining Requests remaining
X-RateLimit-Reset Window reset time (Unix timestamp)

If you hit the limit, wait until the reset time before retrying.


Webhooks

Inbound (External → Taskade)

External services can POST JSON to a Taskade-generated webhook URL to trigger automations. Set up inbound webhooks in Automations → Webhooks trigger.

Outbound (Taskade → External)

Use the HTTP Request action in automations to call external APIs when triggers fire.


Frequently Asked Questions

Where do I get my API key?

Go to Settings → API and create a Personal Access Token.

Is there a TypeScript SDK?

A TypeScript SDK (@taskade/sdk) is in preview and not yet published to the public npm registry, so yarn add @taskade/sdk will not resolve yet. For now, call the REST API directly — every endpoint is a plain HTTPS request. When it ships, the generated client exposes TaskadePublicApi + HttpClient (there is no high-level Taskade facade).

Can I export and import Taskade Genesis apps?

Yes. Use the Bundles API to export apps as .tsk files and import them into other workspaces.


Was this helpful?