Physician visit closed

Fires when a physician visit closes. AI and terminated threads do not emit this event ever. closed_at is the thread's expires_at at that moment. If the expiry is later extended and the visit closes again, a follow-up event fires with a later closed_at. Handle it as a new close. Dedupe repeat deliveries on data.thread.id and closed_at together.

postWebhookthread.visit_closed

Payload

type'thread.visit_closed' required
idstring uuid required
timestampstring date-time required

datetime in ISO 8601 format

Example payload

{
  "data": {
    "closed_at": "2030-01-01T00:00:00Z"
  },
  "timestamp": "2030-01-01T00:00:00Z"
}

Response

Return 200 if the webhook is accepted

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.