---
title: "Update call log source data"
method: PATCH
path: "/observability/v2/call-logs/{id}/"
tags: ["observability"]
---

# Update call log source data

`PATCH /observability/v2/call-logs/{id}/`

## Request

- Base URL: `https://api.cekura.ai`
- URL: `https://api.cekura.ai/observability/v2/call-logs/{id}/`
- Auth: one of:
  - API key in header `X-CEKURA-API-KEY`
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

Updates source data for an existing production call log.

**Supported fields**
- `call_id` — Provider call identifier. Subject to the organization's duplicate-call-ID policy.
- `transcript_json` — Structured transcript in a supported provider or Cekura format. Use `transcript_type` to specify the format, or omit it for automatic detection. This replaces both transcript representations.
- `timestamp` — Call start time in ISO 8601 format.
- `duration` — Call duration in minutes.
- `call_ended_reason` and `customer_number` — Provider-supplied call attributes.
- `metadata` and `dynamic_variables` — JSON objects merged at the top level with the existing values. Supplied keys overwrite matching keys; omitted keys are preserved.

- `status` and `feedback` — Human review data. `status` accepts `success`, `failure`, `reviewed_success`, or `reviewed_failure`.
- `reevaluate_metrics` — when `true`, evaluate metrics on the call log after applying this update. Defaults to `false`.

**Restrictions**
Only the fields listed above are accepted. System-managed fields, including agent and project ownership, metric evaluations, topic, and dropoff point, cannot be updated.

**Metric evaluation**
Metrics are not recomputed unless `reevaluate_metrics` is `true`. For a call ingested with deferred evaluation, this releases its first evaluation; otherwise it re-evaluates an already evaluated call. Calls whose evaluation is still running are left untouched. To evaluate several call logs at once, use `rerun_evaluation` instead.

## Path parameters

- `id` integer, required

## Request body

- PatchedUpdateCallLog
  - `status` 'success' | 'failure' | 'reviewed_success' | 'reviewed_failure': Human-reviewed call outcome. Use `success`, `failure`, `reviewed_success`, or `reviewed_failure`. * `success` - Success * `failure` - Failure * `reviewed_success` - Reviewed Success * `reviewed_failure` - Reviewed Failure
  - `feedback` string: Human feedback about the call.
  - `call_id` string: Unique identifier for the call. Example: - `"call_abc123xyz"` - `"stereo_audio_session_456"`
  - `transcript_type` 'cekura' | 'vocera' | 'vapi' | 'retell' | 'deepgram' | 'pipecat' | 'livekit' | 'elevenlabs': Format of the `transcript_json` payload. Tells Cekura how to parse roles and timestamps. - `vapi` — Vapi webhook format: `[{"role": "bot"|"user", "message": "...", "time": 0.0}]` - `retell` — Retell webhook format - `elevenlabs` — ElevenLabs format - `livekit` — LiveKit format - `pipecat` — Pipecat format - `deepgram` — Deepgram format - `cekura` (default) — `[{"role": "Testing Agent"|"Main Agent", "content": "...", "start_time": 0.0, "end_time": 2.5}]`. **Valid roles are `"Testing Agent"` and `"Main Agent"` only** — using `"agent"` or `"user"` will return a validation error. Omit this field to detect the supported format automatically. * `cekura` - cekura * `vocera` - vocera * `vapi` - vapi * `retell` - retell * `deepgram` - deepgram * `pipecat` - pipecat * `livekit` - livekit * `elevenlabs` - elevenlabs
  - `transcript_json` unknown
  - `timestamp` string, date-time: When the call occurred. Example: `2024-03-15T10:15:45Z`
  - `duration` number, double: Call duration in minutes as a non-negative number. For example, use `1.5` for one minute and 30 seconds.
  - `call_ended_reason` string: Reason why the call ended Example: - `"customer-ended-call"` - `"agent-ended-call"`
  - `customer_number` string: Customer's phone number or identifier Example: - `"+1234567890"` - `"customer_abc123"`
  - `metadata` object: Additional call metadata. Supplied top-level keys are merged with existing metadata; supplied keys overwrite matching keys and omitted keys are preserved. Example: ```json { "customer_id": "123", "order_id": "ORD-12345", "name": "John Doe" } ```
  - `dynamic_variables` object: Dynamic variables used to replace {{variables}} in agent description. Supplied top-level keys are merged with existing variables; supplied keys overwrite matching keys and omitted keys are preserved. Example: ```json { "subscription_id": "SUB-12345", "product_type": "premium" } ```
  - `reevaluate_metrics` boolean: Run metric evaluation on the call log after applying this update. Releases a call that was ingested with deferred evaluation, otherwise re-evaluates an already evaluated call. Calls whose evaluation is still running are left untouched.

## Response `200`

- CallLogDetail
  - `id` integer
  - `duration` string: Call duration in minutes in MM:SS format. Example: `01:10`
  - `voice_recording_url` string: URL to access the voice recording. Example: `"https://storage.example.com/recordings/call_123_20240315.mp3"`
  - `critical_categories` CallLogCriticalCategories[]: Critical categories from call evaluation
    - `category_id` integer, required: Category ID
    - `category` string, required: Category name
    - `deviation` number, double, required: Deviation
    - `wrongly_marked` boolean, required: Whether the category was wrongly marked
    - `feedback` string, required: Feedback
    - `priority` 'critical' | 'non-critical' | 'not_a_bug', required: Priority * `critical` - Critical * `non-critical` - Non Critical * `not_a_bug` - Not A Bug
  - `transcript_object` CallLogTranscriptObject[]: Structured transcript data with timestamps. Example: ```json [ { "role": "Testing Agent", "content": "Hello", "start_time": 1.2, "end_time": 1.8 }, { "role": "Main Agent", "content": "Hello, how can I help you today?", "start_time": 1.8, "end_time": 2.5 } ]`
    - `role` string, required: Role of the message
    - `content` string, required: Content of the message
    - `timestamp` number, double, required: Timestamp of the message
  - `status` 'success' | 'failure' | 'reviewed_success' | 'reviewed_failure': * `success` - Success * `failure` - Failure * `reviewed_success` - Reviewed Success * `reviewed_failure` - Reviewed Failure
  - `agent_id` string: Agent ID. Example: `2142`
  - `agent_name` string: Agent name
  - `agent_version` object, nullable: The agent version (history record) that was live when this call was ingested, or null.
  - `evaluation` Evaluation
    - `metrics` CallLogListSerializerMetricsWithExplanation[], required
      - `id` integer, required: Metric ID
      - `name` string, required: Metric name
      - `type` string, required: Metric type
      - `score` number, double, required: Evaluated metric score, Present if metrictype is not enum
      - `enum` string, required: Metric enum, Present if type is enum
      - `value` string, required: Evaluated metric value, Present if metric type is enum
      - `explanation` string[], required
      - `extra` object, required: Evaluated metric extra data
  - `metadata` object: Additional call metadata. Example: ```json { "ended_reason": "customer-ended-call", "ringing_duration": 3.941, "call_type": "inbound" } ```
  - `dynamic_variables` object: Dynamic Variables used in the call. Example: ```json { "customer_name": "John Doe", "order_id": "ORD-12345", "product_type": "premium" } ```
  - `testing_channel_index` integer, nullable: The channel index of the testing agent in the audio recording
  - `waveform` object: Amplitude envelope of the recording, one array of values per audio channel, so a waveform can be drawn without downloading the audio. Null for recordings processed before peaks were stored.
  - `timestamp` string, date-time: When the call occurred. Example: `2024-03-15T10:15:45Z`
  - `success` boolean, nullable: Whether the call was successful. Example: `true` or `false`
  - `is_reviewed` boolean: Whether the call has been reviewed. Example: `true` or `false`
  - `feedback` string: Feedback about the call. Example: `"Great Call"`
  - `rubric` unknown
  - `transcript` string: Full text transcript of the call. Example: ```text [00:01] Testing Agent: Hello. [00:02] Main Agent: Hello, how can I help you today? [00:03] Testing Agent: Well, I mean, sure. What time exactly are we talking about here [00:04] Main Agent: 6 PM. [00:05] Testing Agent: Great. I'll book that for you. Just a sec. [00:06] Main Agent: Okay. ```
  - `call_ended_reason` string: Reason why the call ended. Example: - `"customer-ended-call"` - `"agent-ended-call"`
  - `dropoff_point` string: Point in conversation where user disengaged. Example: `"end of conversation as no queries remaining"`
  - `topic` string: Topic of the call. Example: - `"product_inquiry"` - `"technical_support"`
  - `customer_number` string: Customer's phone number or identifier. Example: - `"+1234567890"` - `"customer_abc123"`
  - `user_generated_transcript` unknown
  - `error_message` string, nullable
  - `created_at` string, date-time: When this record was created. Example: `2024-03-15T10:30:45Z`
  - `updated_at` string, date-time: When this record was last updated. Example: `2024-03-15T10:35:11Z`
  - `call_id` string, required: Unique identifier for the call. Example: - `"call_abc123xyz"` - `"stereo_audio_session_456"`
  - `trace_id` string: OpenTelemetry trace ID (32-char hex). Set when OTel tracing is enabled.
  - `is_log_present` boolean: Whether provider execution logs are stored for this call.
  - `agent` integer, nullable: Agent ID
  - `project` integer, nullable: Project ID (denormalized from agent for query performance)

## Other responses

- `400`
- `404`

## Changes

- **2026-11-03** `a6fb6a739212`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/cekura/apis/cekura-api/changes/observability/v2/call-logs/:id/patch.md)

---

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