API Reference
API Reference

/review-cycles/:reviewCycleId/tasks

Returns the caller's own review tasks in a performance review cycle. Required scope: r_reviews.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
🚧

This endpoint uses the r_reviews scope, which must be enabled through the Integrations section found within the Settings menu.

Requires a user token, or an account token together with the member_id query parameter (the request is then evaluated as that member). An account token without member_id gets 403 Account tokens need a member_id for this operation.

The member must be able to view review cycles: either through the View review cycles permission (global or scoped role), or through View employee directory in an account with performance reviews enabled.

Tasks are always returned from the perspective of the member's own employee record: only tasks where the member is the reviewee, the reviewing manager, or an assigned reviewer are included, regardless of admin permissions. If the member has no linked employee record, both arrays are empty. Archived and deleted cycles return 404.

Tasks are split in two groups:

  • preparation_tasks: tasks where the member is the reviewing manager and the review forms still need to be prepared (the cycle is scheduled / in_preparation, or the forms are not yet marked ready). Each review links to its form via update_form_url; read it with GET /review-cycles/:reviewCycleId/tasks/:id/forms/:reviewType, customize it with PUT, and finish preparation with PUT /review-cycles/:reviewCycleId/tasks/:id. Only review types the cycle allows the manager to customize are listed.
  • active_tasks: every other task in which the member has something to do or see. reviews lists the reviews assigned to the member as reviewer that are still writable or already submitted, with a view action (GET /review-cycles/:reviewCycleId/reviews/:id) and, while editable, a write action (PUT). Task-level actions may include view (employee review), share (share) and sign (sign); the key is omitted when no action is available. Tasks with neither reviews nor actions are left out.

Within each group tasks are ordered by reviewee name, then manager name.

Results

{
  "preparation_tasks": [
    {
      "id": "4d4",
      "status": "not_ready",
      "review_cycle": {
        "id": "4d6",
        "name": "Mid-year Review 2025",
        "state": "in_preparation",
        "customization_start_date": "2025-05-01T00:00:00.000Z",
        "customization_end_date": "2025-05-15T00:00:00.000Z"
      },
      "reviewee": {
        "id": "4d5",
        "name": "Doe, Jane"
      },
      "reviews": [
        {
          "id": "4d5",
          "type": "self",
          "status": "draft",
          "master_template_id": "2000",
          "follower_template_id": null,
          "update_form_url": "/spi/v3/review-cycles/4d6/tasks/4d4/forms/self"
        },
        {
          "id": "4d6",
          "type": "manager",
          "status": "draft",
          "master_template_id": "3001",
          "follower_template_id": null,
          "update_form_url": "/spi/v3/review-cycles/4d6/tasks/4d4/forms/manager"
        }
      ]
    }
  ],
  "active_tasks": [
    {
      "id": "4d3",
      "state": "in_progress",
      "review_cycle": {
        "id": "4d6",
        "name": "Mid-year Review 2025",
        "state": "in_preparation"
      },
      "reviewee": {
        "id": "4d4",
        "name": "Brown, Alex"
      },
      "reviews": [
        {
          "id": "4e5",
          "type": "manager",
          "state": "submitted",
          "submit_deadline": "2025-06-20T00:00:00.000Z",
          "share_deadline": "2025-06-25T00:00:00.000Z",
          "actions": {
            "view": {
              "url": "/spi/v3/review-cycles/4d6/reviews/4e5"
            }
          }
        }
      ],
      "actions": {
        "view": {
          "url": "/spi/v3/review-cycles/4d6/employees/4d4"
        },
        "share": {
          "url": "/spi/v3/review-cycles/4d6/tasks/4d3/share"
        }
      }
    }
  ]
}
keytypedescription
preparation_tasksarrayTasks whose forms the member must prepare as reviewing manager
preparation_tasks[].idstringReview task (aggregate) SPI key, used as :id in the form and task endpoints
preparation_tasks[].statusstringForm preparation status. One of: ready, draft, not_ready
preparation_tasks[].review_cycleobjectid, name, state, customization_start_date, customization_end_date
preparation_tasks[].revieweeobjectid (SPI key) and name of the employee being reviewed
preparation_tasks[].reviewsarrayCustomizable reviews of the task
preparation_tasks[].reviews[].idstringReview SPI key
preparation_tasks[].reviews[].typestringOne of: self, manager, peer, upwards
preparation_tasks[].reviews[].statusstringready or draft
preparation_tasks[].reviews[].master_template_idstring | nullMaster template configured for this review type
preparation_tasks[].reviews[].follower_template_idstring | nullCustomized template id, null until customized
preparation_tasks[].reviews[].update_form_urlstringRelative URL of the review's form endpoint
active_tasksarrayTasks with reviews to write or view, or task-level actions
active_tasks[].idstringReview task (aggregate) SPI key
active_tasks[].statestringOne of: not_started, in_progress, shared, signed
active_tasks[].review_cycleobjectid, name and state of the cycle
active_tasks[].revieweeobjectid (SPI key) and name of the employee being reviewed
active_tasks[].reviewsarrayReviews assigned to the member as reviewer
active_tasks[].reviews[].idstringReview SPI key
active_tasks[].reviews[].typestringOne of: self, manager, peer, upwards
active_tasks[].reviews[].statestringOne of: not_started, draft, submitted
active_tasks[].reviews[].submit_deadlinestring | nullISO 8601 submission deadline
active_tasks[].reviews[].share_deadlinestring | nullISO 8601 share deadline
active_tasks[].reviews[].actionsobjectview.url always; write.url while the review can still be edited
active_tasks[].actionsobjectOptional. Any of view.url, share.url, sign.url

Error responses

Error bodies come in three shapes. 400 validation errors are a JSON object keyed by the invalid parameter, e.g. {"limit": {"code": "number.max", "message": "\"limit\" must be less than or equal to 200"}}. 401 and 403 are plain-text bodies, e.g. Required scopes missing: ["r_reviews"], or Forbidden when the member lacks permission. 404 is JSON, e.g. {"message": "Review cycle not found"}.

StatusCondition
400reviewCycleId is not a valid SPI key
401Missing or invalid token
403Missing r_reviews scope, account token without member_id, or the member cannot view review cycles
404The review cycle does not exist in the account or is archived or deleted
Path Params
string
required

Review cycle SPI key (hexadecimal)

Query Params
string

Required when using an account token: the member (SPI key, from GET /members) whose tasks are returned. Without it the request gets 403. Ignored for user tokens.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/plain