Saasco logoSaasco logo
Saasco logoSaasco logo

Introduction

Quick StartWhat is Saasco?

Analytics

CRM

Email Marketing

Knowledge

Support

getList Conversation MessagesgetSearch Conversation MessagespostMark Messages SeenpostGet Inbound Email Attachment

Projects

Messages

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.

GET
/projects/{projectId}/support/conversations/{conversationId}/messages

Authorization

Authorization
AuthorizationBearer <token>

In: header

Path Parameters

projectIdrequiredstring

ID of the project that owns the conversation.

conversationIdrequiredstring

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.