The@taskade/sdkpackage is in preview and not yet published to the public npm registry. Until it ships, call the API directly over HTTP — every Taskade endpoint is a plain HTTPS request and works from any language or runtime. This page shows both.
Call the API today (no SDK required)
Authenticate with a personal access token and hit either API directly.
REST API v1
const token = process.env.TASKADE_TOKEN!;
// List your projects (RESTful v1)
const res = await fetch("https://www.taskade.com/api/v1/me/projects", {
headers: { Authorization: `Bearer ${token}` },
});
const { items } = await res.json();
Action API v2
const token = process.env.TASKADE_TOKEN!;
// Prompt an agent (action-based v2 — every call is a POST)
const res = await fetch("https://www.taskade.com/api/v2/promptAgent", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ spaceId, agentId, prompt: "Summarize standup notes" }),
});
const { summary } = await res.json();
A tiny typed wrapper is all most integrations need:
async function taskade(operation: string, body: unknown) {
const res = await fetch(`https://www.taskade.com/api/v2/${operation}`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TASKADE_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (!res.ok) throw new Error(`${operation} failed: ${res.status}`);
return res.json();
}
const { items } = await taskade("listSpaces", {});
cURL & Python
cURL
export TASKADE_TOKEN=YOUR_TOKEN
# List your projects (REST API v1)
curl -s \
-H "Authorization: Bearer $TASKADE_TOKEN" \
"https://www.taskade.com/api/v1/me/projects"
# Prompt an agent (Action API v2)
curl -s -X POST \
-H "Authorization: Bearer $TASKADE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"spaceId":"SPACE_ID","agentId":"AGENT_ID","prompt":"Summarize standup notes"}' \
"https://www.taskade.com/api/v2/promptAgent"
Python
import os
import requests
token = os.environ["TASKADE_TOKEN"]
headers = {"Authorization": f"Bearer {token}"}
# List your projects (REST API v1)
items = requests.get(
"https://www.taskade.com/api/v1/me/projects",
headers=headers,
).json()["items"]
# Prompt an agent (Action API v2)
result = requests.post(
"https://www.taskade.com/api/v2/promptAgent",
headers=headers,
json={
"spaceId": "SPACE_ID",
"agentId": "AGENT_ID",
"prompt": "Summarize standup notes",
},
).json()
What the SDK will look like
@taskade/sdk is a generated client for the Action API v2. When it's published you'll construct an HttpClient (which carries your token) and a TaskadePublicApi instance whose methods map 1:1 to the v2 operations:
import { HttpClient, TaskadePublicApi } from "@taskade/sdk";
const http = new HttpClient({
baseUrl: "https://www.taskade.com/api/v2",
securityWorker: () => ({
headers: { Authorization: `Bearer ${process.env.TASKADE_TOKEN}` },
}),
});
const taskade = new TaskadePublicApi(http);
const { data } = await taskade.promptAgent({ spaceId, agentId, prompt: "Hi" });
// data is the response body: { ok: true, summary: "..." }
Method names match the v2 operations exactly —listSpaces,createProject,promptAgent,exportBundle, and so on. See the Action API v2 Reference for the full list and request shapes.
Resources
| Resource | Description |
|---|---|
| REST API v1 Reference | Complete RESTful endpoint docs (full task CRUD) |
| Action API v2 Reference | The action-based API the SDK wraps |
| Authentication | Personal access tokens and OAuth 2.0 |
| Workspace MCP | Connect AI tools to your workspace |