API Reference
API Reference

/review-cycles/templates

Creates a performance review master template. 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 whose member has permission to manage performance templates, or an account token together with the member_id query parameter of such a member (the request is then evaluated with that member's permissions). An account token without member_id gets 403 Account tokens need a member_id for this operation. The template is saved in the performance_review category; use the list endpoint to retrieve it afterwards.

Request body

{
  "title": "SPI Review Q1",
  "questionnaire": {
    "sections": [
      {
        "body": "Section 1: General Questions",
        "questions": [
          {
            "body": "A question about performance",
            "type": "star_rated"
          },
          {
            "body": "Overall rating",
            "type": "star_rated",
            "metadata": {
              "mandatory": true,
              "semantic_type": "overall_rating"
            }
          }
        ]
      }
    ]
  }
}

The request rejects unknown keys.

keytypedescription
titlestringTitle of the template (required)
questionnaire.sectionsarrayOrdered list of sections (required, non-empty)
questionnaire.sections[].idstringOptional client-assigned id
questionnaire.sections[].bodystringSection title / header text (required)
questionnaire.sections[].positionintegerOrder of the section. Defaults to the section's index when omitted
questionnaire.sections[].questionsarrayOrdered list of questions (required)
questionnaire.sections[].questions[].idstringOptional client-assigned id
questionnaire.sections[].questions[].bodystringQuestion text (required)
questionnaire.sections[].questions[].positionintegerOrder of the question within the section. Defaults to the question's index when omitted
questionnaire.sections[].questions[].typestringQuestion type. Accepts snake_case (e.g. star_rated) or PascalCase (e.g. StarRated). One of: paragraph, paragraph_star_rated, paragraph_numeric_rated, paragraph_custom_rated, single_choice, multiple_choice, star_rated, numeric_rated, custom_rated
questionnaire.sections[].questions[].metadata.mandatorybooleanWhether an answer is required
questionnaire.sections[].questions[].metadata.semantic_typestringSemantic role of the question. Accepts snake_case or PascalCase. One of: section_rating, overall_rating
questionnaire.sections[].questions[].metadata.rating_optionsobjectMap of rating value to label
questionnaire.sections[].questions[].metadata.answer_options.choicesobjectMap of choice key to label

Response

The created template is returned in snake_case with the ids and version assigned by the template registry.

{
  "id": "template-spi-review-1",
  "title": "SPI Review Q1",
  "updated_at": "2021-01-01T00:00:00Z",
  "version": 1,
  "questionnaire": {
    "sections": [
      {
        "id": "section1",
        "body": "Section 1: General Questions",
        "questions": [
          {
            "id": "question1",
            "body": "A question about performance",
            "type": "star_rated"
          },
          {
            "id": "question2",
            "body": "Overall rating",
            "type": "star_rated",
            "metadata": {
              "mandatory": true,
              "semantic_type": "overall_rating"
            }
          }
        ]
      }
    ]
  },
  "default": false,
  "disabled": false
}

See GET /review-cycles/templates/:id for the full field reference.

Error responses

StatusCondition
400Validation failed (missing title, empty sections, invalid type or semantic_type, unknown fields)
403Missing w_reviews scope, account token without member_id, or the user lacks permission to create performance templates
409{"message": "Template title already exists", "errorCode": "template_title_already_exists"}: a template with the same title already exists
Query Params
string

Required when using an account token: the member (SPI key, from GET /members) to act as. The request is evaluated with that member's permissions; without it the request gets 403. Ignored for user tokens.

Body Params
string
required

Title of the template

questionnaire
object
required
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