List Conversation Messages
Returns the transcript of one conversation. Conversation metadata (contact, assignee, state) is on the listing endpoints, not here. Returns 404 if the conversation does not belong to the project.
Authorization
Authorization In: header
Path Parameters
ID of the project that owns the conversation.
ID of the conversation whose messages to fetch.
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/conversations/string/messages"[
{
"agentUsageCost": 0,
"authorId": "string",
"authorRole": "user",
"bodyOrigin": "email",
"closeTrigger": "stale",
"content": "string",
"createdAt": "string",
"detectedLanguage": "string",
"handoffDecision": "accepted",
"handoffToolCallId": "string",
"id": "string",
"relatedMessageId": "string",
"seenByTeamAt": "string",
"sentByEmail": true,
"source": "email",
"systemMessageType": "assignment",
"translatedText": "string",
"type": "comment",
"agentToolCalls": [
{
"args": "string",
"toolName": "string"
}
],
"teamMember": {
"email": "string",
"id": "string",
"image": "string",
"name": "string"
},
"email": {
"direction": "inbound",
"fromAddress": "string",
"toAddress": "string",
"authPassed": true,
"autoSubmitted": true,
"bcc": [
"string"
],
"cc": [
"string"
],
"client": "string",
"listUnsubscribe": true,
"replyTo": [
"string"
],
"subject": "string",
"attachments": [
{
"contentDisposition": "string",
"contentId": "string",
"contentType": "string",
"fileName": "string",
"id": "string",
"size": 0
}
],
"mailboxAddress": "string",
"sentAt": 0
},
"inboxAction": {
"args": "string",
"outcome": "failed",
"result": "string",
"staffUserId": "string",
"toolName": "string"
}
}
]{
"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": []
}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.
Search Conversation Messages
Returns conversation ids whose message bodies match every search term. Caps at 200 matches. Does not search contact names, emails, or subjects — those live on the listing and are matched there. Omitted `state` searches open conversations.