מפתחים

בנו עם Planitude

‏REST API, ‏webhooks חתומים ושרת MCP: שמרו על המערכות שלכם מסונכרנות עם התוכנית, הגיבו לכל שינוי ותנו לעוזר בינה מלאכותית לעבוד על הפרויקטים שלכם.

הקוד, שמות השדות והמידע הטכני נשארים באנגלית, כמו ברוב תיעוד ה-API.

כתובת בסיס: https://planitude.app

בקשות ותשובות הן JSON על גבי HTTPS. משכים ועיכובים הם בדקות עבודה (יום של 8 שעות הוא 480), רגעים בזמן הם ISO 8601 ב-UTC, ותאריכים ללא שעה הם YYYY-MM-DD.

בקשה
curl https://planitude.app/api/auth/me \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "user": {
    "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "email": "[email protected]",
    "name": "Anna Rossi",
    "avatarUrl": null,
    "locale": "en",
    "emailVerified": true
  }
}

התחלה מהירה

מאפס ל-webhook הראשון שלכם בשלושה שלבים. כל מה שצריך הוא מסוף.

  1. יצירת מפתח API

    פתחו את פרופיל ← מפתחות API, בחרו קריאה וכתיבה והעתיקו את המפתח: הוא מתחיל ב-gnt_ ומוצג פעם אחת בלבד. שמרו אותו במשתנה סביבה.

  2. ביצוע הקריאה הראשונה

    הציגו את רשימת הפרויקטים שאתם יכולים לראות. המפתח פועל בשמכם: אותם פרויקטים, אותם תפקידים.

  3. קבלת webhook

    הירשמו עם נקודת קצה ציבורית ב-HTTPS לאירועים שאתם צריכים, ואז שלחו מיד אירוע בדיקה ואמתו את החתימה שלו.

1Terminal
export PLANITUDE_API_KEY="gnt_…"
2
curl https://planitude.app/api/projects \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
התוצאה הצפויה200 OK
{
  "projects": [
    {
      "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
      "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
      "key": "WHX",
      "keyLocked": false,
      "name": "Warehouse expansion",
      "description": null,
      "startDate": "2026-10-05",
      "calendarId": null,
      "currency": "EUR",
      "scheduleFrom": "forward",
      "deadline": null,
      "color": null,
      "settings": {},
      "archivedAt": null,
      "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "createdAt": "2026-10-01T08:30:12.418Z",
      "updatedAt": "2026-10-01T08:30:12.418Z",
      "workspaceName": "Acme Construction",
      "role": "owner",
      "taskCount": 12,
      "finishAt": "2026-10-07T15:00:00.000Z"
    }
  ]
}
3
curl -X POST https://planitude.app/api/webhooks \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/hooks/planitude",
  "events": [
    "task.created",
    "task.completed"
  ],
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8"
}'
דוגמת מטעןwebhook.ping
{
  "id": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
  "type": "webhook.ping",
  "apiVersion": "2026-10-01",
  "createdAt": "2026-10-01T08:30:12.418Z",
  "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "actor": {
    "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "name": "Anna Rossi"
  },
  "data": {
    "message": "Planitude webhook test",
    "webhook": {
      "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
      "name": "Warehouse sync",
      "events": [
        "task.created",
        "task.completed"
      ]
    }
  }
}

אימות

אמתו כל בקשה באמצעות מפתח API אישי בכותרת Authorization, כאסימון נושא (bearer). המפתחות אישיים: הם פועלים בשמכם, עם התפקיד שלכם בכל פרויקט, לעולם לא יותר. אפשר להגביל מפתח לסביבת עבודה אחת, לתת לו תוקף ולבטל אותו בכל עת; כל קריאה נרשמת ביומן לצד המפתח.

היקפים

היקףמאפשר
readplanitude:readקריאה של פרויקטים, משימות, תלויות, חברים, תגובות, קווי בסיס ו-webhooks.
writeplanitude:writeכל מה שיש בקריאה, וכן יצירה ושינוי של פרויקטים, משימות, תלויות, תגובות, קווי בסיס ו-webhooks.

מפתחות ואפליקציות OAuth אינם יכולים למחוק פרויקטים או משימות: המחיקה נשארת באפליקציית האינטרנט, שבה אדם מאשר אותה. סקריפט שמכוון למזהה שגוי לא יכול למחוק תוכנית.

‏OAuth 2.1 לאפליקציות של צד שלישי

אפליקציות שפועלות בשם אנשים אחרים משתמשות ב-OAuth 2.1: קוד הרשאה עם PKCE‏ (S256), אסימוני רענון שמוחלפים בכל שימוש, רישום לקוח דינמי (RFC 7591). בקשו את המשאב https://planitude.app/api ואת ההיקף planitude:read או planitude:write.

נקודות הקצה מפורסמות במסמכי הגילוי הסטנדרטיים, כך שספריות OAuth מגדירות את עצמן.

  • https://planitude.app/.well-known/oauth-authorization-server
  • https://planitude.app/.well-known/oauth-protected-resource

שיטות עבודה מומלצות

  • שמרו מפתחות במשתני סביבה או במנהל סודות, לעולם לא בקוד או במאגר. המפתחות מתחילים ב-gnt_, כך שסורקי סודות יכולים לזהות אותם.
  • השתמשו במפתח לקריאה בלבד כשאתם רק קוראים, ובמפתח נפרד לכל אינטגרציה: אפשר לבטל אחד בלי לעצור את האחרים.
  • תנו תוקף למפתחות שסקריפטים משתמשים בהם והחליפו אותם מדי פעם.
  • קראו ל-API מהשרת שלכם, לא מדפדפן: מפתח בקוד צד לקוח הוא מפתח ציבורי.
Bearercurl
curl https://planitude.app/api/projects \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
OAuth 2.1/.well-known/oauth-authorization-server
{
  "issuer": "https://planitude.app",
  "authorization_endpoint": "https://planitude.app/oauth/authorize",
  "token_endpoint": "https://planitude.app/api/oauth/token",
  "registration_endpoint": "https://planitude.app/api/oauth/register",
  "revocation_endpoint": "https://planitude.app/api/oauth/revoke",
  "scopes_supported": [
    "planitude:read",
    "planitude:write"
  ],
  "grant_types_supported": [
    "authorization_code",
    "refresh_token"
  ],
  "code_challenge_methods_supported": [
    "S256"
  ]
}

שגיאות

‏Planitude משתמשת בקודי סטטוס HTTP סטנדרטיים. לשגיאות יש תמיד אותו מבנה JSON: קוד error יציב להסתעפות לפיו, וכשיש צורך גם details עם הסיבה או השדות לתיקון.

סטטוסמשמעות
400invalid_requestהבקשה אינה תקינה: details.fields מפרט כל שדה ואת הבעיה.
401unauthorizedהמפתח חסר, לא תקין, בוטל או פג תוקפו.
403forbiddenהמפתח או התפקיד שלכם אינם מאפשרים זאת (details.reason), למשל כתיבה עם מפתח לקריאה בלבד, או מחיקה.
404not_foundלא נמצא, או לא גלוי לכם.
409dependency_cycleהתנגשות עם התוכנית, למשל תלות שתסגור מעגל (dependency_cycle).
429rate_limitedיותר מדי בקשות: המתינו את מספר השניות שב-Retry-After.
500server_errorמשהו השתבש מצדנו: נסו שוב עם השהיה מעריכית (exponential backoff).

Error

שדהסוגתיאור
error
חובה
stringStable error code: invalid_request, unauthorized, forbidden, not_found, conflict, dependency_cycle, limit_exceeded, rate_limited, server_error, ...
detailsobject
תשובה
{
  "error": "invalid_request",
  "details": {
    "fields": [
      {
        "path": "name",
        "message": "Invalid input: expected string, received undefined"
      },
      {
        "path": "durationMin",
        "message": "Too small: expected number to be >=0"
      }
    ]
  }
}

מגבלות קצב

המגבלות חלות לכל מפתח, בחלון נע של דקה אחת: 240 בקשות קריאה ו-60 בקשות כתיבה. בחריגה תקבלו 429 rate_limited עם כותרת Retry-After, בשניות.

המתינו ל-Retry-After לפני ניסיון חוזר, פזרו עבודה גדולה לאורך זמן וקבצו שינויים רבים בערכת שינויים אחת: עד 1,000 שינויים בבקשה אחת ובחישוב מחדש אחד.

תשובהHTTP
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json

{
  "error": "rate_limited",
  "details": {
    "retryAfterSec": 12
  }
}

עימוד וחיפוש

רשימות משימות מעומדות באמצעות סמן. העבירו limit (1–500, ברירת מחדל 100) ולעמוד הבא את nextCursor מהתשובה הקודמת בתור cursor. כש-nextCursor הוא null אין עוד עמודים.

סננו לפי externalId (התאמה מדויקת למזהה שלכם), q (השם מכיל), updatedSince ו-completed; מיינו עם sort=-number (החדש ראשון) או -updatedAt. רשימות קצרות יותר, כמו פרויקטים, חברים ותלויות, חוזרות במלואן בתשובה אחת.

בקשה
curl "https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks?limit=500" \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"

# next page: pass the nextCursor of the previous response
curl "https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks?limit=500&cursor=$NEXT_CURSOR" \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"

ניהול גרסאות

ה-API ומטעני ה-webhook מנוהלים בגרסאות לפי תאריך. הגרסה הנוכחית היא 2026-10-01: היא שדה apiVersion של כל אירוע ו-info.version של מסמך OpenAPI.

בתוך גרסה אנחנו רק מוסיפים: נקודות קצה חדשות, שדות אופציונליים חדשים, סוגי אירועים חדשים. שדות לעולם אינם מוסרים או משנים סוג בלי גרסה חדשה, ולכן התעלמו משדות שאינכם מכירים.

בקשה
curl https://planitude.app/api/webhooks/events
תשובה200 OK
{
  "apiVersion": "2026-10-01",
  "events": [
    "project.created",
    "project.updated",
    "project.deleted",
    "task.created",
    "task.updated",
    "task.deleted",
    "task.completed",
    "task.dates_changed",
    "dependency.created",
    "dependency.deleted",
    "baseline.saved",
    "member.invited",
    "member.joined",
    "comment.created"
  ]
}

מדריך ל-API

Account

Who is calling, and their workspaces.

User

מאפיינים

שדהסוגתיאור
idstring (uuid)
emailstring (email)
namestringיכול להיות ריק
avatarUrlstringיכול להיות ריק
localestring
emailVerifiedboolean
אובייקטיםUser
{
  "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
  "email": "[email protected]",
  "name": "Anna Rossi",
  "avatarUrl": null,
  "locale": "en",
  "emailVerified": true
}

Workspace

מאפיינים

שדהסוגתיאור
idstring (uuid)
namestring
rolestring

אחד מתוך: owner, admin, member

אובייקטיםWorkspace
{
  "id": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "name": "Acme Construction",
  "role": "owner"
}

Current user (connection test)

GET/api/auth/me

מפתח עם גישת קריאה

מחזיר

200 OK The user

שדהסוגתיאור
userUser
בקשה
curl https://planitude.app/api/auth/me \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "user": {
    "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "email": "[email protected]",
    "name": "Anna Rossi",
    "avatarUrl": null,
    "locale": "en",
    "emailVerified": true
  }
}

Workspaces of the user, with role

GET/api/workspaces

מפתח עם גישת קריאה

מחזיר

200 OK Workspaces

שדהסוגתיאור
workspacesarray of Workspace
בקשה
curl https://planitude.app/api/workspaces \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "workspaces": [
    {
      "id": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
      "name": "Acme Construction",
      "role": "owner"
    }
  ]
}

מדריך ל-API

Projects

Projects, templates and baselines.

Project

A project as returned by the write endpoints and project listings.

מאפיינים

שדהסוגתיאור
idstring (uuid)
workspaceIdstring (uuid)
keystringProject key, e.g. CRON (task keys are CRON-12).
keyLockedboolean
namestring
descriptionstringיכול להיות ריק
startDatestring (date)
calendarIdstring (uuid)יכול להיות ריק
currencystring
scheduleFromstring

אחד מתוך: forward, backward

deadlinestring (date)יכול להיות ריק
colorstringיכול להיות ריק
settingsobject
archivedAtstring (date-time)יכול להיות ריק
createdBystring (uuid)יכול להיות ריק
createdAtstring (date-time)
updatedAtstring (date-time)
אובייקטיםProject
{
  "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "key": "WHX",
  "keyLocked": false,
  "name": "Warehouse expansion",
  "description": null,
  "startDate": "2026-10-05",
  "calendarId": null,
  "currency": "EUR",
  "scheduleFrom": "forward",
  "deadline": null,
  "color": null,
  "settings": {},
  "archivedAt": null,
  "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
  "createdAt": "2026-10-01T08:30:12.418Z",
  "updatedAt": "2026-10-01T08:30:12.418Z"
}

Template

מאפיינים

שדהסוגתיאור
idstringbuiltin:<slug> or the id of a template saved by you.
kindstring

אחד מתוך: builtin, user

namestring
descriptionstringיכול להיות ריק
taskCountinteger
durationDaysintegerWorking days from start to finish.
אובייקטיםTemplate
{
  "id": "builtin:website-launch",
  "kind": "builtin",
  "name": "Website launch",
  "description": "From discovery to go-live: design, content, development, testing and launch.",
  "taskCount": 12,
  "durationDays": 43
}

Baseline

מאפיינים

שדהסוגתיאור
idstring (uuid)
namestring
indexintegerיכול להיות ריקNumbered MS Project baseline (1-10); null for the main baseline and the ones you name.
capturedAtstring (date-time)
capturedBystring (uuid)יכול להיות ריק
taskCountinteger
אובייקטיםBaseline
{
  "id": "b5d68d05-0640-48f9-8eeb-ed7804f4a116",
  "name": "Plan v1",
  "index": null,
  "capturedAt": "2026-10-01T08:30:12.418Z",
  "capturedBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
  "taskCount": 12
}

List projects

GET/api/projects

מפתח עם גישת קריאה

All projects visible to the user (not paginated). ?archived=1 includes archived ones.

פרמטרי שאילתה

שדהסוגתיאור
archivedstring

אחד מתוך: 1

מחזיר

200 OK Projects

שדהסוגתיאור
projectsarray of Project
בקשה
curl https://planitude.app/api/projects \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "projects": [
    {
      "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
      "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
      "key": "WHX",
      "keyLocked": false,
      "name": "Warehouse expansion",
      "description": null,
      "startDate": "2026-10-05",
      "calendarId": null,
      "currency": "EUR",
      "scheduleFrom": "forward",
      "deadline": null,
      "color": null,
      "settings": {},
      "archivedAt": null,
      "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "createdAt": "2026-10-01T08:30:12.418Z",
      "updatedAt": "2026-10-01T08:30:12.418Z",
      "workspaceName": "Acme Construction",
      "role": "owner",
      "taskCount": 12,
      "finishAt": "2026-10-07T15:00:00.000Z"
    }
  ]
}

Create a project

POST/api/projects

מפתח עם גישת כתיבה

גוף הבקשה

שדהסוגתיאור
name
חובה
string
workspaceIdstring (uuid)Defaults to your personal workspace.
keystring2-5 letters/digits, starts with a letter. Derived from the name if omitted.
descriptionstringיכול להיות ריק
startDatestring (date)
deadlinestring (date)יכול להיות ריק
currencystring
scheduleFromstring

אחד מתוך: forward, backward

colorstringיכול להיות ריק

מחזיר

201 Created Created

שדהסוגתיאור
projectProject
בקשה
curl -X POST https://planitude.app/api/projects \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Warehouse expansion","startDate":"2026-10-05","currency":"EUR"}'
תשובה201 Created
{
  "project": {
    "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "key": "WHX",
    "keyLocked": false,
    "name": "Warehouse expansion",
    "description": null,
    "startDate": "2026-10-05",
    "calendarId": null,
    "currency": "EUR",
    "scheduleFrom": "forward",
    "deadline": null,
    "color": null,
    "settings": {},
    "archivedAt": null,
    "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z"
  }
}

Create a project from a template

POST/api/projects/from-template

מפתח עם גישת כתיבה

גוף הבקשה

שדהסוגתיאור
templateId
חובה
stringId from GET /api/templates.
startDate
חובה
string (date)
namestring
keystring
localestringLanguage of the template texts (en, it, es, fr, de, pt, nl, pl, ja, zh, sv, da, no, fi, cs, ro, uk, tr, ar, he, hi, id, vi, ko).
tzstringIANA time zone of the project calendar.
workspaceIdstring (uuid)

מחזיר

201 Created Created

שדהסוגתיאור
projectProject
taskCountinteger
conflictsarray of Conflict
בקשה
curl -X POST https://planitude.app/api/projects/from-template \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "templateId": "builtin:website-launch",
  "startDate": "2026-10-05",
  "name": "Website relaunch",
  "locale": "en"
}'
תשובה201 Created
{
  "project": {
    "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "key": "WHX",
    "keyLocked": false,
    "name": "Warehouse expansion",
    "description": null,
    "startDate": "2026-10-05",
    "calendarId": null,
    "currency": "EUR",
    "scheduleFrom": "forward",
    "deadline": null,
    "color": null,
    "settings": {},
    "archivedAt": null,
    "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z"
  },
  "taskCount": 12,
  "conflicts": []
}

List project templates

GET/api/templates

מפתח עם גישת קריאה

פרמטרי שאילתה

שדהסוגתיאור
localestring

מחזיר

200 OK Templates

שדהסוגתיאור
templatesarray of Template
בקשה
curl https://planitude.app/api/templates \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "templates": [
    {
      "id": "builtin:website-launch",
      "kind": "builtin",
      "name": "Website launch",
      "description": "From discovery to go-live: design, content, development, testing and launch.",
      "taskCount": 12,
      "durationDays": 43
    }
  ]
}

Full project (tasks tree, dependencies, resources, members, baselines)

GET/api/projects/{projectId}

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

מחזיר

200 OK Project

שדהסוגתיאור
projectProject
tasksarray of Task
dependenciesarray of Dependency
בקשה
curl https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8 \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "project": {
    "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "key": "WHX",
    "keyLocked": false,
    "name": "Warehouse expansion",
    "description": null,
    "startDate": "2026-10-05",
    "calendarId": null,
    "currency": "EUR",
    "scheduleFrom": "forward",
    "deadline": null,
    "color": null,
    "settings": {},
    "archivedAt": null,
    "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z"
  },
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "sortKey": "i",
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null
    }
  ],
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ]
}

Update a project

PATCH/api/projects/{projectId}

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

גוף הבקשה

שדהסוגתיאור
namestring
descriptionstringיכול להיות ריק
startDatestring (date)
deadlinestring (date)יכול להיות ריק
currencystring
scheduleFromstring

אחד מתוך: forward, backward

colorstringיכול להיות ריק
archivedboolean

מחזיר

200 OK Updated

שדהסוגתיאור
projectProject
conflictsarray of Conflict
rescheduledbooleanThe schedule was recalculated (start date, calendar or direction changed).
בקשה
curl -X PATCH https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8 \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"deadline":"2026-12-18"}'
תשובה200 OK
{
  "project": {
    "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "key": "WHX",
    "keyLocked": false,
    "name": "Warehouse expansion",
    "description": null,
    "startDate": "2026-10-05",
    "calendarId": null,
    "currency": "EUR",
    "scheduleFrom": "forward",
    "deadline": null,
    "color": null,
    "settings": {},
    "archivedAt": null,
    "createdBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z"
  },
  "conflicts": [],
  "rescheduled": false
}

List baselines

GET/api/projects/{projectId}/baseline

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

מחזיר

200 OK Baselines

שדהסוגתיאור
baselinesarray of Baseline
בקשה
curl https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/baseline \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "baselines": [
    {
      "id": "b5d68d05-0640-48f9-8eeb-ed7804f4a116",
      "name": "Plan v1",
      "index": null,
      "capturedAt": "2026-10-01T08:30:12.418Z",
      "capturedBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "taskCount": 12
    }
  ]
}

Save a baseline

POST/api/projects/{projectId}/baseline

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

גוף הבקשה

שדהסוגתיאור
namestring

מחזיר

201 Created Saved

שדהסוגתיאור
baselineBaseline
בקשה
curl -X POST https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/baseline \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Plan v1"}'
תשובה201 Created
{
  "baseline": {
    "id": "b5d68d05-0640-48f9-8eeb-ed7804f4a116",
    "name": "Plan v1",
    "index": null,
    "capturedAt": "2026-10-01T08:30:12.418Z",
    "capturedBy": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "taskCount": 12
  }
}

מדריך ל-API

Tasks

Tasks, search by external id, comments.

Task

Task representation of GET /tasks and webhook payloads: the stored task (without sortKey) plus project, assignees and link.

מאפיינים

שדהסוגתיאור
idstring (uuid)
numberintegerSequential number in the project, never reused.
keystringHuman key, e.g. CRON-12.
parentIdstring (uuid)יכול להיות ריק
namestring
typestring

אחד מתוך: summary, task, milestone

durationMinintegerDuration in working minutes (8h day = 480).
workMininteger
progressPctnumber
constraintKindstring

אחד מתוך: asap, alap, start_no_earlier_than, start_no_later_than, finish_no_earlier_than, finish_no_later_than, must_start_on, must_finish_on

constraintDatestring (date-time)יכול להיות ריק
deadlinestring (date-time)יכול להיות ריק
calendarIdstring (uuid)יכול להיות ריק
costFixednumber
notesstringיכול להיות ריק
colorstringיכול להיות ריק
wbsstringיכול להיות ריק
externalIdstringיכול להיות ריקYour identifier for this task in another system. Searchable with GET /tasks?externalId=.
startAtstring (date-time)יכול להיות ריקComputed start.
finishAtstring (date-time)יכול להיות ריקComputed finish.
isCriticalbooleanOn the critical path.
totalFloatMinintegerיכול להיות ריקTotal float (slack) in working minutes.
earlyStartAtstring (date-time)יכול להיות ריק
lateFinishAtstring (date-time)יכול להיות ריק
actualStartAtstring (date-time)יכול להיות ריק
actualFinishAtstring (date-time)יכול להיות ריק
actualDurationMinintegerיכול להיות ריק
remainingDurationMinintegerיכול להיות ריק
manuallyScheduledboolean
levelingDelayMininteger
taskTypestring

אחד מתוך: fixed_units, fixed_duration, fixed_work, fixed_duration_and_units

effortDrivenboolean
durationOptimisticMinintegerיכול להיות ריק
durationPessimisticMinintegerיכול להיות ריק
projectIdstring (uuid)
completedbooleanprogressPct = 100.
assigneesarray of Assignee
urlstring (uri)Page of the task in the web app.
אובייקטיםTask
{
  "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
  "number": 1,
  "key": "WHX-1",
  "parentId": null,
  "name": "Foundations",
  "type": "task",
  "durationMin": 1440,
  "workMin": 0,
  "progressPct": 0,
  "constraintKind": "asap",
  "constraintDate": null,
  "deadline": null,
  "calendarId": null,
  "costFixed": 0,
  "notes": null,
  "color": null,
  "wbs": null,
  "externalId": "crm-4711",
  "startAt": "2026-10-05T06:00:00.000Z",
  "finishAt": "2026-10-07T15:00:00.000Z",
  "isCritical": true,
  "totalFloatMin": 0,
  "earlyStartAt": "2026-10-05T06:00:00.000Z",
  "lateFinishAt": "2026-10-07T15:00:00.000Z",
  "actualStartAt": null,
  "actualFinishAt": null,
  "actualDurationMin": null,
  "remainingDurationMin": null,
  "manuallyScheduled": false,
  "levelingDelayMin": 0,
  "taskType": "fixed_units",
  "effortDriven": false,
  "durationOptimisticMin": null,
  "durationPessimisticMin": null,
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "completed": false,
  "assignees": [
    {
      "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
      "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi",
      "unitsPct": 100
    }
  ],
  "url": "https://planitude.app/app/t/WHX-1"
}

WriteResult

מאפיינים

שדהסוגתיאור
tasksarray of TaskCreated/updated tasks plus the ones the recalculation moved.
deletedTaskIdsarray of string
dependenciesarray of Dependency
deletedDependencyIdsarray of string
conflictsarray of Conflict
projectStartAtstring (date-time)
projectFinishAtstring (date-time)
statsobject
הצגת השדות של stats
שדהסוגתיאור
taskCountinteger
recomputedCountintegerTasks the scheduling engine recalculated.
savedCountintegerTasks whose stored values changed.
durationMsinteger
אובייקטיםWriteResult
{
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "sortKey": "i",
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null
    }
  ],
  "deletedTaskIds": [],
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ],
  "deletedDependencyIds": [],
  "conflicts": [],
  "projectStartAt": "2026-10-05T06:00:00.000Z",
  "projectFinishAt": "2026-10-07T15:00:00.000Z",
  "stats": {
    "taskCount": 12,
    "recomputedCount": 3,
    "savedCount": 2,
    "durationMs": 39
  }
}

Comment

מאפיינים

שדהסוגתיאור
idstring (uuid)
taskIdstring (uuid)
userIdstring (uuid)
authorNamestring
authorAvatarUrlstringיכול להיות ריק
bodystring
mentionsarray of string
createdAtstring (date-time)
editedAtstring (date-time)יכול להיות ריק
אובייקטיםComment
{
  "id": "0fc2dec5-a409-47c9-9c6e-0663e8f8bcf3",
  "taskId": "4dbd104a-00cd-4035-8955-255f52ea586a",
  "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
  "authorName": "Anna Rossi",
  "authorAvatarUrl": null,
  "body": "Concrete delivered, we can start the walls.",
  "mentions": [],
  "createdAt": "2026-10-01T08:30:12.418Z",
  "editedAt": null
}

List or search tasks (paginated)

GET/api/projects/{projectId}/tasks

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

פרמטרי שאילתה

שדהסוגתיאור
limitinteger1-500.

ברירת מחדל: 100

cursorstringnextCursor of the previous page.
sortstring-number = newest first (polling triggers). -updatedAt returns the first page only.

אחד מתוך: number, -number, -updatedAt

ברירת מחדל: number

externalIdstringExact match on externalId.
qstringName contains (case-insensitive).
updatedSincestring (date-time)
completedstring

אחד מתוך: true, false

מחזיר

200 OK A page of tasks

שדהסוגתיאור
tasksarray of Task
nextCursorstringיכול להיות ריק
בקשה
curl "https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks?externalId=crm-4711" \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null,
      "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
      "completed": false,
      "assignees": [
        {
          "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
          "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
          "name": "Anna Rossi",
          "unitsPct": 100
        }
      ],
      "url": "https://planitude.app/app/t/WHX-1"
    }
  ],
  "nextCursor": null
}

Create a task, or apply a change set

POST/api/projects/{projectId}/tasks

מפתח עם גישת כתיבה

Send a TaskCreate to create one task (201), or a ChangeSet to apply several changes in one transaction (200). Dates are recalculated by the scheduling engine.

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

גוף הבקשה

TaskCreate

שדהסוגתיאור
name
חובה
string
parentIdstring (uuid)יכול להיות ריקParent (summary) task; null = top level.
afterTaskIdstring (uuid)יכול להיות ריקInsert after this sibling.
beforeTaskIdstring (uuid)יכול להיות ריקInsert before this sibling.
typestring

אחד מתוך: summary, task, milestone

durationMinintegerDuration in working minutes (8h day = 480).
workMininteger
progressPctnumber
constraintKindstring

אחד מתוך: asap, alap, start_no_earlier_than, start_no_later_than, finish_no_earlier_than, finish_no_later_than, must_start_on, must_finish_on

constraintDatestring (date-time)יכול להיות ריק
deadlinestring (date-time)יכול להיות ריק
calendarIdstring (uuid)יכול להיות ריק
costFixednumber
notesstringיכול להיות ריק
colorstringיכול להיות ריק
wbsstringיכול להיות ריק
externalIdstringיכול להיות ריקYour identifier for this task in another system. Searchable with GET /tasks?externalId=.

או ChangeSet

שדהסוגתיאור
createTasksarray of TaskCreate
updateTasksarray of any
createDependenciesarray of DependencyCreate
deleteDependencyIdsarray of string
fullRescheduleboolean

מחזיר

201 Created Task created

שדהסוגתיאור
tasksarray of TaskCreated/updated tasks plus the ones the recalculation moved.
deletedTaskIdsarray of string
dependenciesarray of Dependency
deletedDependencyIdsarray of string
conflictsarray of Conflict
projectStartAtstring (date-time)
projectFinishAtstring (date-time)
statsobject
הצגת השדות של stats
שדהסוגתיאור
taskCountinteger
recomputedCountintegerTasks the scheduling engine recalculated.
savedCountintegerTasks whose stored values changed.
durationMsinteger
בקשה
curl -X POST https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Foundations","durationMin":1440,"externalId":"crm-4711"}'
תשובה201 Created
{
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "sortKey": "i",
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null
    }
  ],
  "deletedTaskIds": [],
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ],
  "deletedDependencyIds": [],
  "conflicts": [],
  "projectStartAt": "2026-10-05T06:00:00.000Z",
  "projectFinishAt": "2026-10-07T15:00:00.000Z",
  "stats": {
    "taskCount": 12,
    "recomputedCount": 3,
    "savedCount": 2,
    "durationMs": 39
  }
}

Get a task

GET/api/projects/{projectId}/tasks/{taskId}

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.
taskId
חובה
string (uuid)Task id.

מחזיר

200 OK The task

שדהסוגתיאור
taskTask
בקשה
curl https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks/4dbd104a-00cd-4035-8955-255f52ea586a \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "task": {
    "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
    "number": 1,
    "key": "WHX-1",
    "parentId": null,
    "name": "Foundations",
    "type": "task",
    "durationMin": 1440,
    "workMin": 0,
    "progressPct": 0,
    "constraintKind": "asap",
    "constraintDate": null,
    "deadline": null,
    "calendarId": null,
    "costFixed": 0,
    "notes": null,
    "color": null,
    "wbs": null,
    "externalId": "crm-4711",
    "startAt": "2026-10-05T06:00:00.000Z",
    "finishAt": "2026-10-07T15:00:00.000Z",
    "isCritical": true,
    "totalFloatMin": 0,
    "earlyStartAt": "2026-10-05T06:00:00.000Z",
    "lateFinishAt": "2026-10-07T15:00:00.000Z",
    "actualStartAt": null,
    "actualFinishAt": null,
    "actualDurationMin": null,
    "remainingDurationMin": null,
    "manuallyScheduled": false,
    "levelingDelayMin": 0,
    "taskType": "fixed_units",
    "effortDriven": false,
    "durationOptimisticMin": null,
    "durationPessimisticMin": null,
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "completed": false,
    "assignees": [
      {
        "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
        "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
        "name": "Anna Rossi",
        "unitsPct": 100
      }
    ],
    "url": "https://planitude.app/app/t/WHX-1"
  }
}

Update a task

PATCH/api/projects/{projectId}/tasks/{taskId}

מפתח עם גישת כתיבה

Only the fields you send change; null clears a field.

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.
taskId
חובה
string (uuid)Task id.

גוף הבקשה

שדהסוגתיאור
namestring
typestring

אחד מתוך: summary, task, milestone

durationMinintegerDuration in working minutes (8h day = 480).
workMininteger
progressPctnumber
constraintKindstring

אחד מתוך: asap, alap, start_no_earlier_than, start_no_later_than, finish_no_earlier_than, finish_no_later_than, must_start_on, must_finish_on

constraintDatestring (date-time)יכול להיות ריק
deadlinestring (date-time)יכול להיות ריק
calendarIdstring (uuid)יכול להיות ריק
costFixednumber
notesstringיכול להיות ריק
colorstringיכול להיות ריק
wbsstringיכול להיות ריק
externalIdstringיכול להיות ריקYour identifier for this task in another system. Searchable with GET /tasks?externalId=.
placementobject
הצגת השדות של placement
שדהסוגתיאור
parentIdstring (uuid)יכול להיות ריקParent (summary) task; null = top level.
afterTaskIdstring (uuid)יכול להיות ריקInsert after this sibling.
beforeTaskIdstring (uuid)יכול להיות ריקInsert before this sibling.

מחזיר

200 OK Updated

שדהסוגתיאור
tasksarray of TaskCreated/updated tasks plus the ones the recalculation moved.
deletedTaskIdsarray of string
dependenciesarray of Dependency
deletedDependencyIdsarray of string
conflictsarray of Conflict
projectStartAtstring (date-time)
projectFinishAtstring (date-time)
statsobject
הצגת השדות של stats
שדהסוגתיאור
taskCountinteger
recomputedCountintegerTasks the scheduling engine recalculated.
savedCountintegerTasks whose stored values changed.
durationMsinteger
בקשה
curl -X PATCH https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks/4dbd104a-00cd-4035-8955-255f52ea586a \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"progressPct":100}'
תשובה200 OK
{
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "sortKey": "i",
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null
    }
  ],
  "deletedTaskIds": [],
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ],
  "deletedDependencyIds": [],
  "conflicts": [],
  "projectStartAt": "2026-10-05T06:00:00.000Z",
  "projectFinishAt": "2026-10-07T15:00:00.000Z",
  "stats": {
    "taskCount": 12,
    "recomputedCount": 3,
    "savedCount": 2,
    "durationMs": 39
  }
}

Comments of a task

GET/api/projects/{projectId}/tasks/{taskId}/comments

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.
taskId
חובה
string (uuid)Task id.

מחזיר

200 OK Comments

שדהסוגתיאור
commentsarray of Comment
בקשה
curl https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks/4dbd104a-00cd-4035-8955-255f52ea586a/comments \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "comments": [
    {
      "id": "0fc2dec5-a409-47c9-9c6e-0663e8f8bcf3",
      "taskId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "authorName": "Anna Rossi",
      "authorAvatarUrl": null,
      "body": "Concrete delivered, we can start the walls.",
      "mentions": [],
      "createdAt": "2026-10-01T08:30:12.418Z",
      "editedAt": null
    }
  ]
}

Comment on a task

POST/api/projects/{projectId}/tasks/{taskId}/comments

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.
taskId
חובה
string (uuid)Task id.

גוף הבקשה

שדהסוגתיאור
body
חובה
stringPlain text.
mentionsarray of stringUser ids to notify.

מחזיר

201 Created Created

שדהסוגתיאור
commentComment
בקשה
curl -X POST https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks/4dbd104a-00cd-4035-8955-255f52ea586a/comments \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"Concrete delivered, we can start the walls."}'
תשובה201 Created
{
  "comment": {
    "id": "0fc2dec5-a409-47c9-9c6e-0663e8f8bcf3",
    "taskId": "4dbd104a-00cd-4035-8955-255f52ea586a",
    "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "authorName": "Anna Rossi",
    "authorAvatarUrl": null,
    "body": "Concrete delivered, we can start the walls.",
    "mentions": [],
    "createdAt": "2026-10-01T08:30:12.418Z",
    "editedAt": null
  }
}

מדריך ל-API

Dependencies

Links between tasks (FS, SS, FF, SF, with lag).

Dependency

מאפיינים

שדהסוגתיאור
idstring (uuid)
predecessorIdstring (uuid)
successorIdstring (uuid)
typestring

אחד מתוך: FS, SS, FF, SF

lagMinintegerWorking minutes; negative = lead.
אובייקטיםDependency
{
  "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
  "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
  "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
  "type": "FS",
  "lagMin": 0
}

List dependencies

GET/api/projects/{projectId}/dependencies

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

מחזיר

200 OK Dependencies

שדהסוגתיאור
dependenciesarray of Dependency
בקשה
curl https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/dependencies \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ]
}

Create (or update) a dependency

POST/api/projects/{projectId}/dependencies

מפתח עם גישת כתיבה

A dependency that would close a cycle is refused with 409 dependency_cycle.

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

גוף הבקשה

DependencyCreate

שדהסוגתיאור
predecessorId
חובה
string (uuid)
successorId
חובה
string (uuid)
typestring

אחד מתוך: FS, SS, FF, SF

ברירת מחדל: FS

lagMininteger

ברירת מחדל: 0

או dependencies

שדהסוגתיאור
dependencies
חובה
array of DependencyCreate

מחזיר

201 Created Created

שדהסוגתיאור
tasksarray of TaskCreated/updated tasks plus the ones the recalculation moved.
deletedTaskIdsarray of string
dependenciesarray of Dependency
deletedDependencyIdsarray of string
conflictsarray of Conflict
projectStartAtstring (date-time)
projectFinishAtstring (date-time)
statsobject
הצגת השדות של stats
שדהסוגתיאור
taskCountinteger
recomputedCountintegerTasks the scheduling engine recalculated.
savedCountintegerTasks whose stored values changed.
durationMsinteger
בקשה
curl -X POST https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/dependencies \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
  "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
  "type": "FS",
  "lagMin": 0
}'
תשובה201 Created
{
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "sortKey": "i",
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null
    }
  ],
  "deletedTaskIds": [],
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ],
  "deletedDependencyIds": [],
  "conflicts": [],
  "projectStartAt": "2026-10-05T06:00:00.000Z",
  "projectFinishAt": "2026-10-07T15:00:00.000Z",
  "stats": {
    "taskCount": 12,
    "recomputedCount": 3,
    "savedCount": 2,
    "durationMs": 39
  }
}

Remove a dependency

DEL/api/projects/{projectId}/dependencies/{dependencyId}

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.
dependencyId
חובה
string (uuid)

מחזיר

200 OK Removed

שדהסוגתיאור
tasksarray of TaskCreated/updated tasks plus the ones the recalculation moved.
deletedTaskIdsarray of string
dependenciesarray of Dependency
deletedDependencyIdsarray of string
conflictsarray of Conflict
projectStartAtstring (date-time)
projectFinishAtstring (date-time)
statsobject
הצגת השדות של stats
שדהסוגתיאור
taskCountinteger
recomputedCountintegerTasks the scheduling engine recalculated.
savedCountintegerTasks whose stored values changed.
durationMsinteger
בקשה
curl -X DELETE https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/dependencies/9ba5faf8-923d-4ecc-86f0-f245c5d179db \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "tasks": [
    {
      "id": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "number": 1,
      "key": "WHX-1",
      "parentId": null,
      "sortKey": "i",
      "name": "Foundations",
      "type": "task",
      "durationMin": 1440,
      "workMin": 0,
      "progressPct": 0,
      "constraintKind": "asap",
      "constraintDate": null,
      "deadline": null,
      "calendarId": null,
      "costFixed": 0,
      "notes": null,
      "color": null,
      "wbs": null,
      "externalId": "crm-4711",
      "startAt": "2026-10-05T06:00:00.000Z",
      "finishAt": "2026-10-07T15:00:00.000Z",
      "isCritical": true,
      "totalFloatMin": 0,
      "earlyStartAt": "2026-10-05T06:00:00.000Z",
      "lateFinishAt": "2026-10-07T15:00:00.000Z",
      "actualStartAt": null,
      "actualFinishAt": null,
      "actualDurationMin": null,
      "remainingDurationMin": null,
      "manuallyScheduled": false,
      "levelingDelayMin": 0,
      "taskType": "fixed_units",
      "effortDriven": false,
      "durationOptimisticMin": null,
      "durationPessimisticMin": null
    }
  ],
  "deletedTaskIds": [],
  "dependencies": [
    {
      "id": "9ba5faf8-923d-4ecc-86f0-f245c5d179db",
      "predecessorId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "successorId": "a22fd799-c4dc-4869-a466-0dd6e96f71ce",
      "type": "FS",
      "lagMin": 0
    }
  ],
  "deletedDependencyIds": [],
  "conflicts": [],
  "projectStartAt": "2026-10-05T06:00:00.000Z",
  "projectFinishAt": "2026-10-07T15:00:00.000Z",
  "stats": {
    "taskCount": 12,
    "recomputedCount": 3,
    "savedCount": 2,
    "durationMs": 39
  }
}

מדריך ל-API

People

Project members and task assignees.

Member

מאפיינים

שדהסוגתיאור
userIdstring (uuid)
namestring
emailstring
rolestringEffective role on the project.

אחד מתוך: owner, editor, viewer

directRolestringיכול להיות ריקRole granted on the project itself (null = only through the workspace).

אחד מתוך: owner, editor, viewer

inheritedbooleanAccess comes from the workspace.
resourceIdstring (uuid)יכול להיות ריקResource used when the person is assigned to tasks.
addedAtstring (date-time)
avatarUrlstringיכול להיות ריק
אובייקטיםMember
{
  "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
  "name": "Anna Rossi",
  "email": "[email protected]",
  "role": "owner",
  "directRole": null,
  "inherited": false,
  "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
  "addedAt": "2026-10-01T08:30:12.418Z",
  "avatarUrl": null
}

Assignee

מאפיינים

שדהסוגתיאור
resourceIdstring (uuid)
userIdstring (uuid)יכול להיות ריק
namestring
unitsPctinteger
אובייקטיםAssignee
{
  "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
  "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
  "name": "Anna Rossi",
  "unitsPct": 100
}

Replace the people assigned to a task

PUT/api/projects/{projectId}/tasks/{taskId}/assignees

מפתח עם גישת כתיבה

userIds must be members of the project (GET /members). An empty list removes everyone. Optional resourceIds replaces the people imported from a file (resources without an account) assigned to the task; omit it to leave them as they are.

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.
taskId
חובה
string (uuid)Task id.

גוף הבקשה

שדהסוגתיאור
userIds
חובה
array of string
resourceIdsarray of string

מחזיר

200 OK Assignees saved

שדהסוגתיאור
taskIdstring (uuid)
assignmentsarray of object
הצגת השדות של assignments
שדהסוגתיאור
idstring (uuid)
taskIdstring (uuid)
resourceIdstring (uuid)
unitsPctinteger
workMininteger
resourcesarray of object
הצגת השדות של resources
שדהסוגתיאור
idstring (uuid)
userIdstring (uuid)יכול להיות ריק
namestring
kindstring

אחד מתוך: work, material, cost

emailstringיכול להיות ריק
costPerHournumber
costPerUsenumber
capacityPctinteger
calendarIdstring (uuid)יכול להיות ריק
colorstringיכול להיות ריק
avatarUrlstringיכול להיות ריק
needsRescheduleboolean
conflictsarray of Conflict
בקשה
curl -X PUT https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/tasks/4dbd104a-00cd-4035-8955-255f52ea586a/assignees \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"userIds":["b1666432-132a-4ea9-b1ae-76ea69e226c5"]}'
תשובה200 OK
{
  "taskId": "4dbd104a-00cd-4035-8955-255f52ea586a",
  "assignments": [
    {
      "id": "e62ac96b-e68e-40d3-842e-335e27dfd099",
      "taskId": "4dbd104a-00cd-4035-8955-255f52ea586a",
      "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
      "unitsPct": 100,
      "workMin": 0
    }
  ],
  "resources": [
    {
      "id": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
      "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi",
      "kind": "builtin",
      "email": "[email protected]",
      "costPerHour": 0,
      "costPerUse": 0,
      "capacityPct": 0,
      "calendarId": null,
      "color": null,
      "avatarUrl": null
    }
  ],
  "needsReschedule": false,
  "conflicts": []
}

People with access to the project (assignable)

GET/api/projects/{projectId}/members

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
projectId
חובה
string (uuid)Project id.

מחזיר

200 OK Members

שדהסוגתיאור
membersarray of Member
rolestring
בקשה
curl https://planitude.app/api/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8/members \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "members": [
    {
      "userId": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi",
      "email": "[email protected]",
      "role": "owner",
      "directRole": null,
      "inherited": false,
      "resourceId": "0c6a8f52-3d7e-4b19-9a4e-6f1d2c8b7e30",
      "addedAt": "2026-10-01T08:30:12.418Z",
      "avatarUrl": null
    }
  ],
  "role": "owner"
}

מדריך ל-API

Webhooks

Outgoing webhook subscriptions (REST hooks: subscribe/unsubscribe).

Webhook

מאפיינים

שדהסוגתיאור
idstring (uuid)
workspaceIdstring (uuid)
workspaceNamestring
projectIdstring (uuid)יכול להיות ריקnull = every project of the workspace.
projectNamestringיכול להיות ריק
namestring
urlstring (uri)
eventsarray of string

אחד מתוך: project.created, project.updated, project.deleted, task.created, task.updated, task.deleted, task.completed, task.dates_changed, dependency.created, dependency.deleted, baseline.saved, member.invited, member.joined, comment.created

secretPrefixstringFirst characters of the signing secret (not secret).
activeboolean
disabledReasonstringיכול להיות ריק

אחד מתוך: failures, gone, project_deleted, user

disabledAtstring (date-time)יכול להיות ריק
consecutiveFailuresinteger
viaApibooleanCreated with the API (REST hook) rather than from the profile.
createdByobjectיכול להיות ריק
הצגת השדות של createdBy
שדהסוגתיאור
idstring (uuid)
namestringיכול להיות ריק
createdAtstring (date-time)
updatedAtstring (date-time)
lastDeliveryAtstring (date-time)יכול להיות ריק
lastSuccessAtstring (date-time)יכול להיות ריק
אובייקטיםWebhook
{
  "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
  "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "workspaceName": "Acme Construction",
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "projectName": "Warehouse expansion",
  "name": "Warehouse sync",
  "url": "https://example.com/hooks/planitude",
  "events": [
    "task.created",
    "task.completed"
  ],
  "secretPrefix": "whsec_Fdwl",
  "active": true,
  "disabledReason": null,
  "disabledAt": null,
  "consecutiveFailures": 0,
  "viaApi": true,
  "createdBy": {
    "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "name": "Anna Rossi"
  },
  "createdAt": "2026-10-01T08:30:12.418Z",
  "updatedAt": "2026-10-01T08:30:12.418Z",
  "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
  "lastSuccessAt": "2026-10-01T08:30:12.418Z"
}

Delivery

מאפיינים

שדהסוגתיאור
idstring (uuid)
eventIdstring (uuid)
eventTypestring
statusstring

אחד מתוך: pending, success, failed, cancelled

attemptsinteger
nextAttemptAtstring (date-time)יכול להיות ריק
lastAttemptAtstring (date-time)יכול להיות ריק
responseStatusintegerיכול להיות ריק
responseExcerptstringיכול להיות ריק
errorstringיכול להיות ריק
durationMsintegerיכול להיות ריק
manualboolean
createdAtstring (date-time)
אובייקטיםDelivery
{
  "id": "4b207161-80f9-40bb-bc3f-d8f70315be00",
  "eventId": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
  "eventType": "task.completed",
  "status": "success",
  "attempts": 1,
  "nextAttemptAt": null,
  "lastAttemptAt": "2026-10-01T08:30:12.418Z",
  "responseStatus": 200,
  "responseExcerpt": "{\"ok\":true}",
  "error": null,
  "durationMs": 39,
  "manual": false,
  "createdAt": "2026-10-01T08:30:12.418Z"
}

Event

מאפיינים

שדהסוגתיאור
id
חובה
string (uuid)Event id, also in the Planitude-Event-Id header: use it to deduplicate.
type
חובה
string

אחד מתוך: project.created, project.updated, project.deleted, task.created, task.updated, task.deleted, task.completed, task.dates_changed, dependency.created, dependency.deleted, baseline.saved, member.invited, member.joined, comment.created, webhook.ping

apiVersion
חובה
string

אחד מתוך: 2026-10-01

createdAt
חובה
string (date-time)
workspaceId
חובה
string (uuid)
projectIdstring (uuid)יכול להיות ריק
actorobjectיכול להיות ריקWho made the change (null for system changes).
הצגת השדות של actor
שדהסוגתיאור
idstring (uuid)
namestringיכול להיות ריק
data
חובה
object
אובייקטיםEvent
{
  "id": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
  "type": "project.created",
  "apiVersion": "2026-10-01",
  "createdAt": "2026-10-01T08:30:12.418Z",
  "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "actor": {
    "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "name": "Anna Rossi"
  },
  "data": {}
}

Project (event payload)

Compact project representation used in webhook payloads.

מאפיינים

שדהסוגתיאור
idstring (uuid)
workspaceIdstring (uuid)
keystring
namestring
descriptionstringיכול להיות ריק
startDatestring (date)
deadlinestring (date)יכול להיות ריק
currencystring
scheduleFromstring

אחד מתוך: forward, backward

colorstringיכול להיות ריק
archivedboolean
createdAtstring (date-time)
updatedAtstring (date-time)
urlstring (uri)
אובייקטיםProject (event payload)
{
  "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "key": "WHX",
  "name": "Warehouse expansion",
  "description": null,
  "startDate": "2026-10-05",
  "deadline": null,
  "currency": "EUR",
  "scheduleFrom": "forward",
  "color": null,
  "archived": false,
  "createdAt": "2026-10-01T08:30:12.418Z",
  "updatedAt": "2026-10-01T08:30:12.418Z",
  "url": "https://planitude.app/app/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8"
}

List webhook subscriptions

GET/api/webhooks

מפתח עם גישת קריאה

פרמטרי שאילתה

שדהסוגתיאור
workspaceIdstring (uuid)
projectIdstring (uuid)

מחזיר

200 OK Subscriptions

שדהסוגתיאור
webhooksarray of Webhook
בקשה
curl https://planitude.app/api/webhooks \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "webhooks": [
    {
      "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
      "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
      "workspaceName": "Acme Construction",
      "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
      "projectName": "Warehouse expansion",
      "name": "Warehouse sync",
      "url": "https://example.com/hooks/planitude",
      "events": [
        "task.created",
        "task.completed"
      ],
      "secretPrefix": "whsec_Fdwl",
      "active": true,
      "disabledReason": null,
      "disabledAt": null,
      "consecutiveFailures": 0,
      "viaApi": true,
      "createdBy": {
        "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
        "name": "Anna Rossi"
      },
      "createdAt": "2026-10-01T08:30:12.418Z",
      "updatedAt": "2026-10-01T08:30:12.418Z",
      "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
      "lastSuccessAt": "2026-10-01T08:30:12.418Z"
    }
  ]
}

Subscribe (REST hook)

POST/api/webhooks

מפתח עם גישת כתיבה

Creates a subscription. The response contains the signing secret: it is shown only once. Aliases accepted for automation platforms: targetUrl for url, event for a single event.

גוף הבקשה

שדהסוגתיאור
url
חובה
string (uri)HTTPS endpoint that receives the events. Public addresses only.
events
חובה
array of string* = all events.

אחד מתוך: project.created, project.updated, project.deleted, task.created, task.updated, task.deleted, task.completed, task.dates_changed, dependency.created, dependency.deleted, baseline.saved, member.invited, member.joined, comment.created, *

namestring
projectIdstring (uuid)Limit to one project (editor role needed). Omit for the whole workspace (owner/admin).
workspaceIdstring (uuid)

מחזיר

201 Created Created

שדהסוגתיאור
webhookWebhook
secretstringwhsec_...
בקשה
curl -X POST https://planitude.app/api/webhooks \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/hooks/planitude",
  "events": [
    "task.created",
    "task.completed"
  ],
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8"
}'
תשובה201 Created
{
  "webhook": {
    "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "workspaceName": "Acme Construction",
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "projectName": "Warehouse expansion",
    "name": "Warehouse sync",
    "url": "https://example.com/hooks/planitude",
    "events": [
      "task.created",
      "task.completed"
    ],
    "secretPrefix": "whsec_Fdwl",
    "active": true,
    "disabledReason": null,
    "disabledAt": null,
    "consecutiveFailures": 0,
    "viaApi": true,
    "createdBy": {
      "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi"
    },
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z",
    "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
    "lastSuccessAt": "2026-10-01T08:30:12.418Z"
  },
  "secret": "whsec_3dvU0T1oaYlW4kH6m2Vb8nqXcR9eZpLsYw1QhGk"
}

Event catalog (public)

GET/api/webhooks/events

ציבורי, בלי מפתח

מחזיר

200 OK Events

שדהסוגתיאור
apiVersionstring
eventsarray of string
בקשה
curl https://planitude.app/api/webhooks/events
תשובה200 OK
{
  "apiVersion": "2026-10-01",
  "events": [
    "project.created",
    "project.updated",
    "project.deleted",
    "task.created",
    "task.updated",
    "task.deleted",
    "task.completed",
    "task.dates_changed",
    "dependency.created",
    "dependency.deleted",
    "baseline.saved",
    "member.invited",
    "member.joined",
    "comment.created"
  ]
}

Get a subscription

GET/api/webhooks/{webhookId}

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.

מחזיר

200 OK Subscription

שדהסוגתיאור
webhookWebhook
בקשה
curl https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88 \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "webhook": {
    "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "workspaceName": "Acme Construction",
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "projectName": "Warehouse expansion",
    "name": "Warehouse sync",
    "url": "https://example.com/hooks/planitude",
    "events": [
      "task.created",
      "task.completed"
    ],
    "secretPrefix": "whsec_Fdwl",
    "active": true,
    "disabledReason": null,
    "disabledAt": null,
    "consecutiveFailures": 0,
    "viaApi": true,
    "createdBy": {
      "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi"
    },
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z",
    "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
    "lastSuccessAt": "2026-10-01T08:30:12.418Z"
  }
}

Update, pause or resume a subscription

PATCH/api/webhooks/{webhookId}

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.

גוף הבקשה

שדהסוגתיאור
namestring
urlstring (uri)
eventsarray of string
activebooleanfalse = pause; true = resume (also resets the failure counter).

מחזיר

200 OK Updated

שדהסוגתיאור
webhookWebhook
בקשה
curl -X PATCH https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88 \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"active":false}'
תשובה200 OK
{
  "webhook": {
    "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "workspaceName": "Acme Construction",
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "projectName": "Warehouse expansion",
    "name": "Warehouse sync",
    "url": "https://example.com/hooks/planitude",
    "events": [
      "task.created",
      "task.completed"
    ],
    "secretPrefix": "whsec_Fdwl",
    "active": true,
    "disabledReason": null,
    "disabledAt": null,
    "consecutiveFailures": 0,
    "viaApi": true,
    "createdBy": {
      "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi"
    },
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z",
    "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
    "lastSuccessAt": "2026-10-01T08:30:12.418Z"
  }
}

Unsubscribe (REST hook)

DEL/api/webhooks/{webhookId}

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.

מחזיר

204 No Content Deleted

בקשה
curl -X DELETE https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88 \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"

Delivery log (newest first, kept 30 days)

GET/api/webhooks/{webhookId}/deliveries

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.

פרמטרי שאילתה

שדהסוגתיאור
limitinteger1-100.

ברירת מחדל: 50

beforestring (date-time)nextCursor of the previous page.

מחזיר

200 OK Deliveries

שדהסוגתיאור
deliveriesarray of Delivery
nextCursorstringיכול להיות ריק
בקשה
curl https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88/deliveries \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "deliveries": [
    {
      "id": "4b207161-80f9-40bb-bc3f-d8f70315be00",
      "eventId": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
      "eventType": "task.completed",
      "status": "success",
      "attempts": 1,
      "nextAttemptAt": null,
      "lastAttemptAt": "2026-10-01T08:30:12.418Z",
      "responseStatus": 200,
      "responseExcerpt": "{\"ok\":true}",
      "error": null,
      "durationMs": 39,
      "manual": false,
      "createdAt": "2026-10-01T08:30:12.418Z"
    }
  ],
  "nextCursor": null
}

Body sent with a delivery

GET/api/webhooks/{webhookId}/deliveries/{deliveryId}

מפתח עם גישת קריאה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.
deliveryId
חובה
string (uuid)

מחזיר

200 OK Payload

שדהסוגתיאור
payloadEvent
בקשה
curl https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88/deliveries/4b207161-80f9-40bb-bc3f-d8f70315be00 \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "payload": {
    "id": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
    "type": "project.created",
    "apiVersion": "2026-10-01",
    "createdAt": "2026-10-01T08:30:12.418Z",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "actor": {
      "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi"
    },
    "data": {}
  }
}

Send the same event again

POST/api/webhooks/{webhookId}/deliveries/{deliveryId}/redeliver

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.
deliveryId
חובה
string (uuid)

מחזיר

202 Accepted Queued

שדהסוגתיאור
deliveryDelivery
בקשה
curl -X POST https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88/deliveries/4b207161-80f9-40bb-bc3f-d8f70315be00/redeliver \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה202 Accepted
{
  "delivery": {
    "id": "4b207161-80f9-40bb-bc3f-d8f70315be00",
    "eventId": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
    "eventType": "task.completed",
    "status": "success",
    "attempts": 1,
    "nextAttemptAt": null,
    "lastAttemptAt": "2026-10-01T08:30:12.418Z",
    "responseStatus": 200,
    "responseExcerpt": "{\"ok\":true}",
    "error": null,
    "durationMs": 39,
    "manual": false,
    "createdAt": "2026-10-01T08:30:12.418Z"
  }
}

Send a webhook.ping test event

POST/api/webhooks/{webhookId}/test

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.

מחזיר

202 Accepted Queued

שדהסוגתיאור
deliveryDelivery
בקשה
curl -X POST https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88/test \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה202 Accepted
{
  "delivery": {
    "id": "4b207161-80f9-40bb-bc3f-d8f70315be00",
    "eventId": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
    "eventType": "task.completed",
    "status": "success",
    "attempts": 1,
    "nextAttemptAt": null,
    "lastAttemptAt": "2026-10-01T08:30:12.418Z",
    "responseStatus": 200,
    "responseExcerpt": "{\"ok\":true}",
    "error": null,
    "durationMs": 39,
    "manual": false,
    "createdAt": "2026-10-01T08:30:12.418Z"
  }
}

Generate a new signing secret

POST/api/webhooks/{webhookId}/rotate-secret

מפתח עם גישת כתיבה

פרמטרי נתיב

שדהסוגתיאור
webhookId
חובה
string (uuid)Webhook id.

מחזיר

200 OK New secret (shown once)

שדהסוגתיאור
webhookWebhook
secretstring
בקשה
curl -X POST https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88/rotate-secret \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה200 OK
{
  "webhook": {
    "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "workspaceName": "Acme Construction",
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "projectName": "Warehouse expansion",
    "name": "Warehouse sync",
    "url": "https://example.com/hooks/planitude",
    "events": [
      "task.created",
      "task.completed"
    ],
    "secretPrefix": "whsec_Fdwl",
    "active": true,
    "disabledReason": null,
    "disabledAt": null,
    "consecutiveFailures": 0,
    "viaApi": true,
    "createdBy": {
      "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi"
    },
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z",
    "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
    "lastSuccessAt": "2026-10-01T08:30:12.418Z"
  },
  "secret": "whsec_3dvU0T1oaYlW4kH6m2Vb8nqXcR9eZpLsYw1QhGk"
}

Webhooks

Webhooks

‏Webhooks שולחים POST ב-HTTPS עם גוף JSON אל נקודת הקצה שלכם ברגע שמשהו משתנה, בין שהשינוי מגיע מאפליקציית האינטרנט, מה-API, משרת ה-MCP או מייבוא. webhook מכסה פרויקט אחד, או כל פרויקט בסביבת עבודה (בעלים ומנהלים).

צרו אותם בפרופיל ← Webhooks או באמצעות ה-API, כ-REST hooks: הירשמו עם POST /api/webhooks, בטלו הרשמה עם DELETE. סוד החתימה מוצג פעם אחת בלבד.

כל בקשה נושאת את הכותרות האלה:

כותרתתיאור
Planitude-Signaturet=<unix seconds>,v1=<hex HMAC-SHA256>: see Verify signatures.
Planitude-EventEvent type, e.g. task.completed.
Planitude-Event-IdEvent id, the same in every retry: use it to deduplicate.
Planitude-DeliveryId of this delivery (changes with a manual resend).
User-AgentPlanitude-Webhooks/1.0 (+https://planitude.app/developers)
Content-Typeapplication/json
בקשה
curl -X POST https://planitude.app/api/webhooks \
  -H "Authorization: Bearer $PLANITUDE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/hooks/planitude",
  "events": [
    "task.created",
    "task.completed"
  ],
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8"
}'
תשובה201 Created
{
  "webhook": {
    "id": "1747ee7f-a395-4d3c-94b0-54b513d71d88",
    "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
    "workspaceName": "Acme Construction",
    "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
    "projectName": "Warehouse expansion",
    "name": "Warehouse sync",
    "url": "https://example.com/hooks/planitude",
    "events": [
      "task.created",
      "task.completed"
    ],
    "secretPrefix": "whsec_Fdwl",
    "active": true,
    "disabledReason": null,
    "disabledAt": null,
    "consecutiveFailures": 0,
    "viaApi": true,
    "createdBy": {
      "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
      "name": "Anna Rossi"
    },
    "createdAt": "2026-10-01T08:30:12.418Z",
    "updatedAt": "2026-10-01T08:30:12.418Z",
    "lastDeliveryAt": "2026-10-01T08:30:12.418Z",
    "lastSuccessAt": "2026-10-01T08:30:12.418Z"
  },
  "secret": "whsec_3dvU0T1oaYlW4kH6m2Vb8nqXcR9eZpLsYw1QhGk"
}

סוגי אירועים

הירשמו לאירועים בודדים, או ל-* עבור כולם. לכל האירועים אותה מעטפת; data משתנה לפי הסוג.

אירועתיאור
project.createdA project was created (blank, from a template, duplicated or imported from MS Project).
project.updatedProject fields changed (name, dates, deadline, archive...), or a saved version was restored.
project.deletedA project was deleted.
task.createdA task was created.
task.updatedTask fields or assignees changed. changes lists only the fields that changed.
task.deletedA task was deleted (one event per task of a deleted branch).
task.completedTask progress reached 100%.
task.dates_changedStart or finish moved, because of an edit (cause: edit) or because the schedule was recalculated (cause: reschedule).
dependency.createdA dependency was created or changed.
dependency.deletedA dependency was removed.
baseline.savedA baseline was saved.
member.invitedAn invite link was created for the project.
member.joinedA person joined the project.
comment.createdA comment was added to a task.
דוגמת מטען
{
  "id": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
  "type": "project.created",
  "apiVersion": "2026-10-01",
  "createdAt": "2026-10-01T08:30:12.418Z",
  "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
  "projectId": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
  "actor": {
    "id": "b1666432-132a-4ea9-b1ae-76ea69e226c5",
    "name": "Anna Rossi"
  },
  "data": {
    "project": {
      "id": "40be00e0-7e34-4f7a-864b-5cc986f575b8",
      "workspaceId": "824650d2-d0b3-4cac-8df8-5743ae9ff65a",
      "key": "WHX",
      "name": "Warehouse expansion",
      "description": null,
      "startDate": "2026-10-05",
      "deadline": null,
      "currency": "EUR",
      "scheduleFrom": "forward",
      "color": null,
      "archived": false,
      "createdAt": "2026-10-01T08:30:12.418Z",
      "updatedAt": "2026-10-01T08:30:12.418Z",
      "url": "https://planitude.app/app/projects/40be00e0-7e34-4f7a-864b-5cc986f575b8"
    },
    "source": "blank"
  }
}

אימות חתימות

כל בקשה חתומה ב-HMAC-SHA256 ובסוד של ה-webhook שלכם. הכותרת Planitude-Signature מכילה חותמת זמן t ואת החתימה v1, שמחושבת על t, נקודה והגוף הגולמי.

  1. השתמשו בגוף הגולמי, לפני כל ניתוח JSON: גוף שעבר סריאליזציה מחדש יש לו חתימה אחרת.
  2. חשבו את ה-HMAC והשוו אותו בזמן קבוע.
  3. דחו בקשות שחותמת הזמן שלהן חורגת ביותר מ-5 דקות מהשעון שלכם: בקשה שנתפסה לא ניתנת לשידור חוזר.
  4. החליפו את הסוד מתי שתרצו: הישן מפסיק לעבוד מיד.
Verify
import { createHmac, timingSafeEqual } from "node:crypto";

// rawBody: the request body as a string, before JSON.parse
export function verifyPlanitude(rawBody, header, secret, toleranceSec = 300) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  const t = Number(parts.t);
  if (!t || Math.abs(Date.now() / 1000 - t) > toleranceSec) return false; // replay
  const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest();
  const given = Buffer.from(parts.v1 ?? "", "hex");
  return given.length === expected.length && timingSafeEqual(given, expected);
}

// Express: app.post("/hooks/planitude", express.raw({ type: "application/json" }), (req, res) => {
//   if (!verifyPlanitude(req.body.toString("utf8"), req.get("Planitude-Signature"), process.env.PLANITUDE_WEBHOOK_SECRET)) return res.sendStatus(400);
//   res.sendStatus(200); // then process the event in a queue
// });

ניסיונות חוזרים ומסירה

השיבו בכל 2xx תוך 10 שניות ובצעו את העבודה האמיתית אחר כך, בתור. הפניות אינן נעקבות. בשגיאות ובפסקי זמן Planitude מנסה עד 6 פעמים בסך הכול: מיד, ואז לאחר 1 min, 5 min, 30 min, 2 h, 12 h.

המסירה היא לפחות פעם אחת ולא מסודרת. שמרו את מזהה האירוע (Planitude-Event-Id, וגם id בגוף) ודלגו על אלה שכבר עיבדתם; מיינו לפי createdAt.

אחרי ש-5 אירועים ברצף נכשלים בכל הניסיונות, ה-webhook מושבת ובעליו מקבל אימייל. תשובת 410 Gone משביתה אותו מיד. הפעילו אותו מחדש מהפרופיל, או באמצעות PATCH עם active: true.

יומן המסירות (סטטוס, קוד HTTP, קטע מהתשובה, מטען, שליחה חוזרת ידנית) נשמר 30 ימים. כיעדים מתקבלות רק כתובות ציבוריות.

לוח זמנים לניסיונות חוזרים6 × POST
ניסיון 1   מיד
ניסיון 2   + 1 min
ניסיון 3   + 5 min
ניסיון 4   + 30 min
ניסיון 5   + 2 h
ניסיון 6   + 12 h

בדיקת נקודת הקצה שלכם

  1. שלחו אירוע webhook.ping באמצעות נקודת הקצה לבדיקה, או באמצעות הכפתור בדיקה בפרופיל.
  2. כדי לקבל אירועים במחשב שלכם, חשפו את השרת המקומי באמצעות מנהרה (למשל ngrok או Cloudflare Tunnel) והירשמו עם כתובת ה-HTTPS הציבורית שלו.
  3. פתחו את יומן המסירות כדי לראות סטטוס, קוד HTTP ותשובה, ושלחו מחדש מסירה אחרי שתקנתם את נקודת הקצה.
בקשה
curl -X POST https://planitude.app/api/webhooks/1747ee7f-a395-4d3c-94b0-54b513d71d88/test \
  -H "Authorization: Bearer $PLANITUDE_API_KEY"
תשובה202 Accepted
{
  "delivery": {
    "id": "4b207161-80f9-40bb-bc3f-d8f70315be00",
    "eventId": "6f1c1d1e-2f4b-4d0a-9a77-2a3c5b1e9f10",
    "eventType": "task.completed",
    "status": "success",
    "attempts": 1,
    "nextAttemptAt": null,
    "lastAttemptAt": "2026-10-01T08:30:12.418Z",
    "responseStatus": 200,
    "responseExcerpt": "{\"ok\":true}",
    "error": null,
    "durationMs": 39,
    "manual": false,
    "createdAt": "2026-10-01T08:30:12.418Z"
  }
}

בינה מלאכותית ו-MCP

שרת MCP

‏Planitude היא שרת MCP‏ (Model Context Protocol): עוזרי בינה מלאכותית ועורכי קוד קוראים פרויקטים, מנתחים את הנתיב הקריטי ואת העומסים, ויוצרים או משנים משימות, עם ההרשאות שלכם. אפליקציות אינטרנט מתחברות באמצעות OAuth (נכנסים ומאשרים גישה); כלי שורת פקודה ועורכים משתמשים במפתח API.

כתובת השרת

https://planitude.app/mcp

  • ChatGPT‏OAuth

    ב-ChatGPT פתחו הגדרות › אבטחה והתחברות והפעילו מצב מפתח. צרו אפליקציה עם כתובת השרת ואימות OAuth, ואז היכנסו ל-Planitude ואשרו גישה.

    התיעוד הרשמי ↗
  • Claude‏OAuth

    פתחו התאמה אישית › מחברים › הוספת מחבר מותאם אישית, הדביקו את כתובת השרת ובחרו התחברות: Planitude נפתחת, נכנסים ומאשרים גישה. זה עובד ב-claude.ai, ב-Claude Desktop ובאפליקציה לנייד.

    התיעוד הרשמי ↗
  • Gemini‏OAuth

    ב-gemini.google.com פתחו הגדרות › אפליקציות מחוברות, בחרו הוספת אפליקציה מותאמת אישית והדביקו את כתובת השרת; ואז היכנסו ל-Planitude ואשרו גישה.

    התיעוד הרשמי ↗
  • Claude Codeמפתח API

    הריצו את הפקודה כשהמפתח שלכם במשתנה סביבה. הוסיפו --scope user כדי להשתמש בו בכל פרויקט ובדקו עם claude mcp list.

    התיעוד הרשמי ↗
  • Codexמפתח API

    הכניסו את המפתח ל-PLANITUDE_API_KEY והוסיפו את הבלוק ל-~/.codex/config.toml: הוא חל על ה-CLI, על האפליקציה ועל התוסף ל-IDE.

    התיעוד הרשמי ↗
  • Cursorמפתח API

    הוסיפו את הבלוק ל-~/.cursor/mcp.json (כל הפרויקטים) או ל-.cursor/mcp.json (פרויקט אחד); Cursor קורא את המפתח מהסביבה.

    התיעוד הרשמי ↗
  • Visual Studio Codeמפתח API

    הוסיפו .vscode/mcp.json לסביבת העבודה: VS Code מבקש את המפתח פעם אחת ושומר אותו בצורה מאובטחת, מחוץ לקובץ.

    התיעוד הרשמי ↗
  • Gemini CLIמפתח API

    הריצו את הפקודה כשהמפתח שלכם במשתנה סביבה, או הוסיפו את הבלוק ל-~/.gemini/settings.json.

    התיעוד הרשמי ↗

כלים

השרת חושף 29 כלים, מקריאה וניתוח ועד שינויים בטוחים. אף אחד מהם אינו מוחק פרויקטים או משימות.

read

  • planitude_list_projects
  • planitude_portfolio_overview
  • planitude_get_project
  • planitude_critical_path
  • planitude_delay_impact
  • planitude_monte_carlo
  • planitude_workload
  • planitude_list_baselines
  • planitude_list_versions
  • planitude_list_templates
  • planitude_list_comments
  • planitude_preview_import

write

  • planitude_create_project
  • planitude_create_project_from_template
  • planitude_create_project_from_plan
  • planitude_import_file
  • planitude_edit_project
  • planitude_add_task
  • planitude_update_task
  • planitude_set_progress
  • planitude_indent_task
  • planitude_outdent_task
  • planitude_link_tasks
  • planitude_unlink_tasks
  • planitude_reschedule
  • planitude_configure_simulation
  • planitude_add_comment
  • planitude_save_baseline
  • planitude_save_version
MCP

Server URL

https://planitude.app/mcp

יומן שינויים

  1. תיעוד חדש למפתחים, שנוצר ממסמך OpenAPI. מסמך OpenAPI מתאר כעת כל שדה שמוחזר עבור חברים, תגובות, קווי בסיס, תבניות ואחראים.

  2. גרסת API‏ 2026-10-01: webhooks יוצאים חתומים, REST API ציבורי מתועד (OpenAPI 3.1), עימוד באמצעות סמן וחיפוש לפי externalId.

  3. ‏OAuth 2.1 לשרת ה-MCP ול-API: ChatGPT, ‏Claude ו-Gemini מתחברים בלי להעתיק מפתח.

  4. שרת MCP ומפתחות API אישיים עם גישת קריאה או קריאה + כתיבה.

הפרסום שומר על Planitude חינמית