curl -X PATCH https://api.60db.ai/judge/rubrics/{id} \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated after the Q3 rubric review"
}'
const response = await fetch('https://api.60db.ai/judge/rubrics/{id}', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"description": "Updated after the Q3 rubric review"
}),
});
const data = await response.json();
import requests
response = requests.patch(
"https://api.60db.ai/judge/rubrics/{id}",
headers={
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json",
},
json={
"description": "Updated after the Q3 rubric review"
},
)
data = response.json()
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-4789-abcd-ef0123456789",
"name": "Docs sample 22592",
"description": "updated",
"model": "jev-latest",
"questions": {
"tone": {
"type": "choice",
"criteria": {
"unknown": "Unclear",
"dismissive": "Brushes off",
"professional": "Calm"
}
}
},
"question_count": 1,
"shared": false,
"is_mine": true,
"created_at": "2026-09-28T13:19:50.210Z",
"updated_at": "2026-09-28T13:19:50.340Z"
}
}
Judge
Update rubric
Patch a saved rubric — only the fields you send change
PATCH
/
judge
/
rubrics
/
{id}
curl -X PATCH https://api.60db.ai/judge/rubrics/{id} \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated after the Q3 rubric review"
}'
const response = await fetch('https://api.60db.ai/judge/rubrics/{id}', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"description": "Updated after the Q3 rubric review"
}),
});
const data = await response.json();
import requests
response = requests.patch(
"https://api.60db.ai/judge/rubrics/{id}",
headers={
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json",
},
json={
"description": "Updated after the Q3 rubric review"
},
)
data = response.json()
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-4789-abcd-ef0123456789",
"name": "Docs sample 22592",
"description": "updated",
"model": "jev-latest",
"questions": {
"tone": {
"type": "choice",
"criteria": {
"unknown": "Unclear",
"dismissive": "Brushes off",
"professional": "Calm"
}
}
},
"question_count": 1,
"shared": false,
"is_mine": true,
"created_at": "2026-09-28T13:19:50.210Z",
"updated_at": "2026-09-28T13:19:50.340Z"
}
}
Update a rubric in place. Only the fields present in the body are touched — omitting
model leaves the stored model alone rather than resetting it to a default.
Request
Headers
string
required
Bearer token — your standard 60db API key (
sk_…), or a user JWT. There is no separate Judge credential.string
required
application/json
Path parameters
string
required
Rubric UUID.
Body
At least one field is required.string
Still unique per workspace.
string
Send an empty string to clear it.
string
object
Replaces the whole map;
question_count is recomputed.boolean
Promoting a rubric to shared requires owner or admin, exactly like creating one.
Response
object
The updated rubric.
Errors
| Status | Meaning |
|---|---|
400 | Empty body, or invalid questions. |
403 | Not your rubric (and you are not owner/admin), or shared: true without the right role. |
404 | No such rubric. |
409 | The new name is already taken. |
Example
curl -X PATCH https://api.60db.ai/judge/rubrics/{id} \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated after the Q3 rubric review"
}'
const response = await fetch('https://api.60db.ai/judge/rubrics/{id}', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"description": "Updated after the Q3 rubric review"
}),
});
const data = await response.json();
import requests
response = requests.patch(
"https://api.60db.ai/judge/rubrics/{id}",
headers={
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json",
},
json={
"description": "Updated after the Q3 rubric review"
},
)
data = response.json()
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-4789-abcd-ef0123456789",
"name": "Docs sample 22592",
"description": "updated",
"model": "jev-latest",
"questions": {
"tone": {
"type": "choice",
"criteria": {
"unknown": "Unclear",
"dismissive": "Brushes off",
"professional": "Calm"
}
}
},
"question_count": 1,
"shared": false,
"is_mine": true,
"created_at": "2026-09-28T13:19:50.210Z",
"updated_at": "2026-09-28T13:19:50.340Z"
}
}