---
title: "Get Conversation Timeline"
method: GET
path: "/conversations/{conversation_id}/timeline"
tags: ["conversations"]
---

# Get Conversation Timeline

`GET /conversations/{conversation_id}/timeline`

Get chronological timeline of messages and calls for a conversation.

Returns mixed timeline of SMS messages and voice calls sorted by created_at,
plus optional conversation summary if it exists.
Marks unread inbound messages as read.

## Path parameters

- `conversation_id` string, uuid, required

## Query parameters

- `limit` integer
- `offset` integer
- `before` string, nullable

## Response `200`

Successful Response

- TimelineResponse — Response model for timeline endpoint with optional summary.
  - `items` TimelineItemResponse[], required
    - `type` string, required
    - `id` string, uuid, required
    - `conversation_id` string, uuid, nullable
    - `followup_id` string, uuid, nullable
    - `direction` string, nullable
    - `from_number` string, nullable
    - `to_number` string, nullable
    - `created_at` string, date-time, required
    - `body` string, nullable
    - `media_urls` object[], nullable
    - `media_summary` object[], nullable
    - `media_summary_generated_at` string, date-time, nullable
    - `twilio_message_sid` string, nullable
    - `is_read` boolean, nullable
    - `provider_message_status` string, nullable
    - `provider_error_code` integer, nullable
    - `provider_error_message` string, nullable
    - `call_status` string, nullable
    - `call_duration_seconds` integer, nullable
    - `recording_url` string, nullable
    - `transcription_text` string, nullable
    - `transcription_formatted_content` object[], nullable
    - `event_type` string, nullable
    - `event_timestamp` string, date-time, nullable
    - `metadata` object, nullable
    - `initiated_by` string, nullable
    - `actor_name` string, nullable
    - `user_id` string, uuid, nullable
    - `sender_name` string, nullable
    - `sender_first_name` string, nullable
    - `sender_last_name` string, nullable
    - `reactions` object[], nullable
    - `ai_reasoning` string, nullable
    - `send_source` string, nullable
  - `summary` string, nullable
  - `summary_generated_at` string, date-time, nullable
  - `conversation_status` string, nullable
  - `is_archived` boolean
  - `followup_id` string, uuid, nullable
  - `active_intent` object, nullable
  - `available_phones` AvailablePhoneResponse[] — Available phone numbers for this customer
    - `phone` string, required — Phone number (10 digits, normalized)
    - `label` string, required — Display label: 'Primary' or 'Alternate'
    - `is_primary` boolean, required — Whether this is the primary phone number
  - `has_more` boolean — Older items exist before this page

## Other responses

- `404` — Not found
- `422` — Validation Error

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/noso/crucible-backend-api/revisions/6e257c69d1d1/schema)
