API Reference
API Reference

/review-cycles/:reviewCycleId/tasks/:id/sign

Signs a shared performance review as the reviewee or the manager. Required scope: w_reviews.

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

This endpoint uses the w_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, whose employee is either the reviewee or the aggregate's manager. An account token without member_id gets 403 Account tokens need a member_id for this operation, and no other role can sign, including admins.

Records the caller's signature on the review aggregate. If the caller is the reviewee, the employee signature is recorded. If the caller is the manager, the manager signature is recorded. The aggregate moves to signed once both have signed. There is no request body.

Preconditions:

  • The cycle has signing enabled (it has a sign deadline) and is not archived.
  • The aggregate has been shared.
  • The aggregate is not fully signed, and the caller has not already signed it.
  • The sign deadline has not passed.
  • If the cycle requires an employee meeting, a meeting has been scheduled.

Results

Returns 200 with the updated employee aggregate. The shape is the same as GET /review-cycles/:reviewCycleId/employees/:employeeId, and reviews contains only the reviews visible to the caller.

{
  "id": "4d3",
  "status": "ready",
  "state": "shared",
  "review_cycle": {
    "id": "4d3",
    "name": "Annual Review 2024",
    "state": "active",
    "customization_start_date": "2024-10-01T00:00:00.000Z",
    "customization_end_date": "2024-10-15T00:00:00.000Z"
  },
  "reviewee": {
    "id": "4d4",
    "name": "Jane Doe"
  },
  "manager": {
    "id": "4d3",
    "name": "John Smith"
  },
  "reviews": [
    {
      "review": {
        "id": "4d4",
        "type": "manager",
        "status": "ready",
        "master_template_id": "1001",
        "follower_template_id": null,
        "update_form_url": "/spi/v3/review-cycles/4d3/tasks/4d3/forms/manager",
        "state": "submitted",
        "submit_deadline": "2024-11-20T00:00:00.000Z",
        "share_deadline": "2024-11-25T00:00:00.000Z",
        "write_url": null
      },
      "questionnaire": {
        "template_id": "2",
        "overall_rating": 4,
        "sections": [
          {
            "id": "2501299e-4332-59e9-8979-93bdc5aceaa9",
            "name": "<p>Goals</p>",
            "rating": 4,
            "questions": [
              {
                "id": "2501297d-e22b-5f57-bbeb-21490ee0c212",
                "body": "<p>What progress has the employee made toward their goals?</p>",
                "position": 0,
                "section_id": "2501299e-4332-59e9-8979-93bdc5aceaa9",
                "answer": "Delivered three major projects on time.",
                "type": "paragraph"
              }
            ]
          }
        ]
      }
    }
  ]
}

See PUT /review-cycles/:reviewCycleId/tasks/:id/share for the field reference.

Error responses

All business-rule errors return {"message": "...", "code": "..."}.

StatusCondition
400review_aggregate.cannot_be_signed: the cycle does not have signing enabled, the aggregate is not shared, or an employee meeting is required but none is scheduled
400review_aggregate.already_signed: the aggregate is fully signed, or the caller (as manager or as reviewee) has already signed
400review_aggregate.sign_in_archived_review_cycle: the cycle is archived
400review_aggregate.sign_in_inactive_review_cycle: the cycle is not active and the sign deadline has passed
400review_aggregate.sign_after_sign_deadline: the sign deadline has passed
401Missing or invalid token
403Missing w_reviews scope, account token without member_id, or the caller is neither the reviewee nor the manager
404{"message": "Review aggregate not found"}: the task does not exist, is deleted, or belongs to a different review cycle
Path Params
string
required

Review cycle id

string
required

Task (review aggregate) id, as returned in preparation_tasks[].id / active_tasks[].id of GET /review-cycles/:reviewCycleId/tasks

Query Params
string

Required when using an account token: the member (SPI key, from GET /members) whose employee is the reviewee or the aggregate's manager. 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