curl --request PATCH \
--url https://api.stardex.ai/v1/scorecard-templates/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rating_scale": 123,
"enable_ai_auto_grade": true,
"is_archived": true,
"overall_default_text": "<string>",
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"criteria": [
{
"name": "<string>",
"description": "<string>",
"importance": "nice_to_have",
"position": 123,
"default_text": "<string>"
}
]
}
'import requests
url = "https://api.stardex.ai/v1/scorecard-templates/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rating_scale": 123,
"enable_ai_auto_grade": True,
"is_archived": True,
"overall_default_text": "<string>",
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"criteria": [
{
"name": "<string>",
"description": "<string>",
"importance": "nice_to_have",
"position": 123,
"default_text": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
job_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rating_scale: 123,
enable_ai_auto_grade: true,
is_archived: true,
overall_default_text: '<string>',
team_member_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
criteria: [
{
name: '<string>',
description: '<string>',
importance: 'nice_to_have',
position: 123,
default_text: '<string>'
}
]
})
};
fetch('https://api.stardex.ai/v1/scorecard-templates/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stardex.ai/v1/scorecard-templates/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'job_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'rating_scale' => 123,
'enable_ai_auto_grade' => true,
'is_archived' => true,
'overall_default_text' => '<string>',
'team_member_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'criteria' => [
[
'name' => '<string>',
'description' => '<string>',
'importance' => 'nice_to_have',
'position' => 123,
'default_text' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stardex.ai/v1/scorecard-templates/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rating_scale\": 123,\n \"enable_ai_auto_grade\": true,\n \"is_archived\": true,\n \"overall_default_text\": \"<string>\",\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"criteria\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"importance\": \"nice_to_have\",\n \"position\": 123,\n \"default_text\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.stardex.ai/v1/scorecard-templates/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rating_scale\": 123,\n \"enable_ai_auto_grade\": true,\n \"is_archived\": true,\n \"overall_default_text\": \"<string>\",\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"criteria\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"importance\": \"nice_to_have\",\n \"position\": 123,\n \"default_text\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stardex.ai/v1/scorecard-templates/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rating_scale\": 123,\n \"enable_ai_auto_grade\": true,\n \"is_archived\": true,\n \"overall_default_text\": \"<string>\",\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"criteria\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"importance\": \"nice_to_have\",\n \"position\": 123,\n \"default_text\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "aaaa1111-2222-3333-4444-555555555555",
"name": "Senior Backend Engineer Scorecard",
"description": "Interview rubric for senior backend engineering candidates.",
"job_id": "456e7890-e12b-34d5-a678-901234567890",
"rating_scale": 5,
"enable_ai_auto_grade": false,
"is_archived": false,
"overall_default_text": "Summarize the candidate against the must-have criteria first, then list any concerns.",
"created_by": {
"id": "567e8901-e23c-45d6-e789-012345678901",
"first_name": "Jane",
"last_name": "Smith"
},
"created_at": "2026-05-20T10:00:00Z",
"updated_at": "2026-05-20T10:00:00Z",
"criteria": [
{
"id": "bbbb1111-2222-3333-4444-555555555555",
"name": "System design depth",
"description": "Can the candidate reason about consistency, partitioning, and failure modes for a multi-region service?",
"importance": "must_have",
"position": 1,
"is_archived": false,
"default_text": "Note specific systems they have built, scale handled, and trade-offs discussed."
},
{
"id": "cccc1111-2222-3333-4444-555555555555",
"name": "Async collaboration",
"description": "Quality of written communication and decision logs.",
"importance": "nice_to_have",
"position": 2,
"is_archived": false,
"default_text": null
}
]
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}Update scorecard template
Update an existing scorecard template. Only provided fields are modified.
Criteria replacement: when criteria is provided, existing active criteria are archived (preserving historical ratings) and the new criteria are inserted. Omit criteria to leave the criteria set unchanged.
Team member assignment: last_updated_by defaults to the calling team member. Pass team_member_id to override.
curl --request PATCH \
--url https://api.stardex.ai/v1/scorecard-templates/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rating_scale": 123,
"enable_ai_auto_grade": true,
"is_archived": true,
"overall_default_text": "<string>",
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"criteria": [
{
"name": "<string>",
"description": "<string>",
"importance": "nice_to_have",
"position": 123,
"default_text": "<string>"
}
]
}
'import requests
url = "https://api.stardex.ai/v1/scorecard-templates/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rating_scale": 123,
"enable_ai_auto_grade": True,
"is_archived": True,
"overall_default_text": "<string>",
"team_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"criteria": [
{
"name": "<string>",
"description": "<string>",
"importance": "nice_to_have",
"position": 123,
"default_text": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
job_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rating_scale: 123,
enable_ai_auto_grade: true,
is_archived: true,
overall_default_text: '<string>',
team_member_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
criteria: [
{
name: '<string>',
description: '<string>',
importance: 'nice_to_have',
position: 123,
default_text: '<string>'
}
]
})
};
fetch('https://api.stardex.ai/v1/scorecard-templates/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stardex.ai/v1/scorecard-templates/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'job_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'rating_scale' => 123,
'enable_ai_auto_grade' => true,
'is_archived' => true,
'overall_default_text' => '<string>',
'team_member_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'criteria' => [
[
'name' => '<string>',
'description' => '<string>',
'importance' => 'nice_to_have',
'position' => 123,
'default_text' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stardex.ai/v1/scorecard-templates/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rating_scale\": 123,\n \"enable_ai_auto_grade\": true,\n \"is_archived\": true,\n \"overall_default_text\": \"<string>\",\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"criteria\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"importance\": \"nice_to_have\",\n \"position\": 123,\n \"default_text\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.stardex.ai/v1/scorecard-templates/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rating_scale\": 123,\n \"enable_ai_auto_grade\": true,\n \"is_archived\": true,\n \"overall_default_text\": \"<string>\",\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"criteria\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"importance\": \"nice_to_have\",\n \"position\": 123,\n \"default_text\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stardex.ai/v1/scorecard-templates/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rating_scale\": 123,\n \"enable_ai_auto_grade\": true,\n \"is_archived\": true,\n \"overall_default_text\": \"<string>\",\n \"team_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"criteria\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"importance\": \"nice_to_have\",\n \"position\": 123,\n \"default_text\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "aaaa1111-2222-3333-4444-555555555555",
"name": "Senior Backend Engineer Scorecard",
"description": "Interview rubric for senior backend engineering candidates.",
"job_id": "456e7890-e12b-34d5-a678-901234567890",
"rating_scale": 5,
"enable_ai_auto_grade": false,
"is_archived": false,
"overall_default_text": "Summarize the candidate against the must-have criteria first, then list any concerns.",
"created_by": {
"id": "567e8901-e23c-45d6-e789-012345678901",
"first_name": "Jane",
"last_name": "Smith"
},
"created_at": "2026-05-20T10:00:00Z",
"updated_at": "2026-05-20T10:00:00Z",
"criteria": [
{
"id": "bbbb1111-2222-3333-4444-555555555555",
"name": "System design depth",
"description": "Can the candidate reason about consistency, partitioning, and failure modes for a multi-region service?",
"importance": "must_have",
"position": 1,
"is_archived": false,
"default_text": "Note specific systems they have built, scale handled, and trade-offs discussed."
},
{
"id": "cccc1111-2222-3333-4444-555555555555",
"name": "Async collaboration",
"description": "Quality of written communication and decision logs.",
"importance": "nice_to_have",
"position": 2,
"is_archived": false,
"default_text": null
}
]
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Authenticate with a Bearer token: API key, OAuth token, or session token.
Path Parameters
Scorecard template ID
Body
Template name shown to raters.
1Optional template description. Pass null to clear.
Job UUID to scope the template to. Pass null to make org-wide. Only one active template can exist per job.
Star rating scale. Must be one of: 3, 4, 5, or 10.
Toggle AI auto-grading for this template.
Archive or unarchive the template.
Default overall summary text. Plain text only. Pass null to clear.
Team member UUID to record as the last_updated_by. Defaults to the caller.
When provided, REPLACES the active criteria set: existing non-archived criteria are archived (preserving historical ratings) and these new criteria are inserted. Omit to leave criteria unchanged.
Show child attributes
Show child attributes
Was this page helpful?