CONNECT APP
Build with Wrike
Productivity
- OAuth
MCP
Give your agent Wrike tools
Every Wrike action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Wrike account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "wrike",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Create Comment:
const result = await mcp.callTool({
name: "wrike-create-comment",
arguments: {
taskId: "Task ID",
text: "Text",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "wrike",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Create Comment:
result = await session.call_tool("wrike-create-comment", {
"taskId": "Task ID",
"text": "Text",
})API PROXY
Call the Wrike API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Wrike API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.example.com/v1/me",
})
// Any allowed Wrike endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.example.com/v1/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvbWU?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Wrike actions from your backend
Connect a user's Wrike account once, then run Create Comment on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "wrike-create-comment",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
wrike: { authProvisionId: "apn_xxxxxxx" },
taskId: "Task ID",
text: "Text",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="wrike-create-comment",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"wrike": {"authProvisionId": "apn_xxxxxxx"},
"taskId": "Task ID",
"text": "Text",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "wrike-create-comment",
"configured_props": {
"wrike": { "authProvisionId": "apn_xxxxxxx" },
"taskId": "Task ID",
"text": "Text"
}
}'TOOLS
Wrike actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Create Comment
actionPost a comment on a Wrike task via POST /tasks/{taskId}/comments. Use Find Tasks or Get Task to obtain the taskId. See the documentationWritev0.0.2 -
Create Folder
actionCreate a folder (or a project, by supplying the optional project object) under a parent folder via POST /folders/{folderId}/folders. Supplying the 'project' prop switches creation into project mode; there is no separate create-project action. Use List Folder ID Options or List Space ID Options to obtain a parent folder ID. See the documentationWritev0.0.2 -
Find Tasks
actionQuery tasks within a Wrike folder or project via GET /folders/{folderId}/tasks, with optional status, due-date, importance, and assignee filters. Answers questions like 'what's overdue in the Marketing project?'. Use List Folder ID Options to obtain a folderId. Use the returned task IDs with Get Task or Update Task. See the documentationRead-onlyv0.0.2 -
Get Task
actionRetrieve the full details of one or more Wrike tasks (title, status, importance, dates, responsibles, custom fields) via GET /tasks/{taskIds}. Use this when you already know a task ID and need its complete record. Use Find Tasks to discover task IDs within a folder first. Provide the taskId as returned by Find Tasks. See the documentationRead-onlyv0.0.2 -
List Contact ID Options
actionRetrieves available contacts so callers can copy an ID into free-form responsibles or contactId props in other actions. See the documentationRead-onlyv0.1.1 -
List Custom Fields Keys Options
actionRetrieves available custom fields so callers can copy field IDs into free-form customFields props in other actions. See the documentationRead-onlyv0.1.1 -
List Folder ID Options
actionRetrieves available folders so callers can copy an ID into another action's free-form folderId prop. See the documentationRead-onlyv1.0.1 -
List Space ID Options
actionRetrieves available spaces so callers can copy an ID into another action's free-form spaceId or folderId prop. See the documentationRead-onlyv0.1.1 -
New Task
actionCreate a Wrike task under a specified folder ID. See the documentationWritev0.3.4 -
Update Folder
actionUpdate a folder or project's metadata via PUT /folders/{folderId}. Supply the optional 'project' prop to set project attributes (or null to convert a project back to a folder); there is no separate update-project action. Use List Folder ID Options to obtain the folderId. See the documentationWritev0.0.2 -
Update Task
actionUpdate any combination of a Wrike task's fields (title, description, status, importance, assignees, dates, custom fields) in a single call via PUT /tasks/{taskId}. Supersedes the former Update Task Custom Fields action. Use Find Tasks or Get Task to obtain the taskId; use List Contact ID Options for assignee IDs and List Custom Fields Keys Options for custom field IDs. See the documentationWritev0.0.2 -
Update Task Custom Fields
actionUpdate the custom fields for a task. See the documentationWritev0.0.4
MULTI-APP
Use Wrike with other popular apps
Most products don't stop at one integration. Pair Wrike with the other apps your users rely on, and ship use cases that span both.
- App slug
- wrike
- Authentication
- OAuth
- Categories
- Productivity
- Actions
- 12
- Triggers
- 3
- API proxy
- Available