Action API
POST/addKnowledgeProjectAPI v2

Add knowledge project

3 min readAgentsView as Markdown

POST /addKnowledgeProject

Add a project as knowledge source to an agent

Base URL: https://www.taskade.com/api/v2

Authentication

Send a personal access token or an OAuth 2.0 access token as a bearer token. Create a personal access token at taskade.com/settings/api.

Http
Authorization: Bearer tskdp_your_token_here

Request body

application/json

Field Type Required Description
agentId string Yes —
projectId string Yes —

Example request

Bash
curl -X POST "https://www.taskade.com/api/v2/addKnowledgeProject" \
  -H "Authorization: Bearer $TASKADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"agentId":"<agentId>","projectId":"<projectId>"}'

Responses

200 — Default response

Field Type Required Description
ok boolean Yes —
item object Yes —
item.id string Yes —
item.name string Yes —
item.space_id string Yes —
item.data object Yes —
item.data.commands object[] Yes —
item.data.commands[].name string Yes Human-readable name of the command in title case. This should probably be a verb.
item.data.commands[].description string No Short summary for discovery (e.g. progressive disclosure / skill listing). The full instruction stays in prompt.
item.data.commands[].prompt string Yes Tell the agent what this command will do. It should be positioned as a direct instruction to the agent. At least 30 words.
item.data.commands[].id string Yes ID based on the name in snake case.
item.data.commands[].mode string No Allowed values: default, plan-and-execute-v1, plan-and-execute-v2.
item.data.description string No Role and purpose of agent, positioned as a direct instruction to the agent. Example: "You are a doctor that helps save lives.". At least 100 words.
item.data.tone string No Allowed values: authoritative, clinical, cold, confident, cynical, emotional, empathetic, formal, friendly, humourous, informal, ironic, optimistic, pessimistic, playful, sarcastic, serious, sympathetic, tentative, warm, creative, inspiring, casual.
item.data.avatar object No —
item.data.avatar.type string Yes Allowed values: emoji.
item.data.avatar.data object Yes —
item.data.avatar.data.value string Yes Pick the most suitable emoji for this agent.
item.data.knowledgeEnabled boolean No —
item.data.language string No The language of the agent, e.g. en-US, zh-Hans
item.data.inputPlaceholder string No —

A nested field marked Yes is required whenever its parent object is present.

Errors

Errors return an ok: false envelope. Rate limiting returns 429 with x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset headers. x-rate-limit-reset is the number of seconds until the window reopens. Retry-After is not sent, so schedule retries from x-rate-limit-reset; retrying sooner will fail again.

Json
{ "ok": false, "message": "Unauthorized", "code": "UNAUTHORIZED" }

Rate limits for this version: enforced per endpoint; ceilings are not published and can change without notice. A 429 response carries x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset (seconds until the window reopens). Back off from those headers rather than hardcoding numbers. If you need sustained throughput, prefer batching (operations like /createTask accept arrays) over tightening polling loops. See Rate limits.