calls

Correct Classification

Correct a finalized call's answered_by / conversation_outcome (Admin only).

Supervised review of autonomous campaigns: the classifier's label drives the retry ladder and the CRM note, so a reviewer needs to overrule it — and the correction reverses what the wrong label caused, reopening a campaign membership it had closed. Admin-only and audited (every change writes a call_classification_corrections row), because it edits the record a customer's CRM has already been told about.

Args: call_id: ID of the call to correct payload: New answered_by and/or conversation_outcome, plus an optional reason recorded on the audit row

Returns: The corrected call, and what the correction changed beyond the two fields (membership reopened, artifacts invalidated)

patch/calls/{call_id}/correct-classification

Request

  • Base URL
    https://dev.whispa.net (the document declares no server; this is the origin it was published from)
  • Auth
    • OAuth 2
      Password
      Token URL: auth/bearer/login
    • or API key in cookie access_token

Path parameters

call_idstring uuid required

Request body

answered_by'human' | 'voicemail' | 'unclear'

Who answered the call (AI-classified from transcript).

This is the first stage of call classification - determining whether a human or voicemail answered the call.

conversation_outcome'engaged' | 'refused' | 'wrong_person' | 'other'

AI-classified judgement of what kind of conversation occurred.

Only applicable when answered_by=HUMAN. Runtime actions such as scheduling a callback or transferring the caller are recorded independently in WorkflowDisposition and must never overwrite this judgement.

notestring nullable

Why the correction was made; stored on the audit row

Response

Successful Response

membership_reopenedboolean required

Whether a campaign membership this outcome had closed was returned to in_progress. The campaign still needs activating before the next call goes out.

cancelled_scheduled_callsinteger

Queued automated attempts cancelled because the corrected outcome is one the retry ladder stops on. Only unclaimed attempts are cancelled, so a call already being placed is never interrupted.

membership_held_reasonstring nullable

Set when the campaign membership stayed closed even though the label that closed it was corrected away: 'attempts_exhausted' (the policy's attempt budget is spent) or 'commitment_still_refused' (the commitment classifier independently says the customer refused). Tells the reviewer why the account did not come back.

invalidated_artifactsstring[]

Human-only artifacts cleared because the call is no longer marked human-answered (summary, coaching, tags, qa_scorecard, idv, ...)

summary_regeneration_availableboolean

The call is now human-answered but carries a no-contact stub summary; retrying finalization would regenerate its artifacts.

Changes

No recorded changes to this operation across all 1 revision of this API.