post
https://{subdomain}.workable.com/spi/v3/review-cycles/templates
Creates a performance review master template. Required scope: w_reviews.
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
This endpoint uses thew_reviewsscope, 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. 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"
}
}
]
}
]
}
}| key | type | description |
|---|---|---|
| title | string | Title of the template (required) |
| questionnaire.sections | array | Ordered list of sections (required, non-empty) |
| questionnaire.sections[].id | string | Optional client-assigned id |
| questionnaire.sections[].body | string | Section title / header text (required) |
| questionnaire.sections[].position | integer | Order of the section. Defaults to the section's index when omitted |
| questionnaire.sections[].questions | array | Ordered list of questions (required) |
| questionnaire.sections[].questions[].id | string | Optional client-assigned id |
| questionnaire.sections[].questions[].body | string | Question text (required) |
| questionnaire.sections[].questions[].position | integer | Order of the question within the section. Defaults to the question's index when omitted |
| questionnaire.sections[].questions[].type | string | Question 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.mandatory | boolean | Whether an answer is required |
| questionnaire.sections[].questions[].metadata.semantic_type | string | Semantic role of the question. Accepts snake_case or PascalCase. One of: section_rating, overall_rating |
| questionnaire.sections[].questions[].metadata.rating_options | object | Map of rating value to label |
| questionnaire.sections[].questions[].metadata.answer_options.choices | object | Map 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"
}
}
]
}
]
}
}See GET /review-cycles/templates/:id for the full field reference.
Error responses
| Status | Condition |
|---|---|
| 400 | Validation failed (missing title, empty sections, invalid type or semantic_type, unknown fields) |
| 403 | Missing w_reviews scope, or the user lacks permission to create performance templates |
