> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reachedapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a Call Log

> Retrieves the full details of a specific call.

# Get a Call Log

Retrieves the full details of a specific call, including recording URL, transcript, summary, and disposition.

## Request

`GET /v1/call-logs/:id`

### Path Parameters

| Parameter | Type | Required | Description |
| - | - | - | - |
| `id` | uuid | Yes | The unique identifier of the call log |

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/api-gateway/v1/call-logs/log-uuid-1" \
    -H "Authorization: Bearer rchd_live_xxxxxxxxxxxx"
  ```

  ```javascript JavaScript theme={null}
  const callId = "log-uuid-1";
  const response = await fetch(
    `https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/api-gateway/v1/call-logs/${callId}`,
    {
      headers: {
        "Authorization": "Bearer rchd_live_xxxxxxxxxxxx"
      }
    }
  );
  const { data } = await response.json();
  ```

  ```python Python theme={null}
  import requests

  call_id = "log-uuid-1"
  response = requests.get(
      f"https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/api-gateway/v1/call-logs/{call_id}",
      headers={"Authorization": "Bearer rchd_live_xxxxxxxxxxxx"}
  )
  data = response.json()
  ```
</CodeGroup>

## Response

<Tabs>
  <Tab title="200 OK">
    ```json theme={null}
    {
      "data": {
        "id": "log-uuid-1",
        "lead_id": "a1b2c3d4-...",
        "campaign_id": "c1d2e3f4-...",
        "agent_id": "user-uuid-1",
        "from_number": "+33140000000",
        "to_number": "+33612345678",
        "duration": 145,
        "status": "completed",
        "disposition": "appointment-scheduled",
        "is_conversation": true,
        "recording_url": "https://...",
        "transcript": "...",
        "transcription_status": "completed",
        "summary": "Call with John Doe from Acme Corp. Discussed Q2 demo opportunity. John is interested and booked a meeting for next Thursday.",
        "notes": "Demo booked for next Thursday",
        "started_at": "2026-03-21T14:30:00.000Z",
        "ended_at": "2026-03-21T14:32:25.000Z",
        "updated_at": "2026-03-21T14:33:00.000Z"
      }
    }
    ```
  </Tab>

  <Tab title="404 Not Found">
    ```json theme={null}
    {
      "error": {
        "code": "not_found",
        "message": "Call log not found"
      }
    }
    ```
  </Tab>
</Tabs>

### Response Fields

| Field | Type | Description |
| - | - | - |
| `id` | uuid | Call log unique identifier |
| `lead_id` | uuid | Associated lead ID |
| `campaign_id` | uuid | Associated campaign ID |
| `agent_id` | uuid | ID of the agent who handled the call |
| `from_number` | string | Caller phone number |
| `to_number` | string | Called phone number |
| `duration` | integer | Call duration in seconds |
| `status` | string | Call status (`completed`, `no-answer`, `busy`, `failed`) |
| `disposition` | string | Call outcome disposition |
| `is_conversation` | boolean | Whether the call was a real conversation (answered + bridged, duration >= 60s) |
| `recording_url` | string | URL to the call recording (if available) |
| `transcript` | string | Full call transcript (if transcription is completed) |
| `transcription_status` | string | Transcription status (`pending`, `completed`, `failed`, `none`) |
| `summary` | string | AI-generated call summary (available when transcription is completed) |
| `notes` | string | Notes added by the agent after the call |
| `started_at` | datetime | Call start timestamp |
| `ended_at` | datetime | Call end timestamp |
| `updated_at` | datetime | Last update timestamp |

<Note>
  The `summary` field is generated at the same time as the `transcript`. When `transcription_status` is `completed`, both `transcript` and `summary` are populated. When `transcription_status` is `pending`, neither is available yet.
</Note>

## Get a Fresh Recording URL

Recording URLs returned in the call log response are presigned and expire. Use the dedicated recording endpoint to get a fresh URL valid for 1 hour:

`GET /v1/call-logs/:id/recording`

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/api-gateway/v1/call-logs/log-uuid-1/recording" \
    -H "Authorization: Bearer rchd_live_xxxxxxxxxxxx"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://kdjmltmhxvvmiuehafgl.supabase.co/functions/v1/api-gateway/v1/call-logs/log-uuid-1/recording",
    { headers: { "Authorization": "Bearer rchd_live_xxxxxxxxxxxx" } }
  );
  const { data } = await response.json();
  // data.recording_url is valid for 1 hour
  // data.expires_in_seconds = 3600
  ```
</CodeGroup>

```json theme={null}
{
  "data": {
    "call_log_id": "log-uuid-1",
    "recording_url": "https://kdjmltmhxvvmiuehafgl.supabase.co/storage/v1/object/sign/call-recordings/...?token=...",
    "expires_in_seconds": 3600,
    "format": "wav"
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.