---
title: "Call Summary Webhook"
method: POST
path: "call-summary"
tags: ["Webhooks"]
---

# Call Summary Webhook

`POST call-summary` (webhook)

Hippocratic AI sends call summary data to the partner's webhook endpoint after completing a patient interaction. Partners should implement this webhook endpoint to receive call summaries.

**Retry Policy:** If the webhook delivery fails (non-2xx response or network error), Hippocratic AI will automatically retry the delivery 3-5 times with 30-minute intervals between attempts. After the maximum retry attempts, the delivery will be marked as permanently failed.

**Compatibility**
- New optional fields and enum values may appear without notice. Partners MUST ignore unknown fields and unknown enum values.
- Field removals, type changes, and enum-value removals are breaking and will be coordinated in advance.
- Optional fields are typically sent as `""` / `[]` rather than omitted. Treat both as "no value".
- A partner receives exactly one of the two contracts (`call-summary` or `call-summary-legacy`). Confirm with your DA. Payloads are not interchangeable.
- Deliveries may be retried after non-2xx responses. `call.call_id` is stable across retries — deduplicate on it.
- The V2 `version` field signals major contract changes only. Field and enum additions do not bump it.

## Payload

- object
  - `version` string, required: Call summary format version
  - `call_summary` object, required: Complete call summary data
    - `call_id` string, uuid, required: Unique identifier for the call
    - `datetime_of_call` string: Local datetime string
    - `call_duration_seconds` string: Call duration in seconds
    - `initiated_by_patient` boolean: Whether the patient initiated the call
    - `language` string: Language used in call
    - `enhanced_disposition` 'call_completed' | 'call_hung_up' | 'no_answer' | 'failed_verification' | 'call_failed' | 'immediate_hang_up' | 'voicemail_detected' | 'transferred' | 'transfer_failed' | 'hung_up_during_transfer': How the call ended. Computed by ICE: voicemail detection from `call_end_reason`, transfer outcomes from `dispositions[].call_outcome`, fallback to `dispositions[].disposition`.
    - `appointment_id` string: External appointment identifier injected when an appointment lookup succeeds (scheduling scripts only).
    - `call_url` string, uri: URL to view the call summary in our Portal
    - `call_type` string: Shorthand for the script or use case
    - `customer_patient_id` string: Medical record number
    - `patient_name` object: Patient's structured name
      - `first` string
      - `last` string
    - `date_of_birth` string, date: DOB in YYYY-MM-DD format
    - `gender` 'unknown' | 'male' | 'female' | 'other' | 'transgender/him' | 'transgender/her' | 'nonbinary' | 'unspecified/they': Patient gender (FHIR-aligned).
    - `phone_number` string: Contact number
    - `care_location_name` string: Clinic or care facility
    - `physician_name` string: Physician involved (may be empty)
    - `conversation_summary` string: Free-text summary of call
    - `do_not_call` boolean: If true, summary questions should indicate why
    - `medication_summaries` object[]: Medications from the patient record
      - `name` string: Medication name.
      - `type` string: Medication category. Typical values: "New Rx", "Old Rx", "Self-Reported".
      - `dosage` string: Free-text dosage.
      - `adherence` string: Adherence reported on the call. Typical values: "Yes", "No", "Unknown", "N/A".
      - `notes` string: Free-text notes.
    - `device_summaries` object[]: Medical devices discussed
      - `model` string: Device model.
      - `adherence` string: Adherence reported on the call. Typical values: "Adherent", "Delinquent", "N/A".
      - `measurement` string: Free-text measurement / reading.
      - `notes` string: Free-text notes.
    - `schedule_engine_summaries` object[]: Appointment scheduling outputs produced during the call (scheduling scripts only).
      - `output_name` string: Output identifier. Default "scheduling_summary".
      - `output_type` 'ehr_summary' | 'interjection' | 'notes' | 'mcm_summary' | 'offline_errors' | 'kickout' | 'scheduling' | 'form_fill' | 'mdr_detection' | 'adverse_event_detection' | 'call_errors' | 'escalation_reconciliation' | 'audio_summary' | 'ai_screener_detected' | 'custom_call_success' | 'analytics': Engine that produced the output.
      - `output_value` object[]: Shape varies by scheduling tool. New keys may appear with new integrations. Includes a `booking_successful` boolean.
    - `summary_question_answers` object[]: Responses to structured questions. Items where `hide_from_summary_display=true` are filtered out before delivery.
      - `question` string: Display question text.
      - `answer` string: Patient's response.
      - `choices` string[]: Available answer options.
      - `response_type` 'choices_yes_no_unknown' | 'choices_yes_no' | 'measurement' | 'open_ended' | 'multi_select' | 'multiple_choice' | 'mcm_general' | 'timestamp': Shape of the question/answer.
      - `answer_indexes` integer[]: Indexes into `choices` matching the patient's answer (choice-based types).
      - `section` string: Section where question was asked.
      - `external_id` string: External-system mapping identifier.
      - `variable_name` string: Internal variable name.
      - `default_value` unknown
      - `display_value` unknown
      - `prompt_question` string: LLM-specific prompt used to elicit the answer.
      - `notes` string: Additional notes.
      - `hide_from_summary_display` boolean: Always false in delivered payloads (true items are filtered out).
    - `follow_up_items` string[]: Free-text follow-up actions identified during the call.
    - `todo_summaries` object[]: Task items generated from the call.
      - `todo_id` string, uuid
      - `partner_id` string, uuid
      - `action` string: Action to be taken.
      - `due_date` string, date-time: ISO-8601 UTC due date.
      - `completed_date` string, date-time, nullable: ISO-8601 UTC completion timestamp; null when not completed.
      - `priority` 'urgent' | 'high' | 'medium' | 'low': Todo priority.
      - `todo_status` 'draft' | 'pending' | 'completed' | 'archived': Todo lifecycle status.
      - `todo_type` 'unknown' | 'patient_escalation' | 'patient_escalation_failure' | 'patient_call_review' | 'patient_callback' | 'clinical_review' | 'client_follow_up' | 'escalation_case_review' | 'data_annotation': Todo category.
      - `todo_metadata` object, nullable: Free-form, varies by `todo_type`. Not stable.
      - `external_id` string, nullable: External-system identifier for this todo.
    - `escalation_summaries` object[]: Clinical escalations (kickouts) triggered during the call.
      - `kickout_id` string: Stable identifier for the escalation rule that fired.
      - `display_name` string: Human-readable escalation name.
      - `severity` 'in_progress' | 'white' | 'blue' | 'green' | 'yellow' | 'amber' | 'orange' | 'purple' | 'red': Triage color. `in_progress` indicates a kickout that has started but not yet been color-classified.
      - `summary` string: Generated summary of the escalation context.
      - `utp_status` string: Patient transfer status for this kickout (if applicable).
    - `form_fill_summaries` object[]: Structured form responses captured during the call. Fields are harmonized with `summary_question_answers` plus form-specific extensions.
      - `question` string: Display question text.
      - `answer` string: Patient's response.
      - `choices` string[]: Available answer options.
      - `response_type` 'choices_yes_no_unknown' | 'choices_yes_no' | 'measurement' | 'open_ended' | 'multi_select' | 'multiple_choice' | 'mcm_general' | 'timestamp': Shape of the form question. Same enum as `summary_question_answers.response_type`.
      - `answer_indexes` integer[]: Indexes into `choices` matching the patient's answer.
      - `external_id` string: External-system identifier for this form question.
      - `variable_name` string: Internal variable name (sourced from Snow's `question_id`).
      - `external_options` string[]: External-system equivalents of `choices`.
      - `formatted_options` string: Pre-formatted options string for display.
      - `changed` boolean: True if the answer was edited after initial capture.
      - `applicable` boolean: True if the question was applicable to this patient (default true).
      - `skipped` boolean: True if the question was intentionally skipped.
      - `asked` boolean: True if the question was asked during the call.
      - `should_highlight` boolean: Hint to UI to highlight this answer.
      - `arbitration_status` string: Status of any post-call arbitration / review on this answer.
      - `created_by_user_id` string, uuid: Internal user ID that captured this form answer.
    - `hippocratic_ids` object: Internal system identifiers primarily for debugging. All seven fields are always present; each may be an empty string if not set on this call.
      - `patient_id` string: Hippocratic patient UUID. May be an empty string.
      - `partner_id` string: Partner UUID. May be an empty string.
      - `partner_care_location_id` string: Partner care-location UUID. May be an empty string.
      - `script_id` string: Script UUID. May be an empty string.
      - `agent_id` string: Agent UUID. May be an empty string.
      - `outreach_id` string: Outreach UUID. May be an empty string.
      - `scenario_id` string: Scenario UUID. May be an empty string.
    - `custom_variables` object: Free-form, partner-configured. Keys and shape are not stable.

## Acknowledgement `200`

Webhook received and processed successfully

## Other responses

- `201`: Webhook received and call summary created
- `400`: Bad request - invalid payload format
- `401`: Unauthorized - invalid webhook authentication
- `500`: Internal server error processing webhook

---

[API](https://skmtc.dev/hippocraticai/apis/hippocratic-ai-agent-api-suite.md) - [All operations](https://skmtc.dev/hippocraticai/apis/hippocratic-ai-agent-api-suite/llms.txt) - [OpenAPI document](https://skmtc.dev/hippocraticai/apis/hippocratic-ai-agent-api-suite/revisions/c2472c92766c?raw)
