Skip to main content
GET
/
api
/
threads
Get Threads
curl --request GET \
  --url https://app.puffle.ai/api/threads \
  --header 'Authorization: Bearer <token>'
CLI:
puffle thread

Overview

Lists Unibox threads for the authenticated workspace. Threads include email and LinkedIn conversations from campaign replies, one-off outbound email, drafts, archived conversations, and warmup rows. By default, this endpoint returns active threads with inbound activity. Use view, inbox_state, status, sender_id, campaign_id, or participant_email to override that default.

Query Parameters

ParameterTypeDescription
viewstringFriendly view filter. Supported values: inbox, needs_reply, active_thread, sent, drafts, archived, unread, bounced. Comma-separated values are allowed.
inbox_statestringLower-level state filter. Supported values: draft, needs_reply, active_thread, sent_one_off, sent_campaign, archived, warmup, empty. Comma-separated values are allowed.
statusstringLifecycle status filter: active, archived, draft, or warmup. Comma-separated values are allowed.
unreadbooleanUse true to return only threads with unread_count > 0.
bouncedbooleanUse true to return bounce-like threads, or false to exclude bounce-like threads.
channelstringFilter to email or linkedin.
sender_idstringSender account ID. Public alias for the underlying account_id filter.
campaign_idstringCampaign ID. Returns threads linked to that campaign.
participant_emailstringRecipient email. Also used by correspondence lookup.
correspondencebooleanUse true with participant_email to check for existing email correspondence instead of returning the normal thread list.
exclude_thread_idstringThread ID to omit from correspondence lookup results.
searchstringSearches participant name, email, LinkedIn URL, and last-message snippet.
includestringUse filter_options to include available sender and campaign filter options.
pageintegerPage number. Defaults to 1.
limitintegerPage size. Defaults to 50, max 100.

Example

curl -H "Authorization: Bearer $PUFFLE_API_KEY" \
  "https://app.puffle.ai/api/threads?view=sent&channel=email&limit=25&include=filter_options"
The response returns threads, total, page, and limit. When include=filter_options is present, the response also includes filter_options.campaigns and filter_options.senders.
{
  "threads": [
    {
      "id": "3d986dd1-9d70-45b7-8e36-5d5b8b1c9337",
      "channel": "email",
      "status": "active",
      "inbox_state": "sent_one_off",
      "participant_email": "founder@example.com",
      "last_message_direction": "outbound",
      "has_one_off_message": true
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 25,
  "filter_options": {
    "campaigns": [],
    "senders": []
  }
}

Correspondence Lookup

Use correspondence=true&participant_email=... before creating a one-off email draft if you need to avoid duplicate conversations. The response includes existing_threads and threads for the recipient.

AI agent notes

Use view=needs_reply for work that needs human or agent follow-up. Use view=sent to find outbound-only one-off and campaign conversations. Use correspondence=true before creating a one-off thread for a recipient that may already have history.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Response

Successful response.