Wrike
Wrike API 与托管 OAuth 集成。管理任务、文件夹、项目、空间和团队协作。当用户想要在 Wrike 中管理项目工作、跟踪任务、处理时间日志或访问团队资源时,请使用此技能。对于其他第三方应用程序,请使用 api-gateway 技能 (https://clawhub.ai/byungkyu/api-gateway)。 需要网络访问和有效的 Maton API 密钥。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:byungkyu~wrike-apicURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Abyungkyu~wrike-api/file -o wrike-api.mdGit 仓库获取源码
git clone https://github.com/openclaw/skills/commit/090b2195e8e3877d24daed112413c90c9e205d70## 概述(中文)
Wrike API 与托管 OAuth 集成。管理任务、文件夹、项目、空间和团队协作。当用户想要在 Wrike 中管理项目工作、跟踪任务、处理时间日志或访问团队资源时,请使用此技能。对于其他第三方应用程序,请使用 api-gateway 技能 (https://clawhub.ai/byungkyu/api-gateway)。
需要网络访问和有效的 Maton API 密钥。
## 原文
# Wrike
Access the Wrike API v4 with managed OAuth authentication. Manage tasks, folders, projects, spaces, groups, comments, attachments, timelogs, workflows, and more.
## Quick Start
```bash
# List all tasks
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/wrike/api/v4/tasks')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```
## Base URL
```
https://gateway.maton.ai/wrike/api/v4/{endpoint-path}
```
Replace `{endpoint-path}` with the actual Wrike API endpoint path. The gateway proxies requests to `www.wrike.com/api/v4` and automatically injects your OAuth token.
## Authentication
All requests require the Maton API key in the Authorization header:
```
Authorization: Bearer $MATON_API_KEY
```
**Environment Variable:** Set your API key as `MATON_API_KEY`:
```bash
export MATON_API_KEY="YOUR_API_KEY"
```
### Getting Your API Key
1. Sign in or create an account at [maton.ai](https://maton.ai)
2. Go to [maton.ai/settings](https://maton.ai/settings)
3. Copy your API key
## Connection Management
Manage your Wrike OAuth connections at `https://ctrl.maton.ai`.
### List Connections
```bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=wrike&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```
### Create Connection
```bash
python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'wrike'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```
**Response:**
```json
{
"connection_id": "32c76f2f-54a0-47ca-b4d2-8e99ad852210",
"status": "PENDING",
"url": "https://connect.maton.ai/?session_token=...",
"app": "wrike"
}
```
Open the returned `url` in a browser to complete OAuth authorization.
### Delete Connection
```bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
urllib.request.urlopen(req)
print("Deleted")
EOF
```
### Specifying Connection
If you have multiple Wrike connections, specify which one to use with the `Maton-Connection` header:
```python
req.add_header('Maton-Connection', '{connection_id}')
```
If omitted, the gateway uses the default (oldest) active connection.
## API Reference
### Spaces
#### List Spaces
```bash
GET /wrike/api/v4/spaces
```
**Response:**
```json
{
"kind": "spaces",
"data": [
{
"id": "MQAAAAEFzzdO",
"title": "First space",
"avatarUrl": "https://www.wrike.com/static/spaceicons2/v3/6/6-planet.png",
"accessType": "Public",
"archived": false,
"defaultProjectWorkflowId": "IEAGXR2EK77ZIOF4",
"defaultTaskWorkflowId": "IEAGXR2EK4G2YNU4"
}
]
}
```
#### Get Space
```bash
GET /wrike/api/v4/spaces/{spaceId}
```
#### Create Space
```bash
POST /wrike/api/v4/spaces
Content-Type: application/json
{
"title": "New Space"
}
```
#### Update Space
```bash
PUT /wrike/api/v4/spaces/{spaceId}
Content-Type: application/json
{
"title": "Updated Space Name"
}
```
#### Delete Space
```bash
DELETE /wrike/api/v4/spaces/{spaceId}
```
### Folders & Projects
Folders and projects are the main ways to organize work in Wrike. Projects are folders with additional properties (owners, dates, status).
#### Get Folder Tree
```bash
GET /wrike/api/v4/folders
```
**Response:**
```json
{
"kind": "folderTree",
"data": [
{
"id": "IEAGXR2EI7777777",
"title": "Root",
"childIds": ["MQAAAAEFzzdO", "MQAAAAEFzzRZ"],
"scope": "WsRoot"
},
{
"id": "MQAAAAEFzzdV",
"title": "My Project",
"childIds": [],
"scope": "WsFolder",
"project": {
"authorId": "KUAXHKXS",
"ownerIds": ["KUAXHKXS"],
"customStatusId": "IEAGXR2EJMG2YNA4",
"createdDate": "2026-03-09T08:15:07Z"
}
}
]
}
```
#### Get Folders in Space
```bash
GET /wrike/api/v4/spaces/{spaceId}/folders
```
#### Get Folder
```bash
GET /wrike/api/v4/folders/{folderId}
GET /wrike/api/v4/folders/{folderId},{folderId},... (up to 100 IDs)
```
#### Get Subfolders
```bash
GET /wrike/api/v4/folders/{folderId}/folders
```
#### Create Folder
```bash
POST /wrike/api/v4/folders/{parentFolderId}/folders
Content-Type: application/json
{
"title": "New Folder"
}
```
#### Update Folder
```bash
PUT /wrike/api/v4/folders/{folderId}
Content-Type: application/json
{
"title": "Updated Folder Name"
}
```
#### Delete Folder
```bash
DELETE /wrike/api/v4/folders/{folderId}
```
#### Copy Folder
```bash
POST /wrike/api/v4/copy_folder/{folderId}
Content-Type: application/json
{
"parent": "{destinationFolderId}",
"title": "Copy of Folder"
}
```
### Tasks
#### List Tasks
```bash
GET /wrike/api/v4/tasks
```
**Response:**
```json
{
"kind": "tasks",
"data": [
{
"id": "MAAAAAEFzzde",
"accountId": "IEAGXR2E",
"title": "First task",
"status": "Active",
"importance": "Normal",
"createdDate": "2026-03-09T08:15:07Z",
"updatedDate": "2026-03-10T07:07:57Z",
"dates": {
"type": "Planned",
"duration": 2400,
"start": "2026-03-05T09:00:00",
"due": "2026-03-11T17:00:00"
},
"scope": "WsTask",
"customStatusId": "IEAGXR2EJMG2YNV2",
"permalink": "https://www.wrike.com/open.htm?id=4392433502"
}
]
}
```
#### List Tasks in Folder
```bash
GET /wrike/api/v4/folders/{folderId}/tasks
```
#### List Tasks in Space
```bash
GET /wrike/api/v4/spaces/{spaceId}/tasks
```
#### Get Task
```bash
GET /wrike/api/v4/tasks/{taskId}
GET /wrike/api/v4/tasks/{taskId},{taskId},... (up to 100 IDs)
```
#### Create Task
```bash
POST /wrike/api/v4/folders/{folderId}/tasks
Content-Type: application/json
{
"title": "New Task",
"description": "Task description",
"importance": "Normal",
"dates": {
"start": "2026-03-15",
"due": "2026-03-20"
}
}
```
**Response:**
```json
{
"kind": "tasks",
"data": [
{
"id": "MAAAAAEF7ufN",
"accountId": "IEAGXR2E",
"title": "New Task",
"description": "Task description",
"status": "Active",
"importance": "Normal",
"createdDate": "2026-03-10T07:16:07Z",
"scope": "WsTask",
"customStatusId": "IEAGXR2EJMG2YNU4",
"permalink": "https://www.wrike.com/open.htm?id=4394510285"
}
]
}
```
#### Update Task
```bash
PUT /wrike/api/v4/tasks/{taskId}
Content-Type: application/json
{
"title": "Updated Task Title",
"importance": "High"
}
```
#### Update Multiple Tasks
```bash
PUT /wrike/api/v4/tasks/{taskId},{taskId},... (up to 100 IDs)
Content-Type: application/json
{
"status": "Completed"
}
```
#### Delete Task
```bash
DELETE /wrike/api/v4/tasks/{taskId}
```
### Comments
#### List Comments
```bash
GET /wrike/api/v4/comments
GET /wrike/api/v4/tasks/{taskId}/comments
GET /wrike/api/v4/folders/{folderId}/comments
GET /wrike/api/v4/comments/{commentId},{commentId},... (up to 100 IDs)
```
**Response:**
```json
{
"kind": "comments",
"data": [
{
"id": "IEAGXR2EIMBGYQMR",
"authorId": "KUAXI4LC",
"text": "This is a comment",
"updatedDate": "2026-03-10T07:07:57Z",
"createdDate": "2026-03-10T07:07:57Z",
"taskId": "MAAAAAEFzzde"
}
]