Agent Skills: Wrike API

Wrike API for project management. Use when user mentions "Wrike", "wrike.com",

UncategorizedID: vm0-ai/vm0-skills/wrike

Install this agent skill to your local

pnpm dlx add-skill https://github.com/vm0-ai/vm0-skills/tree/HEAD/wrike

Skill Files

Browse the full folder contents for wrike.

Download Skill

Loading file tree…

wrike/SKILL.md

Skill Metadata

Name
wrike
Description
Wrike API for project management. Use when user mentions "Wrike", "wrike.com",

Wrike API

Manage tasks, folders, projects, spaces, comments, timelogs, and workflows in Wrike via the REST API v4.

Official docs: https://developers.wrike.com/overview/


When to Use

Use this skill when you need to:

  • List and manage spaces, folders, and projects
  • Create, update, delete, and search tasks
  • Add and manage comments on tasks and folders
  • Track time with timelogs
  • Query contacts and workflows


How to Use

All examples below assume you have WRIKE_TOKEN set.

Base URL: https://www.wrike.com/api/v4

Wrike uses alphanumeric IDs for all resources. The hierarchy is: Space > Folder/Project > Task. Projects are folders with additional properties (owners, start/end dates, status). All responses follow the format {"kind": "...", "data": [...]}.


Spaces

List All Spaces

curl -s "https://www.wrike.com/api/v4/spaces" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, title}'

Get Space by ID

curl -s "https://www.wrike.com/api/v4/spaces/<space_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[0]'

Create Space

Write to /tmp/wrike_request.json:

{
  "title": "New Space"
}
curl -s -X POST "https://www.wrike.com/api/v4/spaces" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title}'

Delete Space

curl -s -X DELETE "https://www.wrike.com/api/v4/spaces/<space_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)"

Folders & Projects

Get Folder Tree

curl -s "https://www.wrike.com/api/v4/folders" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, title, scope}'

Get Folders in a Space

curl -s "https://www.wrike.com/api/v4/spaces/<space_id>/folders" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, title, childIds}'

Get Subfolders

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>/folders" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, title}'

Get Folder by ID

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[0]'

Create Folder

Write to /tmp/wrike_request.json:

{
  "title": "New Folder"
}
curl -s -X POST "https://www.wrike.com/api/v4/folders/<parent_folder_id>/folders" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title}'

Create Project

Write to /tmp/wrike_request.json:

{
  "title": "New Project",
  "project": {
    "status": "Green",
    "startDate": "2026-04-01",
    "endDate": "2026-06-30"
  }
}
curl -s -X POST "https://www.wrike.com/api/v4/folders/<parent_folder_id>/folders" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title, project}'

Update Folder

Write to /tmp/wrike_request.json:

{
  "title": "Updated Folder Name"
}
curl -s -X PUT "https://www.wrike.com/api/v4/folders/<folder_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title}'

Delete Folder

curl -s -X DELETE "https://www.wrike.com/api/v4/folders/<folder_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)"

Tasks

List Tasks in a Folder

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>/tasks" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, title, status, importance, dates}'

List Tasks in a Space

curl -s "https://www.wrike.com/api/v4/spaces/<space_id>/tasks" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, title, status, importance}'

Get Task by ID

curl -s "https://www.wrike.com/api/v4/tasks/<task_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[0] | {id, title, description, status, importance, dates, responsibleIds}'

Create Task

Write to /tmp/wrike_request.json:

{
  "title": "New Task",
  "description": "Task description here",
  "status": "Active",
  "importance": "Normal",
  "dates": {
    "start": "2026-04-01",
    "due": "2026-04-15"
  },
  "responsibles": ["<contact_id>"]
}
curl -s -X POST "https://www.wrike.com/api/v4/folders/<folder_id>/tasks" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title, status}'

Update Task

Write to /tmp/wrike_request.json:

{
  "title": "Updated Task Name",
  "status": "Completed",
  "importance": "High"
}
curl -s -X PUT "https://www.wrike.com/api/v4/tasks/<task_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, title, status}'

Delete Task

curl -s -X DELETE "https://www.wrike.com/api/v4/tasks/<task_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)"

Comments

List Comments on a Task

curl -s "https://www.wrike.com/api/v4/tasks/<task_id>/comments" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, text, authorId, createdDate}'

List Comments on a Folder

curl -s "https://www.wrike.com/api/v4/folders/<folder_id>/comments" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, text, authorId, createdDate}'

Create Comment on a Task

Write to /tmp/wrike_request.json:

{
  "text": "This is a comment on the task."
}
curl -s -X POST "https://www.wrike.com/api/v4/tasks/<task_id>/comments" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0]'

Update Comment

Write to /tmp/wrike_request.json:

{
  "text": "Updated comment text."
}
curl -s -X PUT "https://www.wrike.com/api/v4/comments/<comment_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0]'

Delete Comment

curl -s -X DELETE "https://www.wrike.com/api/v4/comments/<comment_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)"

Contacts

List All Contacts

curl -s "https://www.wrike.com/api/v4/contacts" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, firstName, lastName, type, profiles}'

Get Contact by ID

curl -s "https://www.wrike.com/api/v4/contacts/<contact_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[0]'

Timelogs

List Timelogs for a Task

curl -s "https://www.wrike.com/api/v4/tasks/<task_id>/timelogs" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, taskId, hours, trackedDate, comment}'

Create Timelog

Write to /tmp/wrike_request.json:

{
  "hours": 2.5,
  "trackedDate": "2026-04-01",
  "comment": "Working on implementation"
}
curl -s -X POST "https://www.wrike.com/api/v4/tasks/<task_id>/timelogs" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" --header "Content-Type: application/json" -d @/tmp/wrike_request.json | jq '.data[0] | {id, hours, trackedDate}'

Delete Timelog

curl -s -X DELETE "https://www.wrike.com/api/v4/timelogs/<timelog_id>" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)"

Workflows

List Workflows

curl -s "https://www.wrike.com/api/v4/workflows" --header "Authorization: Bearer $(printenv WRIKE_TOKEN)" | jq '.data[] | {id, name, customStatuses}'

Guidelines

  1. Wrike uses alphanumeric string IDs for all resources. Use jq to extract id and title fields.
  2. The resource hierarchy is: Space > Folder/Project > Task. Projects are folders with additional properties (owners, start/end dates, status).
  3. Task statuses include Active, Completed, Deferred, Cancelled, and custom statuses defined in workflows.
  4. Importance values: High, Normal, Low.
  5. Dates use YYYY-MM-DD format (e.g., 2026-04-01).
  6. All responses follow the format {"kind": "...", "data": [...]}. The data field is always an array.
  7. You can query up to 100 resources by ID in a single request using comma-separated IDs (e.g., /tasks/id1,id2,id3).
  8. Write request bodies to /tmp/wrike_request.json before sending.
  9. Rate limits: Wrike allows 400 requests per minute per access token. Back off on 429 responses.
  10. Use <placeholder> for dynamic IDs that the user must replace (e.g., <task_id>, <folder_id>).
Wrike API Skill | Agent Skills