curl -X GET https://api.60db.ai/judge/rubrics \
-H "Authorization: Bearer your-api-key"
const response = await fetch('https://api.60db.ai/judge/rubrics', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-api-key',
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.60db.ai/judge/rubrics",
headers={
"Authorization": "Bearer your-api-key",
},
)
data = response.json()
{
"success": true,
"data": [
{
"id": "a1b2c3d4-e5f6-4789-abcd-ef0123456789",
"name": "Docs sample 22592",
"description": "Used to capture a real response for the docs",
"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": null
},
{
"id": "b2c3d4e5-f6a7-4890-bcde-f01234567890",
"name": "CLI Call QA 28862",
"description": "made from the CLI",
"model": "jev-latest",
"questions": {
"tone": {
"type": "choice",
"criteria": {
"unknown": "Not clear",
"dismissive": "Brushes the caller off",
"professional": "Calm and courteous"
},
"instructions": "How did the agent come across?"
},
"resolved": {
"type": "noul",
"instructions": "Was the problem solved?"
},
"satisfaction": {
"type": "score",
"criteria": [
"Angry",
"Unhappy",
"Neutral",
"Satisfied"
]
}
},
"question_count": 3,
"shared": false,
"is_mine": true,
"created_at": "2026-09-28T12:39:19.502Z",
"updated_at": null
}
]
}
Judge
List rubrics
Saved rubrics you can run — your own plus any shared with the workspace
GET
/
judge
/
rubrics
curl -X GET https://api.60db.ai/judge/rubrics \
-H "Authorization: Bearer your-api-key"
const response = await fetch('https://api.60db.ai/judge/rubrics', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-api-key',
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.60db.ai/judge/rubrics",
headers={
"Authorization": "Bearer your-api-key",
},
)
data = response.json()
{
"success": true,
"data": [
{
"id": "a1b2c3d4-e5f6-4789-abcd-ef0123456789",
"name": "Docs sample 22592",
"description": "Used to capture a real response for the docs",
"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": null
},
{
"id": "b2c3d4e5-f6a7-4890-bcde-f01234567890",
"name": "CLI Call QA 28862",
"description": "made from the CLI",
"model": "jev-latest",
"questions": {
"tone": {
"type": "choice",
"criteria": {
"unknown": "Not clear",
"dismissive": "Brushes the caller off",
"professional": "Calm and courteous"
},
"instructions": "How did the agent come across?"
},
"resolved": {
"type": "noul",
"instructions": "Was the problem solved?"
},
"satisfaction": {
"type": "score",
"criteria": [
"Angry",
"Unhappy",
"Neutral",
"Satisfied"
]
}
},
"question_count": 3,
"shared": false,
"is_mine": true,
"created_at": "2026-09-28T12:39:19.502Z",
"updated_at": null
}
]
}
Rubrics visible to you: the ones you created, plus every rubric published to the workspace.
Saving a rubric is what makes scores comparable — everyone running the same questions produces numbers you can put on one chart; everyone writing their own does not.
Request
Headers
string
required
Bearer token — your standard 60db API key (
sk_…), or a user JWT. There is no separate Judge credential.Response
array
Each rubric has
id, name, description, model, questions, question_count, shared, is_mine, created_at and updated_at.boolean
Whether you created it. Owner and user ids are never exposed.
Example
curl -X GET https://api.60db.ai/judge/rubrics \
-H "Authorization: Bearer your-api-key"
const response = await fetch('https://api.60db.ai/judge/rubrics', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-api-key',
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.60db.ai/judge/rubrics",
headers={
"Authorization": "Bearer your-api-key",
},
)
data = response.json()
{
"success": true,
"data": [
{
"id": "a1b2c3d4-e5f6-4789-abcd-ef0123456789",
"name": "Docs sample 22592",
"description": "Used to capture a real response for the docs",
"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": null
},
{
"id": "b2c3d4e5-f6a7-4890-bcde-f01234567890",
"name": "CLI Call QA 28862",
"description": "made from the CLI",
"model": "jev-latest",
"questions": {
"tone": {
"type": "choice",
"criteria": {
"unknown": "Not clear",
"dismissive": "Brushes the caller off",
"professional": "Calm and courteous"
},
"instructions": "How did the agent come across?"
},
"resolved": {
"type": "noul",
"instructions": "Was the problem solved?"
},
"satisfaction": {
"type": "score",
"criteria": [
"Angry",
"Unhappy",
"Neutral",
"Satisfied"
]
}
},
"question_count": 3,
"shared": false,
"is_mine": true,
"created_at": "2026-09-28T12:39:19.502Z",
"updated_at": null
}
]
}