---
title: "List Email Threads"
method: GET
path: "/v2/email-threads"
tags: ["email-threads"]
---

# List Email Threads

`GET /v2/email-threads`

## Request

- Base URL: `https://api.stuut.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stuut.ai/v2/email-threads`
- Auth: HTTP bearer

List Email Threads

## Query parameters

- `page` integer: Page number, 0 indexed.
- `limit` integer: Number of records per page.
- `category` 'all' | 'drafts' | 'sent' | 'unread'
- `partner_id` string, nullable: Filter threads by partner ID.
- `invoice_id` string, nullable: Filter threads by invoice ID.
- `credit_memo_id` string, nullable: Filter threads by credit memo ID.
- `workflow_id` string, nullable: Filter threads by workflow ID.
- `business_unit_id__in` string[], nullable: Filter threads by business unit IDs. Independent of the user's BU visibility scope, which is always enforced.
- `assignee` string, nullable: Filter by partner assignee user ID. Empty string filters to unassigned threads.
- `has_responses` boolean, nullable: True: threads with more than one email; False: single-email threads.
- `read` boolean, nullable: True: no unread inbound emails; False: at least one unread inbound email.
- `has_open_tasks` boolean, nullable: Filter threads by whether they have any open tasks.
- `triage_status` 'pending' | 'auto_matched' | 'manually_matched' | 'dismissed'
- `is_triaged` boolean, nullable: True: AUTO_MATCHED or MANUALLY_MATCHED; False: PENDING. Ignored when triage_status is set.
- `triaged_by__in` string[], nullable: Filter resolved triage threads by the actor that resolved them. Use TRIAGE_AI_ACTOR_ID for AI-resolved.
- `is_from_centralized_inbox` boolean, nullable: Filter threads to those from (or not from) the centralized inbox.
- `is_internal` boolean, nullable: True: show only internal-to-internal threads (every address on every email belongs to the org). When True, bypasses the default partner_id requirement since internal threads have no partner. False/None: existing behavior.
- `exclude_drafts` boolean: True: skip draft-only threads and order by the latest non-draft email. Drafts inside returned threads are still included.
- `search` string, nullable: Search threads by partner name or email.

## Response `200`

Successful Response

- PaginatedResponseEmailThreadSummary
  - `data` EmailThreadSummary[], required: The list of records.
    - `created_at` string, date-time, required
    - `modified_at` string, date-time, nullable, required
    - `id` string, required
    - `partner` PartnerSummary, required
      - `created_at` string, date-time, required
      - `modified_at` string, date-time, required
      - `id` string, required
      - `account_number` string, nullable, required: The customer's account number.
      - `assignee_id` string, nullable, required: The ID of the user assigned to this partner, if any.
      - `business_unit_id` string, nullable, required: The business unit this partner belongs to.
      - `currency` 'ADP' | 'AED' | 'AFA' | 'AFN' | 'ALK' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'AOK' | 'AON' | 'AOR' | 'ARA' | 'ARL' | 'ARM' | 'ARP' | 'ARS' | 'ATS' | 'AUD' | 'AWG' | 'AZM' | 'AZN' | 'BAD' | 'BAM' | 'BAN' | 'BBD' | 'BDT' | 'BEC' | 'BEF' | 'BEL' | 'BGL' | 'BGM' | 'BGN' | 'BGO' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOL' | 'BOP' | 'BOV' | 'BRB' | 'BRC' | 'BRE' | 'BRL' | 'BRN' | 'BRR' | 'BRZ' | 'BSD' | 'BTN' | 'BUK' | 'BWP' | 'BYB' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLE' | 'CLF' | 'CLP' | 'CNH' | 'CNX' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CSD' | 'CSK' | 'CUC' | 'CUP' | 'CVE' | 'CYP' | 'CZK' | 'DDM' | 'DEM' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'ECS' | 'ECV' | 'EEK' | 'EGP' | 'ERN' | 'ESA' | 'ESB' | 'ESP' | 'ETB' | 'EUR' | 'FIM' | 'FJD' | 'FKP' | 'FRF' | 'GBP' | 'GEK' | 'GEL' | 'GHC' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GNS' | 'GQE' | 'GRD' | 'GTQ' | 'GWE' | 'GWP' | 'GYD' | 'HKD' | 'HNL' | 'HRD' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'IEP' | 'ILP' | 'ILR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISJ' | 'ISK' | 'ITL' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRH' | 'KRO' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LTT' | 'LUC' | 'LUF' | 'LUL' | 'LVL' | 'LVR' | 'LYD' | 'MAD' | 'MAF' | 'MCF' | 'MDC' | 'MDL' | 'MGA' | 'MGF' | 'MKD' | 'MKN' | 'MLF' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MRU' | 'MTL' | 'MTP' | 'MUR' | 'MVP' | 'MVR' | 'MWK' | 'MXN' | 'MXP' | 'MXV' | 'MYR' | 'MZE' | 'MZM' | 'MZN' | 'NAD' | 'NGN' | 'NIC' | 'NIO' | 'NLG' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEI' | 'PEN' | 'PES' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PLZ' | 'PTE' | 'PYG' | 'QAR' | 'RHD' | 'ROL' | 'RON' | 'RSD' | 'RUB' | 'RUR' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDD' | 'SDG' | 'SDP' | 'SEK' | 'SGD' | 'SHP' | 'SIT' | 'SKK' | 'SLE' | 'SLL' | 'SOS' | 'SRD' | 'SRG' | 'SSP' | 'STD' | 'STN' | 'SUR' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJR' | 'TJS' | 'TMM' | 'TMT' | 'TND' | 'TOP' | 'TPE' | 'TRL' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UAK' | 'UGS' | 'UGX' | 'USD' | 'USN' | 'USS' | 'UYI' | 'UYP' | 'UYU' | 'UYW' | 'UZS' | 'VEB' | 'VED' | 'VEF' | 'VES' | 'VND' | 'VNN' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XCG' | 'XDR' | 'XEU' | 'XFO' | 'XFU' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XRE' | 'XSU' | 'XTS' | 'XUA' | 'XXX' | 'YDD' | 'YER' | 'YUD' | 'YUM' | 'YUN' | 'YUR' | 'ZAL' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZRN' | 'ZRZ' | 'ZWD' | 'ZWL' | 'ZWR', required: The 3 character [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code.
      - `email` string, nullable, required: The partner's company email address.
      - `name` string, nullable, required: The full name of the partner.
      - `legal_name` string, nullable, required: The legal name of this partner, typically applies to businesses.
      - `phone` string, phone, nullable, required: A phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format
      - `parent_id` string, nullable, required
      - `remote_id` string, required: The partner's third party id.
      - `object` string, required: String representing the object's type. Objects of the same type share the same value.
    - `triage` TriageSummary, required: Lightweight triage state for inbox list rows; heavy fields stay on the v1 detail view.
      - `created_at` string, date-time, required
      - `modified_at` string, date-time, required
      - `status` 'pending' | 'auto_matched' | 'manually_matched' | 'dismissed', required
      - `is_loading` boolean, required: Pending triage row not yet resolved (no match_source, no error); sorts last in the inbox list.
      - `suggested_partner` PartnerSummary, required
        - `created_at` string, date-time, required
        - `modified_at` string, date-time, required
        - `id` string, required
        - `account_number` string, nullable, required: The customer's account number.
        - `assignee_id` string, nullable, required: The ID of the user assigned to this partner, if any.
        - `business_unit_id` string, nullable, required: The business unit this partner belongs to.
        - `currency` 'ADP' | 'AED' | 'AFA' | 'AFN' | 'ALK' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'AOK' | 'AON' | 'AOR' | 'ARA' | 'ARL' | 'ARM' | 'ARP' | 'ARS' | 'ATS' | 'AUD' | 'AWG' | 'AZM' | 'AZN' | 'BAD' | 'BAM' | 'BAN' | 'BBD' | 'BDT' | 'BEC' | 'BEF' | 'BEL' | 'BGL' | 'BGM' | 'BGN' | 'BGO' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOL' | 'BOP' | 'BOV' | 'BRB' | 'BRC' | 'BRE' | 'BRL' | 'BRN' | 'BRR' | 'BRZ' | 'BSD' | 'BTN' | 'BUK' | 'BWP' | 'BYB' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLE' | 'CLF' | 'CLP' | 'CNH' | 'CNX' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CSD' | 'CSK' | 'CUC' | 'CUP' | 'CVE' | 'CYP' | 'CZK' | 'DDM' | 'DEM' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'ECS' | 'ECV' | 'EEK' | 'EGP' | 'ERN' | 'ESA' | 'ESB' | 'ESP' | 'ETB' | 'EUR' | 'FIM' | 'FJD' | 'FKP' | 'FRF' | 'GBP' | 'GEK' | 'GEL' | 'GHC' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GNS' | 'GQE' | 'GRD' | 'GTQ' | 'GWE' | 'GWP' | 'GYD' | 'HKD' | 'HNL' | 'HRD' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'IEP' | 'ILP' | 'ILR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISJ' | 'ISK' | 'ITL' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRH' | 'KRO' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LTT' | 'LUC' | 'LUF' | 'LUL' | 'LVL' | 'LVR' | 'LYD' | 'MAD' | 'MAF' | 'MCF' | 'MDC' | 'MDL' | 'MGA' | 'MGF' | 'MKD' | 'MKN' | 'MLF' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MRU' | 'MTL' | 'MTP' | 'MUR' | 'MVP' | 'MVR' | 'MWK' | 'MXN' | 'MXP' | 'MXV' | 'MYR' | 'MZE' | 'MZM' | 'MZN' | 'NAD' | 'NGN' | 'NIC' | 'NIO' | 'NLG' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEI' | 'PEN' | 'PES' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PLZ' | 'PTE' | 'PYG' | 'QAR' | 'RHD' | 'ROL' | 'RON' | 'RSD' | 'RUB' | 'RUR' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDD' | 'SDG' | 'SDP' | 'SEK' | 'SGD' | 'SHP' | 'SIT' | 'SKK' | 'SLE' | 'SLL' | 'SOS' | 'SRD' | 'SRG' | 'SSP' | 'STD' | 'STN' | 'SUR' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJR' | 'TJS' | 'TMM' | 'TMT' | 'TND' | 'TOP' | 'TPE' | 'TRL' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UAK' | 'UGS' | 'UGX' | 'USD' | 'USN' | 'USS' | 'UYI' | 'UYP' | 'UYU' | 'UYW' | 'UZS' | 'VEB' | 'VED' | 'VEF' | 'VES' | 'VND' | 'VNN' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XCG' | 'XDR' | 'XEU' | 'XFO' | 'XFU' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XRE' | 'XSU' | 'XTS' | 'XUA' | 'XXX' | 'YDD' | 'YER' | 'YUD' | 'YUM' | 'YUN' | 'YUR' | 'ZAL' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZRN' | 'ZRZ' | 'ZWD' | 'ZWL' | 'ZWR', required: The 3 character [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code.
        - `email` string, nullable, required: The partner's company email address.
        - `name` string, nullable, required: The full name of the partner.
        - `legal_name` string, nullable, required: The legal name of this partner, typically applies to businesses.
        - `phone` string, phone, nullable, required: A phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format
        - `parent_id` string, nullable, required
        - `remote_id` string, required: The partner's third party id.
        - `object` string, required: String representing the object's type. Objects of the same type share the same value.
      - `agent_confidence_score` integer, nullable, required: The confidence score of the result on a scale of 0-100, where 0 indicates no confidence in the accuracy of the result and 100 indicates full confidence in the accuracy of the result.
      - `match_source` 'llm' | 'manual' | 'auto', nullable, required: How the partner was matched: 'llm', 'manual', or 'auto'
      - `matched_at` string, date-time, required
      - `matched_by_id` string, nullable, required: User who assigned the partner (NULL for auto-match)
      - `object` string, required: String representing the object's type. Objects of the same type share the same value.
    - `has_attachments` boolean, required
    - `num_attachments` integer, required
    - `num_emails` integer, required
    - `num_drafts` integer, required
    - `draft_email_ids` string[], required
    - `first_email` EmailSummary, required: Email summary for inbox list rows.
      - `created_at` string, date-time, required
      - `modified_at` string, date-time, nullable, required
      - `id` string, required
      - `subject` string, nullable, required
      - `snippet` string, nullable, required
      - `from` string, nullable, required
      - `to` string[], required
      - `cc` string[], required: List of CC email addresses
      - `direction` 'inbound' | 'outbound', required
      - `status` 'draft' | 'pending' | 'sending' | 'sent' | 'error', required
      - `sent_at` string, date-time, nullable, required: When the email was sent.
      - `is_unread` boolean, required
      - `author_id` string, nullable, required
      - `author_name` string, nullable, required
      - `processing_status` 'processing' | 'completed' | 'failed', required
      - `object` string, required: String representing the object's type. Objects of the same type share the same value.
    - `latest_email` EmailSummary, required: Email summary for inbox list rows.
      - `created_at` string, date-time, required
      - `modified_at` string, date-time, nullable, required
      - `id` string, required
      - `subject` string, nullable, required
      - `snippet` string, nullable, required
      - `from` string, nullable, required
      - `to` string[], required
      - `cc` string[], required: List of CC email addresses
      - `direction` 'inbound' | 'outbound', required
      - `status` 'draft' | 'pending' | 'sending' | 'sent' | 'error', required
      - `sent_at` string, date-time, nullable, required: When the email was sent.
      - `is_unread` boolean, required
      - `author_id` string, nullable, required
      - `author_name` string, nullable, required
      - `processing_status` 'processing' | 'completed' | 'failed', required
      - `object` string, required: String representing the object's type. Objects of the same type share the same value.
    - `tasks` TaskSummary[], required: Tasks explicitly linked to this email thread
      - `created_at` string, date-time, required
      - `modified_at` string, date-time, required
      - `id` string, required
      - `type` 'auto_response_email' | 'auto_response_sms' | 'call_analysis' | 'disable_contact' | 'recommendation_new_contact' | 'manual_call' | 'broken_promise_follow_up' | 'payment_promise' | 'escalation' | 'pause_state_update' | 'dispute_create' | 'dispute_activate' | 'dispute_update' | 'dispute_resolution' | 'email_send_failure' | 'workflow' | 'payment_plan' | 'ap_portal_rejection' | 'ap_portal_pre_submission' | 'manual_sms', required
      - `status` 'open' | 'completed' | 'closed' | 'archived' | 'failed' | 'processing' | 'assigned_to_agent' | 'research', required
      - `label` string, required: The blurb or label for the task.
      - `description` string, nullable, required: The contextual description of the task.
      - `assignee_id` string, nullable, required: The ID of the user assigned to this task, if any.
      - `interaction_classifications` InteractionClassificationSummary[], required: The interaction classifications that led to the creation of this task
        - `classification` 'payment_inquiry' | 'payment_promise' | 'account_inquiry' | 'invoice_inquiry' | 'refund_request' | 'cancellation_request' | 'support_request' | 'complaint' | 'feedback' | 'wrong_contact' | 'message_forwarding_request' | 'cc_inclusion_request' | 'not_available' | 'contact_inquiry' | 'dispute' | 'resolution' | 'delivery_failure' | 'payment_processing_request' | 'other', required: Enumerates the possible classifications for an interaction (email or call).
        - `is_reply_required` boolean, required: Whether an email needs to be sent as a reply to this interaction
        - `is_action_required` boolean, required: Whether an action or actions need to be taken as a result of this interaction
      - `object` string, required: String representing the object's type. Objects of the same type share the same value.
    - `workflow` union, required
      - OutreachWorkflowSummary: Attribution summary for a legacy `OutreachWorkflow`.
        - `created_at` string, date-time, required
        - `modified_at` string, date-time, required
        - `id` string, required
        - `name` string, required: The name of the workflow
        - `is_active` boolean, required
        - `object` string, required: String representing the object's type. Objects of the same type share the same value.
      - WorkflowSummary: Attribution summary for a generic `Workflow`; `is_active` derives from its status. Mirrors `OutreachWorkflowSummary` field for field so attribution views can load the same-named columns for either model, while `object` names the model that was loaded.
        - `created_at` string, date-time, required
        - `modified_at` string, date-time, required
        - `id` string, required
        - `name` string, required: Admin-facing workflow name.
        - `is_active` boolean, required: Whether the workflow evaluates, matching the `OutreachWorkflow.is_active` column. Attribution views (`Email.workflow`, inbox summaries) serialize either model through this shared attribute.
        - `object` string, required: String representing the object's type. Objects of the same type share the same value.
    - `is_unread` boolean, required
    - `is_internal` boolean, nullable, required: Whether every Email on this thread has is_internal=True.
    - `is_from_centralized_inbox` boolean, required: Whether this thread originated from a centralized inbox sender
    - `object` string, required: String representing the object's type. Objects of the same type share the same value.
  - `current_page` integer, required: The current page.
  - `total_records` integer, nullable, required: Total number of records.
  - `next_page` integer, nullable, required: The next page number, if one exists.

## Other responses

- `422`: Validation Error

---

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