数据分析

Wrike

试用

通过 Maton 网关和托管 OAuth,管理 Wrike 的任务、文件夹、项目、空间、评论、附件与群组。

它能做什么

通过 Maton 代理的端点访问 Wrike API v4,使用托管 OAuth 认证。可对任务、文件夹、项目、空间、评论、附件、联系人和群组进行增删改查,支持列出与下载附件、管理工作流,以及处理时间日志。所有写操作执行前都需要用户明确确认目标资源与预期效果。管理类操作(用户、邀请、访问角色、审计日志、数据导出)涉及账号治理或敏感数据,仅在用户明确请求合规审计或完整数据导出时才调用。认证使用 Maton API Key 放在 Authorization 头中,多个 Wrike 账号可通过 Maton-Connection 头指定目标连接。

什么时候用它

  • 列出并更新 Wrike 项目中的任务
  • 在空间下创建文件夹、项目并分配工作
  • 读取或发表评论、下载任务附件
  • 管理 Wrike 群组与联系人元数据

技能文档

Wrike

Access the Wrike API v4 with managed OAuth authentication. Manage tasks, folders, projects, spaces, groups, comments, attachments, timelogs, workflows, and more.

Quick Start

# List all tasks
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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://api.maton.ai/wrike/api/v4/{endpoint-path}

Maton 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:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management (Maton Platform)

The following endpoints are Maton platform operations for managing the OAuth connection to Wrike — they are not part of the Wrike API itself. Only the endpoints listed in the API Reference section below are proxied to Wrike.

List Connections

python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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

python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'wrike'}).encode()
req = urllib.request.Request('https://api.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:

{
  "connection_id": "{connection_id}",
  "status": "PENDING",
  "url": "https://connect.maton.ai/?session_token=...",
  "app": "wrike"
}

Open the returned url in a browser to complete OAuth authorization.

Delete Connection

python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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:

req.add_header('Maton-Connection', '{connection_id}')

If you have multiple connections, always include this header to ensure requests go to the intended account.

Security & Permissions

  • Access is scoped to tasks, folders, projects, spaces, team collaboration, and administrative functions (users, invitations, access roles, audit log, data export) within the connected Wrike account.
  • All write operations require explicit user approval. Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.
  • Administrative operations (users, invitations, access roles) affect account governance and membership. Always confirm the scope and target with the user before invoking.
  • Audit log exposes sensitive telemetry (login events, IP addresses, user emails). Only access when the user explicitly requests operational or compliance auditing.
  • Data export enables bulk extraction of organizational data. Only invoke when the user explicitly requests a full data export — confirm the intent and scope before triggering.

API Reference

Spaces

List Spaces

GET /wrike/api/v4/spaces

Response:

{
  "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

GET /wrike/api/v4/spaces/{spaceId}

Create Space

POST /wrike/api/v4/spaces
Content-Type: application/json

{
  "title": "New Space"
}

Update Space

PUT /wrike/api/v4/spaces/{spaceId}
Content-Type: application/json

{
  "title": "Updated Space Name"
}

Delete Space

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

GET /wrike/api/v4/folders

Response:

{
  "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

GET /wrike/api/v4/spaces/{spaceId}/folders

Get Folder

GET /wrike/api/v4/folders/{folderId}
GET /wrike/api/v4/folders/{folderId},{folderId},... (up to 100 IDs)

Get Subfolders

GET /wrike/api/v4/folders/{folderId}/folders

Create Folder

POST /wrike/api/v4/folders/{parentFolderId}/folders
Content-Type: application/json

{
  "title": "New Folder"
}

Update Folder

PUT /wrike/api/v4/folders/{folderId}
Content-Type: application/json

{
  "title": "Updated Folder Name"
}

Delete Folder

DELETE /wrike/api/v4/folders/{folderId}

Copy Folder

POST /wrike/api/v4/copy_folder/{folderId}
Content-Type: application/json

{
  "parent": "{destinationFolderId}",
  "title": "Copy of Folder"
}

Tasks

List Tasks

GET /wrike/api/v4/tasks

Response:

{
  "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

GET /wrike/api/v4/folders/{folderId}/tasks

List Tasks in Space

GET /wrike/api/v4/spaces/{spaceId}/tasks

Get Task

GET /wrike/api/v4/tasks/{taskId}
GET /wrike/api/v4/tasks/{taskId},{taskId},... (up to 100 IDs)

Create Task

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:

{
  "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

PUT /wrike/api/v4/tasks/{taskId}
Content-Type: application/json

{
  "title": "Updated Task Title",
  "importance": "High"
}

Update Multiple Tasks

PUT /wrike/api/v4/tasks/{taskId},{taskId},... (up to 100 IDs)
Content-Type: application/json

{
  "status": "Completed"
}

Delete Task

DELETE /wrike/api/v4/tasks/{taskId}

Comments

List Comments

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:

{
  "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"
    }
  ]
}

Create Comment

POST /wrike/api/v4/tasks/{taskId}/comments
Content-Type: application/json

{
  "text": "New comment text"
}

Update Comment

PUT /wrike/api/v4/comments/{commentId}
Content-Type: application/json

{
  "text": "Updated comment text"
}

Delete Comment

DELETE /wrike/api/v4/comments/{commentId}

Attachments

List Attachments

GET /wrike/api/v4/attachments
GET /wrike/api/v4/tasks/{taskId}/attachments
GET /wrike/api/v4/folders/{folderId}/attachments
GET /wrike/api/v4/attachments/{attachmentId},{attachmentId},... (up to 100 IDs)

Response:

{
  "kind": "attachments",
  "data": [
    {
      "id": "IEAGXR2EIYUN54ZV",
      "authorId": "KUAXHKXS",
      "name": "document.pdf",
      "createdDate": "2026-03-09T08:15:08Z",
      "version": 1,
      "type": "Wrike",
      "contentType": "application/pdf",
      "size": 117940,
      "taskId": "MAAAAAEFzzde"
    }
  ]
}

Download Attachment

GET /wrike/api/v4/attachments/{attachmentId}/download

Get Attachment Preview

GET /wrike/api/v4/attachments/{attachmentId}/preview

Get Attachment Access URL

GET /wrike/api/v4/attachments/{attachmentId}/url

Update Attachment

PUT /wrike/api/v4/attachments/{attachmentId}

Delete Attachment

DELETE /wrike/api/v4/attachments/{attachmentId}

Contacts

Contacts represent users and groups in Wrike.

List Contacts

GET /wrike/api/v4/contacts
GET /wrike/api/v4/contacts/{contactId},{contactId},... (up to 100 IDs)

Response:

{
  "kind": "contacts",
  "data": [
    {
      "id": "KUAXHKXS",
      "firstName": "Chris",
      "lastName": "",
      "type": "Person",
      "profiles": [
        {
          "accountId": "IEAGXR2E",
          "email": "user@example.com",
          "role": "User",
          "external": false,
          "admin": false,
          "owner": true,
          "active": true
        }
      ],
      "timezone": "US/Pacific",
      "locale": "en",
      "deleted": false,
      "me": true
    }
  ]
}

Update Contact

PUT /wrike/api/v4/contacts/{contactId}
Content-Type: application/json

{
  "metadata": [{"key": "customKey", "value": "customValue"}]
}

Groups

List Groups

GET /wrike/api/v4/groups
GET /wrike/api/v4/groups/{groupId}

Response:

{
  "kind": "groups",
  "data": [
    {
      "id": "KX7XIKVN",
      "accountId": "IEAGXR2E",
      "title": "My Team",
      "memberIds": ["KUAXHKXS"],
      "childIds": [],
      "parentIds": [],
      "myTeam": true
    }
  ]
}

Create Group

POST /wrike/api/v4/groups
Content-Type: application/json

{
  "title": "New Group",
  "members": ["KUAXHKXS"]
}

Update Group

PUT /wrike/api/v4/groups/{groupId}
Content-Type: application/json

{
  "title": "Updated Group Name"
}

Delete Group

DELETE /wrike/api/v4/groups/{groupId}

Workflows

List Workflows

GET /wrike/api/v4/workflows
GET /wrike/api/v4/spaces/{spaceId}/workflows

Response:

{
  "kind": "workflows",
  "data": [
    {
      "id": "IEAGXR2EK77ZIOF4",
      "name": "Default Workflow",
      "standard": true,
      "hidden": false,
      "customStatuses": [
        {
          "id": "IEAGXR2EJMAAAAAA",
          "name": "New",
          "color": "Blue",
          "group": "Active",
          "hidden": false
        },
        {
          "id": "IEAGXR2EJMG2YNA4",
          "name": "In Progress",
          "color": "Turquoise",
          "group": "Active",
          "hidden": false
        },
        {
          "id": "IEAGXR2EJMAAAAAB",
          "name": "Completed",
          "color": "Green",
          "group": "Completed",
          "hidden": false
        }
      ]
    }
  ]
}

Create Workflow

POST /wrike/api/v4/workflows
Content-Type: application/json

{
  "name": "Custom Workflow"
}

Update Workflow

PUT /wrike/api/v4/workflows/{workflowId}
Content-Type: application/json

{
  "name": "Updated Workflow Name"
}

Custom Fields

List Custom Fields

GET /wrike/api/v4/customfields
GET /wrike/api/v4/spaces/{spaceId}/customfields
GET /wrike/api/v4/customfields/{customfieldId},{customfieldId},... (up to 100 IDs)

Response:

{
  "kind": "customfields",
  "data": [
    {
      "id": "IEAGXR2EJUALBS23",
      "accountId": "IEAGXR2E",
      "title": "Impact",
      "type": "DropDown",
      "spaceId": "MQAAAAEFzzdO",
      "settings": {
        "values": ["Low", "Medium", "High"],
        "options": [
          {"value": "Low", "color": "Green"},
          {"value": "Medium", "color": "Yellow"},
          {"value": "High", "color": "Red"}
        ]
      }
    }
  ]
}

Create Custom Field

POST /wrike/api/v4/customfields
Content-Type: application/json

{
  "title": "Priority",
  "type": "DropDown",
  "settings": {
    "values": ["Low", "Medium", "High"]
  }
}

Update Custom Field

PUT /wrike/api/v4/customfields/{customfieldId}
Content-Type: application/json

{
  "title": "Updated Field Name"
}

Timelogs

List Timelogs

GET /wrike/api/v4/timelogs
GET /wrike/api/v4/tasks/{taskId}/timelogs
GET /wrike/api/v4/folders/{folderId}/timelogs
GET /wrike/api/v4/contacts/{contactId}/timelogs
GET /wrike/api/v4/timelogs/{timelogId},{timelogId},... (up to 100 IDs)

Create Timelog

POST /wrike/api/v4/tasks/{taskId}/timelogs
Content-Type: application/json

{
  "hours": 2,
  "trackedDate": "2026-03-10",
  "comment": "Worked on implementation"
}

Update Timelog

PUT /wrike/api/v4/timelogs/{timelogId}
Content-Type: application/json

{
  "hours": 3,
  "comment": "Updated time entry"
}

Delete Timelog

DELETE /wrike/api/v4/timelogs/{timelogId}

Timelog Categories

GET /wrike/api/v4/timelog_categories

Dependencies

List Dependencies

GET /wrike/api/v4/tasks/{taskId}/dependencies
GET /wrike/api/v4/dependencies/{dependencyId},{dependencyId},... (up to 100 IDs)

Response:

{
  "kind": "dependencies",
  "data": [
    {
      "id": "MgAAAAEFzzdeMwAAAAEFzzdb",
      "predecessorId": "MAAAAAEFzzde",
      "successorId": "MAAAAAEFzzdb",
      "relationType": "FinishToStart",
      "lagTime": 0
    }
  ]
}

Create Dependency

POST /wrike/api/v4/tasks/{taskId}/dependencies
Content-Type: application/json

{
  "predecessorId": "{taskId}",
  "relationType": "FinishToStart"
}

Update Dependency

PUT /wrike/api/v4/dependencies/{dependencyId}
Content-Type: application/json

{
  "relationType": "StartToStart"
}

Delete Dependency

DELETE /wrike/api/v4/dependencies/{dependencyId}

Approvals

List Approvals

GET /wrike/api/v4/approvals
GET /wrike/api/v4/tasks/{taskId}/approvals
GET /wrike/api/v4/folders/{folderId}/approvals
GET /wrike/api/v4/approvals/{approvalId},{approvalId},... (up to 100 IDs)

Response:

{
  "kind": "approvals",
  "data": [
    {
      "id": "IEAGXR2EMEB33OQA",
      "taskId": "MAAAAAEFzzde",
      "authorId": "KUAXHKXS",
      "dueDate": "2026-03-12",
      "decisions": [
        {
          "approverId": "KUAXHKXS",
          "status": "Pending",
          "updatedDate": "2026-03-09T08:15:08Z"
        }
      ],
      "status": "Pending",
      "finished": false
    }
  ]
}

Create Approval

POST /wrike/api/v4/tasks/{taskId}/approvals
Content-Type: application/json

{
  "approvers": ["KUAXHKXS"],
  "dueDate": "2026-03-15"
}

Update Approval

PUT /wrike/api/v4/approvals/{approvalId}

Cancel Approval

DELETE /wrike/api/v4/approvals/{approvalId}

Invitations

Admin scope. Invitations affect account membership and governance. Creating an invitation grants a new user access to the Wrike account. Confirm the email, role, and intent with the user before executing.

List Invitations

GET /wrike/api/v4/invitations

Response:

{
  "kind": "invitations",
  "data": [
    {
      "id": "IEAGXR2EJEAVFLCG",
      "accountId": "IEAGXR2E",
      "firstName": "John",
      "email": "john@example.com",
      "status": "Accepted",
      "inviterUserId": "KUAXHKXS",
      "invitationDate": "2026-03-09T08:14:04Z",
      "role": "User",
      "external": false
    }
  ]
}

Create Invitation

POST /wrike/api/v4/invitations
Content-Type: application/json

{
  "email": "newuser@example.com",
  "firstName": "New",
  "lastName": "User",
  "role": "User"
}

Update Invitation

PUT /wrike/api/v4/invitations/{invitationId}

Delete Invitation

DELETE /wrike/api/v4/invitations/{invitationId}

Work Schedules

List Work Schedules

GET /wrike/api/v4/workschedules
GET /wrike/api/v4/workschedules/{workscheduleId}

Response:

{
  "kind": "workschedules",
  "data": [
    {
      "id": "IEAGXR2EML7ZIOF4",
      "scheduleType": "Default",
      "title": "Default Schedule",
      "workweek": [
        {
          "workDays": ["Mon", "Tue", "Wed", "Thu", "Fri"],
          "capacityMinutes": 480
        }
      ]
    }
  ]
}

Create Work Schedule

POST /wrike/api/v4/workschedules
Content-Type: application/json

{
  "title": "Custom Schedule"
}

Update Work Schedule

PUT /wrike/api/v4/workschedules/{workscheduleId}

Delete Work Schedule

DELETE /wrike/api/v4/workschedules/{workscheduleId}

Users (Admin)

Admin scope. User management operations affect account membership and access. Confirm the target user and intended change with the user before executing.

Get User

GET /wrike/api/v4/users/{userId}

Response:

{
  "kind": "users",
  "data": [
    {
      "id": "KUAXHKXS",
      "firstName": "Chris",
      "lastName": "",
      "type": "Person",
      "profiles": [
        {
          "accountId": "IEAGXR2E",
          "email": "user@example.com",
          "role": "User",
          "external": false,
          "admin": false,
          "owner": true,
          "active": true
        }
      ],
      "timezone": "US/Pacific",
      "locale": "en",
      "deleted": false,
      "me": true,
      "title": "Engineer",
      "companyName": "Company",
      "primaryEmail": "user@example.com",
      "userTypeId": "IEAGXR2ENH777777"
    }
  ]
}

Update User

PUT /wrike/api/v4/users/{userId}
PUT /wrike/api/v4/users/{userId},{userId},... (up to 100 IDs)

Access Roles (Admin)

Admin scope. Access roles define permission levels across the account. Modifying roles changes what users can do across all shared resources.

List Access Roles

GET /wrike/api/v4/access_roles

Response:

{
  "kind": "accessRoles",
  "data": [
    {
      "id": "IEAGXR2END777777",
      "title": "Full",
      "description": "Can edit"
    },
    {
      "id": "IEAGXR2END777776",
      "title": "Editor",
      "description": "Can edit, but can't share or delete"
    },
    {
      "id": "IEAGXR2END777775",
      "title": "Limited",
      "description": "Can comment, change statuses, attach files, and start approvals"
    },
    {
      "id": "IEAGXR2END777774",
      "title": "Read Only",
      "description": "Can view"
    }
  ]
}

Audit Log (Admin)

Privacy-sensitive. The audit log exposes login events, IP addresses, user emails, and operational history. Only access when the user explicitly requests compliance or security auditing. Do not retrieve proactively.

Get Audit Log

GET /wrike/api/v4/audit_log

Response:

{
  "kind": "auditLog",
  "data": [
    {
      "id": "IEAGXR2ENQAAAAABMUI3U3A",
      "operation": "UserLoggedIn",
      "userId": "KUAXHKXS",
      "userEmail": "user@example.com",
      "eventDate": "2026-03-10T07:24:24Z",
      "ipAddress": "35.84.133.252",
      "objectType": "User",
      "objectName": "user@example.com",
      "objectId": "KUAXHKXS",
      "details": {
        "Login Type": "Oauth2",
        "User Agent": "Nango"
      }
    }
  ]
}

Common Operations:

  • UserLoggedIn - User login events
  • Oauth2AccessGranted - OAuth authorization events
  • TaskCreated, TaskDeleted, TaskModified - Task operations
  • FolderCreated, FolderDeleted - Folder operations
  • CommentAdded - Comment events

Data Export (Admin)

Bulk data extraction. Data export generates a full organizational export (tasks, projects, users, timelogs, etc.). This enables large-scale data extraction well beyond normal task queries. Only invoke when the user explicitly requests a data export and confirms the intent. The first GET request triggers export generation automatically.

Get Data Export

GET /wrike/api/v4/data_export
GET /wrike/api/v4/data_export/{data_exportId}

Returns 202 on first request (export generation starts automatically). Subsequent calls return available daily-updated exports.

Refresh Data Export

POST /wrike/api/v4/data_export

Triggers a new data export refresh.

Get Data Export Schema

GET /wrike/api/v4/data_export_schema

Retrieves the schema documentation for export tables.

Response Format

All Wrike API responses follow a standardized JSON structure:

{
  "kind": "[resource_type]",
  "data": [...]
}

Pagination

Some endpoints support pagination with nextPageToken:

{
  "kind": "timelogs",
  "nextPageToken": "AFZ2V4QAAAAA6AAAAAAAAAAAAAAAAAAA22NEEX6HNLKBU",
  "responseSize": 100,
  "data": [...]
}

Use pageToken parameter for subsequent requests:

GET /wrike/api/v4/timelogs?pageToken={nextPageToken}

Code Examples

JavaScript

async function listTasks() {
  const response = await fetch(
    'https://api.maton.ai/wrike/api/v4/tasks',
    {
      headers: {
        'Authorization': `Bearer ${process.env.MATON_API_KEY}`
      }
    }
  );
  return await response.json();
}

async function createTask(folderId, title) {
  const response = await fetch(
    `https://api.maton.ai/wrike/api/v4/folders/${folderId}/tasks`,
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${process.env.MATON_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ title })
    }
  );
  return await response.json();
}

Python

import os
import json
import urllib.request

def list_tasks():
    url = 'https://api.maton.ai/wrike/api/v4/tasks'
    req = urllib.request.Request(url)
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    return json.load(urllib.request.urlopen(req))

def create_task(folder_id, title):
    url = f'https://api.maton.ai/wrike/api/v4/folders/{folder_id}/tasks'
    data = json.dumps({'title': title}).encode()
    req = urllib.request.Request(url, data=data, method='POST')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    req.add_header('Content-Type', 'application/json')
    return json.load(urllib.request.urlopen(req))

Notes

  • Batch Operations: Many endpoints support up to 100 IDs in a single request (comma-separated)
  • Custom Status IDs: Tasks use customStatusId to reference workflow statuses
  • Projects vs Folders: Projects are folders with additional properties (owners, dates, status)
  • IMPORTANT: When using curl commands with URLs containing brackets, use curl -g to disable glob parsing
  • IMPORTANT: When piping curl output to jq, environment variables may not expand correctly in some shells

Error Handling

StatusMeaning
400Bad request or invalid parameters
401Invalid or missing API key
403Insufficient permissions/scopes
404Resource not found
429Rate limited
4xx/5xxPassthrough error from Wrike API

Resources

常见问题

写操作是如何处理的?
所有创建、更新和删除调用在执行前都必须经过用户明确确认目标资源与预期效果。
可以连接多个 Wrike 账号吗?
可以。使用 Maton-Connection 头来指定连接,确保请求发往目标账号。
审计日志和数据导出接口呢?
这些接口会暴露登录事件、IP 地址、用户邮箱等敏感数据,或触发组织级批量导出,只在用户明确要求合规审计或完整数据导出时才调用。

相关技能

Wrike (wrike.com). Use this skill for ANY Wrike request — reading, creating, and updating data. Whenever a task involves Wrike, use this skill instead of calling the API directly.

通过托管 OAuth 认证,访问并管理 ClickUp 工作区、空间、文件夹、清单与任务等数据。

611 次安装12 星标

通过托管 OAuth 接入 Clockify API,管理工时、项目、客户、任务、标签和工作区。

41 次安装

通过托管 OAuth 代理对接 Asana API,统一处理任务、项目、空间、用户与 Webhook。

601 次安装6 星标

通过托管 OAuth 连接 Motion API,管理任务、项目、循环任务和工作区。

44 次安装

通过托管 OAuth 代理读写你的 TickTick 任务和项目。

179 次安装8 星标