---
title: "Get Conversations By Category"
method: GET
path: "/conversations/by-category/{category}"
tags: ["conversations"]
---

# Get Conversations By Category

`GET /conversations/by-category/{category}`

Get paginated conversations for a specific category.

## Path parameters

- `category` 'all' | 'require-action' | 'approval-required' | 'ongoing' | 'won' | 'lost' | 'review' | 'job_booked' | 'membership_sold' | 'membership_renewed', required

## Query parameters

- `limit` integer
- `offset` integer
- `search` string, nullable
- `sort` 'recent' | 'oldest' | 'unread'
- `user_id` string, nullable — Filter by technician user_id
- `trade` string, nullable — Filter by technician trade (e.g. hvac, plumbing, electrical)

## Response `200`

Successful Response

- PaginatedConversationsResponse — Response model for paginated conversations by category.
  - `conversations` ConversationResponse[], required
    - `id` string, uuid, required
    - `contact_id` string, nullable
    - `customer_phone` string, required
    - `customer_name` string, nullable
    - `customer_id` string, nullable
    - `followup_id` string, uuid, nullable
    - `conversation_status` string, nullable
    - `last_message_at` string, date-time, nullable
    - `last_message_body` string, nullable
    - `last_message_direction` string, nullable
    - `unread_count` integer, required
    - `is_archived` boolean, required
    - `created_at` string, date-time, required
    - `summary` string, nullable
    - `summary_generated_at` string, date-time, nullable
    - `call_to_action` string, nullable
    - `agent_context` string, nullable
    - `priority` string, nullable
    - `intent_updated_at` string, date-time, nullable
    - `technician_name` string, nullable
    - `technician_first_name` string, nullable
    - `technician_last_name` string, nullable
    - `job_id` string, nullable
    - `followup_status` string, nullable
    - `followup_kind` string, nullable
    - `min_estimate_value` number, nullable
    - `max_estimate_value` number, nullable
    - `address` string, nullable
    - `won_amount` number, nullable
    - `lost_reason` string, nullable
    - `trade` string, nullable
    - `job_type` string, nullable
    - `customer_profile` CustomerProfileSidebar — Customer profile data for the CaseSidebar display.
      - `has_active_membership` boolean
      - `membership_type_name` string, nullable
      - `memberships` MembershipSidebar[]
        - `id` integer, required
        - `membership_type_name` string, nullable
        - `status` string, nullable
        - `from_date` string, nullable
        - `to_date` string, nullable
        - `billing_frequency` string, nullable
      - `total_jobs_count` integer
      - `total_revenue` number
      - `avg_job_value` number, nullable
      - `last_job_date` string, nullable
      - `customer_created_on` string, nullable
      - `st_customer_id` integer, nullable
      - `days_since_last_service` integer, nullable
      - `services_last_12_months` integer, nullable
      - `same_day_close_rate` number, nullable
      - `outreach_guidance` string, nullable
      - `equipment` EquipmentSidebar[], nullable
        - `name` string, nullable
        - `equipment_type` string, nullable
        - `installed_on` string, nullable
        - `manufacturer` string, nullable
        - `model` string, nullable
        - `manufacturer_warranty_end` string, nullable
      - `last_synced_at` string, nullable
    - `estimates_data` unknown[], nullable
      - unknown
    - `sold_estimate` object, nullable
    - `intent_priority` string, nullable
    - `triggered_by_tool` string, nullable
    - `source_system` string, nullable
    - `hcp_customer_id` string, nullable
    - `source` string, nullable
    - `aspire_engaged` boolean, nullable
    - `aspire_attempt_count` integer, nullable
    - `aspire_next_touch_at` string, nullable
    - `aspire_next_review_at` string, nullable
    - `aspire_last_reviewed_at` string, nullable
    - `aspire_review_reason` string, nullable
    - `aspire_review_decision` string, nullable
    - `aspire_details` object, nullable
  - `total_count` integer, required
  - `limit` integer, required
  - `offset` integer, required

## 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.dev/noso/apis/crucible-backend-api/revisions/6e257c69d1d1?raw)
