Messages
Messages belong to tickets and represent the conversation thread between agents and customers. Each message has a sender type and optional metadata.
The Message object
Unique message identifier
Parent ticket ID
Message body text
Who sent the message "agent" | "customer" | "system"
Display name of the sender
When the message was sent
Endpoints
GET
/api/v1/teams/{teamId}/tickets/{ticketId}/messagesList Messages
Get all messages for a ticket, ordered chronologically.
Path Parameters
ticketId uuid requiredThe parent ticket ID
Code Examples
curl -X GET "https://app.cstar.help/api/v1/teams/{teamId}/tickets/{ticketId}/messages" \
-H "Authorization: Bearer sk_live_your_key"
Responses
200 Array of messages
{
"data": [
{
"id": "msg_001",
"ticket_id": "550e8400-e29b-41d4-a716-446655440000",
"content": "I keep getting \"invalid credentials\" when I try to log in.",
"sender": "customer",
"sender_name": "Jane Smith",
"created_at": "2025-12-10T14:30:00Z"
},
{
"id": "msg_002",
"ticket_id": "550e8400-e29b-41d4-a716-446655440000",
"content": "I'll look into this for you right away.",
"sender": "agent",
"sender_name": "Bob (Support)",
"created_at": "2025-12-10T14:35:00Z"
}
]
}
404 Ticket not found
{
"error": {
"code": "resource_missing",
"message": "Ticket not found"
}
}
401 Authentication failed — missing or invalid API key
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
403 Insufficient permissions — wrong key type or team access
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
429 Rate limit exceeded
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}
POST
/api/v1/teams/{teamId}/tickets/{ticketId}/messagesAdd Message
Add a new message to a ticket thread. Fires the `ticket.message_added` webhook event.
Requires a secret API key.
Path Parameters
ticketId uuid requiredThe parent ticket ID
Request Body
content string requiredMessage body text
sender string Sender type
Default: agent
senderName string Display name (optional)
Code Examples
curl -X POST "https://app.cstar.help/api/v1/teams/{teamId}/tickets/{ticketId}/messages" \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"content": "I have reset your password. Please try logging in again.",
"sender": "agent",
"senderName": "Bob (Support)"
}'
Responses
201 Message added
{
"data": {
"id": "msg_003",
"ticket_id": "550e8400-e29b-41d4-a716-446655440000",
"content": "I've reset your password. Please try logging in again.",
"sender": "agent",
"sender_name": "Bob (Support)",
"created_at": "2025-12-10T14:45:00Z"
}
}
404 Ticket not found
{
"error": {
"code": "resource_missing",
"message": "Ticket not found"
}
}
401 Authentication failed — missing or invalid API key
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
}
}
403 Insufficient permissions — wrong key type or team access
{
"error": {
"code": "FORBIDDEN",
"message": "Secret key required for this endpoint"
}
}
429 Rate limit exceeded
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 60 seconds",
"retryAfter": 60
}
}