---
title: "AI sidecar callback"
method: POST
path: "aiSidecarCallback"
tags: ["Calls"]
---

# AI sidecar callback

`POST aiSidecarCallback` (webhook)

Sent to the sidecar's `url` as an HTTP `POST` whenever you set one. The same event is always
published in real time on the SignalWire Relay event channel (`calling.ai.sidecar`), so the
webhook is optional. Each event is wrapped under `sidecar_event` — read that before checking its
`type` and fields.

This payload covers the envelope shared by every callback. For the fields specific to each `type`
(such as `insight.raw`, `turn.transcript_delta`, or `final.summary`), see the
[SWML ai_sidecar reference](/docs/swml/reference/calling/ai-sidecar#callback-types).

## Payload

- object — Sent to the sidecar's `url` as an HTTP `POST` whenever you set one. The same event is always published in real time on the SignalWire Relay event channel (`calling.ai.sidecar`), so the webhook is optional. Each event is wrapped under `sidecar_event` — read that before checking its `type` and fields. This payload covers the envelope shared by every callback. For the fields specific to each `type` (such as `insight.raw`, `turn.transcript_delta`, or `final.summary`), see the [SWML ai_sidecar reference](/docs/swml/reference/calling/ai-sidecar#callback-types).
  - `call_info` object, required — Envelope describing the call. `project_id` and `space_id` are included when available.
    - `project_id` string, uuid — Your project ID.
    - `space_id` string, uuid — Your Space ID.
    - `call_id` string, uuid, required — ID of the call the sidecar is attached to.
    - `content_type` string, required — The content type of the POST body. Always `text/json`.
    - `content_disposition` string, required — How the body is delivered. Always `post_data`.
    - `conversation_type` string, required — The conversation type. Always `voice`.
  - `sidecar_event` object, required — The sidecar callback. Carries the common fields below plus type-specific fields.
    - `type` 'start' | 'turn' | 'request' | 'thought' | 'insight' | 'skip' | 'tool_call' | 'tool_result' | 'action' | 'global_data_change' | 'history_pruned' | 'error' | 'ask_request' | 'ask_answer' | 'stop' | 'final', required — The callback type.
    - `ts` integer, required — When the event was produced, as a Unix timestamp in microseconds.
    - `tick_id` integer, required — Identifies the evaluation this callback came from. Callbacks produced in the same evaluation share a `tick_id`.
    - `channel_data` object, required — Call/channel context: `call_id`, plus `caller_id_name` / `caller_id_number` / `destination_number` when available.

## Acknowledgement `200`

Webhook received

---

[API](https://skmtc.net/signalwire/apis/signalwire-rest-api.md) · [All operations](https://skmtc.net/signalwire/apis/signalwire-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/signalwire/signalwire-rest-api/versions/05c5164b85c7/schema)
