List Contact Conversations
Lists every Support conversation for one CRM contact, including closed and spam threads. Each row is the same listing shape as List Conversations: a preview line, not the transcript.
Authorization
Authorization In: header
Path Parameters
ID of the project that owns the contact.
ID of the CRM contact whose conversations to list.
Query Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.saasco.com/api/v2/projects/string/support/contacts/string/conversations"[
{
"id": "string",
"createdAt": "string",
"updatedAt": "string",
"projectId": "string",
"contactId": "string",
"anonymousEmail": "string",
"state": "open",
"subject": "string",
"source": "email",
"snoozedUntil": "string",
"ownerChangedAt": "string",
"assignedToUserId": "string",
"assignee": {
"email": "string",
"id": "string",
"image": "string",
"name": "string"
},
"contact": {
"id": "string",
"createdAt": "string",
"updatedAt": "string",
"projectId": "string",
"distinctId": "string",
"email": "string",
"toDelete": true,
"properties": {
"age": 0,
"avatar": "http://example.com",
"birthday": "string",
"createdAt": "string",
"description": "string",
"displayName": "string",
"email": "user@example.com",
"firstName": "string",
"gender": "string",
"id": "string",
"lastName": "string",
"name": "string",
"phone": "string",
"title": "string",
"username": "string",
"website": "string",
"$id": "string",
"$lastSeen": "string",
"$lastIdentifiedAt": "string",
"$processedAt": "string",
"$unsubscribed": true,
"$subscribed": true,
"$unsubscribeReason": "manual",
"$unsubscribeSource": "string",
"$emailValidated": true,
"$lastEmailValidatedAt": "string",
"$emailValidationResult": "string",
"$emailScore": 0,
"$stripeCustomerId": "string",
"$os": "string",
"$browser": "string",
"$browserVersion": "string",
"$screenHeight": 0,
"$screenWidth": 0,
"$screenDpi": 0,
"$device": "string",
"$userAgent": "string",
"$ip": "string",
"$timezone": "string",
"$city": "string",
"$country": "string",
"$countryCode": "string",
"$continent": "string",
"$region": "string",
"$locale": "string",
"$latitude": 0,
"$longitude": 0,
"$referrer": "string",
"$referringDomain": "string",
"$initialReferrer": "string",
"$initialReferringDomain": "string",
"$utmSource": "string",
"$utmMedium": "string",
"$utmCampaign": "string",
"$utmTerm": "string",
"$utmContent": "string",
"$initialUtmSource": "string",
"$initialUtmMedium": "string",
"$initialUtmCampaign": "string",
"$initialUtmTerm": "string",
"$initialUtmContent": "string",
"$_toDelete": true,
"$_emailScoreActions": "string",
"property1": "string",
"property2": "string"
}
},
"owner": "agent",
"lastMessage": {
"authorRole": "user",
"createdAt": "string",
"id": "string",
"preview": "string"
},
"unseenCustomerMessageCount": 9007199254740991
}
]{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}List Conversations
Lists Support inbox conversations (chat and email) with a preview line and unread count, not the transcript. Filter by state; omitted `state` returns open conversations. `spam` is its own view: `open` excludes it and `all` includes it so nothing is unreachable.
Update Conversation State
Sets a conversation to open, closed, or spam. Snooze is not settable here. Manual spam goes through the same writer as the inbox so the audit line and `updatedAt` stay consistent. API-key calls leave the audit unnamed.