> ## Documentation Index
> Fetch the complete documentation index at: https://docs.60db.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List rubrics

> Saved rubrics you can run — your own plus any shared with the workspace

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

<ParamField header="Authorization" type="string" required>
  Bearer token — **your standard 60db API key** (`sk_…`), or a user JWT. There is no separate Judge credential.
</ParamField>

## Response

<ResponseField name="data" type="array">
  Each rubric has `id`, `name`, `description`, `model`, `questions`, `question_count`, `shared`, `is_mine`, `created_at` and `updated_at`.
</ResponseField>

<ResponseField name="data[].is_mine" type="boolean">
  Whether you created it. Owner and user ids are never exposed.
</ResponseField>

## Example

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://api.60db.ai/judge/rubrics \
    -H "Authorization: Bearer your-api-key"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.60db.ai/judge/rubrics', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer your-api-key',
    },
  });
  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.60db.ai/judge/rubrics",
      headers={
          "Authorization": "Bearer your-api-key",
      },
  )
  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "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
      }
    ]
  }
  ```
</ResponseExample>
