Conversations Api Message Structure
Represents a message within a conversation thread.
Message is a JSON Structure definition published by HubSpot, describing 13 properties, of which 3 are required. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.
Properties
Meta-schema: https://json-structure.org/meta/core/v0/#
JSON Structure
{
"$schema": "https://json-structure.org/meta/core/v0/#",
"$id": "https://raw.githubusercontent.com/api-evangelist/hubspot/refs/heads/main/json-structure/conversations-api-message-structure.json",
"name": "Message",
"description": "Represents a message within a conversation thread.",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the message",
"example": "msg_123456"
},
"type": {
"type": "string",
"enum": [
"MESSAGE",
"COMMENT",
"WELCOME_MESSAGE"
],
"description": "Type of message",
"example": "MESSAGE"
},
"text": {
"type": "string",
"description": "Plain text content of the message",
"example": "Hello, I need help with my order."
},
"richText": {
"type": "string",
"description": "Rich text (HTML) content of the message",
"example": "<p>Hello, I need help with my order.</p>"
},
"direction": {
"type": "string",
"enum": [
"INCOMING",
"OUTGOING"
],
"description": "Direction of the message (incoming or outgoing)",
"example": "INCOMING"
},
"channelId": {
"type": "string",
"description": "ID of the communication channel",
"example": "channel_789"
},
"channelAccountId": {
"type": "string",
"description": "ID of the channel account",
"example": "account_123"
},
"senders": {
"type": "array",
"items": {
"type": "object",
"description": "Represents a participant in a conversation (visitor, agent, or bot).",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the actor",
"example": "actor_101"
},
"actorId": {
"type": "string",
"description": "Actor ID reference",
"example": "actor_101"
},
"name": {
"type": "string",
"description": "Display name of the actor",
"example": "John Customer"
},
"email": {
"type": "string",
"description": "Email address of the actor",
"example": "john@example.com"
},
"type": {
"type": "string",
"description": "Type of actor (e.g., VISITOR, AGENT, BOT)",
"example": "VISITOR"
}
},
"required": [
"id"
]
},
"description": "List of message senders",
"example": [
{
"id": "actor_101",
"actorId": "actor_101",
"name": "John Customer",
"email": "john@example.com",
"type": "VISITOR"
}
]
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"description": "Represents a participant in a conversation (visitor, agent, or bot).",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the actor",
"example": "actor_101"
},
"actorId": {
"type": "string",
"description": "Actor ID reference",
"example": "actor_101"
},
"name": {
"type": "string",
"description": "Display name of the actor",
"example": "John Customer"
},
"email": {
"type": "string",
"description": "Email address of the actor",
"example": "john@example.com"
},
"type": {
"type": "string",
"description": "Type of actor (e.g., VISITOR, AGENT, BOT)",
"example": "VISITOR"
}
},
"required": [
"id"
]
},
"description": "List of message recipients",
"example": [
{
"id": "actor_101",
"actorId": "actor_101",
"name": "John Customer",
"email": "john@example.com",
"type": "VISITOR"
}
]
},
"status": {
"type": "object",
"description": "Delivery status information for a message",
"properties": {
"statusType": {
"type": "string",
"enum": [
"SENT",
"DELIVERED",
"READ",
"FAILED"
],
"description": "Current delivery status type",
"example": "DELIVERED"
}
}
},
"createdAt": {
"type": "datetime",
"description": "ISO 8601 timestamp when the message was created",
"example": "2024-01-20T10:30:00Z"
},
"truncationStatus": {
"type": "string",
"description": "Whether the message was truncated",
"example": "NOT_TRUNCATED"
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"description": "Represents a file attachment on a message.",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the attachment",
"example": "attach_001"
},
"type": {
"type": "string",
"description": "MIME type of the attachment",
"example": "application/pdf"
},
"url": {
"type": "uri",
"description": "URL to access the attachment",
"example": "https://api.hubapi.com/files/v3/files/attach_001"
},
"filename": {
"type": "string",
"description": "Original filename",
"example": "invoice.pdf"
},
"size": {
"type": "int32",
"description": "File size in bytes",
"example": 102400
}
}
},
"description": "Message attachments",
"example": [
{
"id": "attach_001",
"type": "application/pdf",
"url": "https://api.hubapi.com/files/v3/files/attach_001",
"filename": "invoice.pdf",
"size": 102400
}
]
}
},
"required": [
"id",
"type",
"createdAt"
]
}
Work with this as data
Every JSON Structure here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for json structure
4 MCP tools reach this
find_json_structuresBrowse and filter every JSON Structure in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-structures/conversations-api-message-structure"
curl "https://apis.io/api/v1/json-structures?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.