---
title: "The receipt for a call"
method: POST
path: "/api/voice/event"
tags: ["Voice"]
---

# The receipt for a call

`POST /api/voice/event`

## Request

- Base URL: `https://botnotice.app`
- URL: `https://botnotice.app/api/voice/event`
- Auth: HTTP bearer

Point the voice platform's webhook here. Understands BotNotice's own shape, Retell's webhooks (call_started, call_ended, call_analyzed) and Vapi's server messages (status-update, end-of-call-report). A transcript in an end-of-call message is read once for the disclosure and where it fell, then dropped; only the platform's call id is kept.

## Request body

- union
  - object
    - `call_id` string, required
    - `event` 'started' | 'disclosed' | 'handoff_human' | 'ended', required
    - `at` string: ISO time
    - `agent` string
    - `transcript` string: Only with ended; read once, not stored
  - object: A Retell or Vapi webhook body, as sent

## Response `200`

OK

- object
  - `ok` boolean
  - `platform` string
  - `recorded` object[]
    - `call_id` string
    - `written` integer
  - `kept` string

## Other responses

- `401`: Error
- `402`: No active plan

---

[API](https://skmtc.dev/botnotice/apis/botnotice-api.md) · [All operations](https://skmtc.dev/botnotice/apis/botnotice-api/llms.txt) · [OpenAPI document](https://skmtc.dev/botnotice/apis/botnotice-api/revisions/33724fe6eab9?raw)
