---
title: "Generate Qa Scorecard"
method: POST
path: "/qa-scorecard/{call_id}/generate"
tags: ["qa-scorecard"]
---

# Generate Qa Scorecard

`POST /qa-scorecard/{call_id}/generate`

## Request

- Base URL: `https://dev.whispa.net` (the document declares no server; this is the origin it was published from)
- URL: `https://dev.whispa.net/qa-scorecard/{call_id}/generate`
- Auth: one of:
  - OAuth 2
    - Password
    - Token URL: `auth/bearer/login`
  - API key in cookie `access_token`

Generate (or re-generate) a QA scorecard.

Goes through the same single-flight lock as auto-generation, so admins can
safely backfill older calls without racing the post-call auto-gen path.

## Path parameters

- `call_id` string, uuid, required

## Query parameters

- `template_key` string, nullable: Override the scorecard template. Defaults to scenario.scorecard_template_key. If the scenario has no template configured and no override is provided, the request is rejected — there is no fallback template.

## Response `200`

Successful Response

- QaScorecardResponse: API response for QA scorecard reads/generation.
  - `enabled` boolean, required
  - `status` 'ready' | 'pending' | 'not_applicable' | 'disabled', required
  - `scorecard` QaScorecard: Persisted QA scorecard artifact.
    - `template_key` string, required
    - `display_name` string, required
    - `generated_at` string, date-time, required
    - `status` 'draft' | 'reviewed'
    - `reviewed_by_user_id` string, uuid, nullable
    - `reviewed_by_name` string, nullable
    - `reviewed_at` string, date-time, nullable
    - `sections` QaScorecardSection[], required
      - `key` string, required
      - `title` string, required
      - `items` QaScorecardItem[], required
        - `key` string, required
        - `title` string, required
        - `score_type` 'pass_fail' | 'numeric', required
        - `result` 'met' | 'not_met' | 'not_applicable', required
        - `score` integer, nullable
        - `max_score` integer, nullable
        - `comment` string, required
        - `evidence` string, nullable
        - `score_excluded` boolean: True when this item was intentionally excluded from score calculation because the model failed to return an assessment.
        - `manual_review` boolean: True when this item is excluded from the computed score because it needs human review or system access beyond the transcript.
      - `subtotal` integer, nullable
      - `subtotal_max_score` integer, nullable
    - `overall_score` integer, nullable
    - `total_max_score` integer, required
    - `pass_fail_status` 'pass' | 'fail' | 'not_applicable', nullable
    - `auto_fail` boolean: True when any auto_fail-flagged item resolved to 'not_met'.
    - `auto_fail_reasons` string[]: Titles of items that triggered the auto-fail.
    - `commentary` string, required
  - `reason` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/whispa/apis/whispa-api.md) - [All operations](https://skmtc.dev/whispa/apis/whispa-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whispa/apis/whispa-api/revisions/12c2e4aca43c?raw)
