---
title: "post-conversation"
method: POST
path: "/webhook-events/post-conversation"
tags: ["Webhooks"]
---

# post-conversation

`POST /webhook-events/post-conversation`

Fired **after** the call ends. Contains the full transcript, call
metadata, recording URL, and all agent variables that were in scope
during the conversation.

**Delivery.** Sent as an HTTP POST with a 30 second timeout. Non-2xx
responses and network errors mark the delivery as failed; there are
no retries. Verify the `X-Signature` header before trusting the body.
For the full field-level reference, see the [Webhooks guide](/atoms/atoms-platform/features/webhooks).

## Headers

- `X-Signature` string, required

## Request body

- WebhookEventPostConversation — Common envelope shared by every webhook event Atoms delivers to your endpoint. The `metadata` field's shape varies by event type — see the per-event schemas (`WebhookEventPreConversation`, `WebhookEventPostConversation`, `WebhookEventAnalyticsCompleted`).
  - `url` string, required — The webhook URL endpoint that received the event.
  - `description` string, required — Human-readable label configured on the webhook (e.g. "Debt Collection Agent's Endpoint").
  - `event` string, required — Event identifier in the form `{agentId}.{eventType}`.
  - `id` string, required — Unique webhook delivery ID (separate from `metadata.callId`).
  - `metadata` object, required
    - `agentId` string, required
    - `eventType` 'post-conversation', required
    - `conversationType` string, required
    - `callId` string, required
    - `recordingUrl` string, uri, required — URL to the composite call recording (`.wav`).
    - `callData` WebhookEventCallData, required — Call-level metadata shared by `post-conversation` and `analytics-completed` events. In `analytics-completed`, the `callDirection` field may be absent.
      - `fromNumber` string, required — Originating phone number in E.164 format.
      - `toNumber` string, required — Destination phone number in E.164 format.
      - `callDuration` number, float, required — Total call duration in **seconds** (float).
      - `callStatus` 'completed' | 'no_answer' | 'failed' | 'cancelled', required — Terminal status.
      - `callDirection` 'telephony_outbound' | 'telephony_inbound' — Call direction. Present on `post-conversation`; may be absent on `analytics-completed`.
      - `answerTime` string, date-time, required — ISO 8601 timestamp when the call was answered (UTC).
      - `endTime` string, date-time, required — ISO 8601 timestamp when the call ended (UTC).
    - `transcript` WebhookEventTranscriptTurn[], required — Ordered list of transcript turns.
      - `role` 'agent' | 'user', required — Speaker role.
      - `content` string, required — The spoken text for this turn.
      - `timestamp` string, date-time, required — ISO 8601 timestamp of when this turn began (UTC).
    - `variables` object, required — Flat key-value map of all agent variables in scope during the call. **This object is fully dynamic.** Keys and values are entirely determined by the agent's configuration; they are not fixed by the platform. New keys can appear at any time. Store as JSON and iterate keys — do not hard-code column mappings. Common platform keys include `agent_name`, `customer_name`, `current_date`, `default_language`; domain-specific keys (e.g. `due_amount`, `bank_name`) come from your agent's prompt configuration.

## Response `2XX`

Your endpoint should return a 2XX status to acknowledge receipt.

---

[API](https://skmtc.net/smallest-inc/apis/agent-management-api.md) · [All operations](https://skmtc.net/smallest-inc/apis/agent-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/smallest-inc/agent-management-api/revisions/c2d0eb64b01a/schema)
