Action API v2 Reference
Reference for the Public API v2 — an action-based (RPC-over-HTTP) API. Every call is a POST to a named operation, with cURL, Python, and TypeScript examples.
The Public API v2 is an action-based API: every operation is a POST to a named endpoint (/listSpaces, /promptAgent, /createProject), with a JSON body. It is not RESTful — there are no GET /workspaces or PUT /tasks/{id} style routes.
v2 is in beta and runs alongside v1. v2 is simpler and adds capabilities v1 lacks — most notably promptAgent. But v2 does not cover everything: tasks are read-only in v2, and there is no project-update endpoint. For full task CRUD (create/update/delete, assignees, dates, notes, fields) use the REST API v1. See Which API should I use? below.
The live OpenAPI spec is published at taskade.com/api/documentation/v2.
Table of Contents
Which API should I use?
Taskade ships two public HTTP APIs. They share the same authentication.
REST API v1
Action API v2
Base URL
https://www.taskade.com/api/v1
https://www.taskade.com/api/v2
Style
RESTful (GET/POST/PUT/DELETE)
Action / RPC (POST /{operation})
Status
Stable (GA)
Beta (0.1.0)
Task create / update / delete
✅ Full CRUD
❌ Read-only (listTasks, listBlocks)
Task assignees / dates / notes / fields
✅
❌
Project update
✅
❌ (create / complete / restore / copy only)
Prompt an agent
❌
✅ promptAgent
Agent lifecycle (create/update/delete)
Partial
✅
Bundles (export/import Taskade Genesis apps)
❌
✅
Rule of thumb: reach for v1 when you need to write tasks or manage task metadata; reach for v2 for agent prompting, agent lifecycle, bundles, and simpler list/read flows.
Base URL & Authentication
All v2 operations live under:
Authenticate with a Personal Access Token from taskade.com/settings/api, or an OAuth 2.0 access token for apps that act on behalf of other users:
See the Authentication guide for personal tokens vs. OAuth 2.0 (PKCE) details.
Calling convention
Every v2 call is a POST to an operation name, with a JSON body and a JSON response. Successful responses are wrapped in { "ok": true, ... }.
Here is a single Action API v2 call, from authentication to JSON response.
A typical response:
There is no POST /api/v2/webhooks endpoint, but you can subscribe to events programmatically (Beta, Pro and above) via POST /api/v2/subscribeWebhook — see Webhooks. You can also use automation webhook triggers.
Endpoints
List spaces (workspaces)
POST /listSpaces — every integration's entry point. Body is optional.
Filter with { "filterBy": { "name": { "operator": "contains", "value": "Marketing" } } }.
List folders in a space
POST /listFolders
List projects in a space
POST /listProjects
Get a project
POST /getProject — returns { ok, item: { id, name } }.
Create a project
POST /createProject — seed a project from Markdown.
List tasks (read-only)
POST /listTasks — paginated with after / before cursors. Each task is { id, text, parentId?, completed }.
To create, update, complete, or delete tasks — or set assignees, dates, notes, and custom fields — use the REST API v1 Tasks endpoints. v2 is read-only for tasks.
Prompt an agent
POST /promptAgent — send a single prompt to a workspace agent and get a synchronous text response. This capability is v2-only.
Response:
To review past conversations, use POST /listConversations ({ agentId, limit?, page? }) and POST /getConversation ({ agentId, convoId }).
Manage agents
POST /listAgents
{ spaceId, filterBy? }
POST /getAgent
{ agentId }
POST /createAgent
{ folderId, name, data }
POST /updateAgent
{ agentId, name?, data? }
POST /deleteAgent
{ agentId }
POST /generateAgent
{ folderId, text } — generate an agent from a description
POST /enablePublicAgentAccess
{ agentId } → { ok, publicUrl }
Attach knowledge to an agent
POST /addKnowledgeProject grounds an agent in a project. (removeKnowledgeProject, addKnowledgeMedia, removeKnowledgeMedia mirror it.)
Export / import a bundle
POST /exportBundle returns a portable Genesis app bundle; POST /importBundle installs one. See Bundles & App Kits for the full schema and the binary .tsk variants.
Full operation list
Workspaces & structure: listSpaces, listFolders, listMyProjects, listTemplates, listMedia. Projects: listProjects, getProject, createProject, createProjectFromTemplate, copyProject, completeProject, restoreProject, listTasks, listBlocks, listFields, listProjectMembers, getShareLink, enableShareLink. Agents: listAgents, getAgent, createAgent, updateAgent, deleteAgent, promptAgent, generateAgent, listConversations, getConversation, addKnowledgeProject, removeKnowledgeProject, addKnowledgeMedia, removeKnowledgeMedia, enablePublicAgentAccess, getPublicAgent, updatePublicAgent. Media: uploadMedia, getMedia, deleteMedia, plus GET /media/{mediaId}/content and GET /media/spaces/{spaceId}/content for downloads. Bundles: exportBundle, importBundle, importBundleZip, plus GET /bundles/{spaceId}/export/zip.
The authoritative, always-current list is the live v2 spec.
Pagination
List operations that can return many rows use cursor pagination with after / before (tasks, blocks) or page / limit (members, conversations, projects).
Rate Limits
Requests are rate-limited per token.
429 Too Many Requests
Rate limit exceeded
Respect Retry-After, back off exponentially
Error Handling
All error responses share this shape:
400
Bad request
No
Check the request body
401
Invalid / missing token
No
Regenerate or refresh the token
402
Out of credits
No
Top up or switch to a cheaper model
403
Insufficient permission
No
Use a token with access to the resource
404
Not found
No
Verify the ID and your workspace access
429
Rate limited
Yes
Exponential backoff
5xx
Server error
Yes
Retry up to 3 times with backoff
Never retry on 400, 401, 403, or 404. Fix the request first.
Security Best Practices
Never commit tokens. Use environment variables or a secret manager.
Use OAuth, not personal tokens, for multi-user applications.
Rotate personal tokens periodically; you can hold up to 5 at a time.
Encrypt refresh tokens at rest — they're long-lived.
Related
REST API v1 ReferenceAuthenticationWebhooksBundles & App KitsLast updated
Was this helpful?