Create a new chat
Create a new chat with specified participants and send an initial message. The initial message is required when creating a chat.
First-Message Link Restriction
To protect sender deliverability, the first outbound message of a new chat cannot be a link.
The request is rejected with 400 (error code 1005) when:
- The message contains a
linkpart (explicit rich-preview link), or - Any
textpart contains a URL.
This rule applies only to POST /v3/chats. Follow-up messages on an existing chat
(POST /v3/chats/{chatId}/messages) are not subject to this restriction.
Reusing an Existing Chat
Chats are keyed on the from line plus the exact set of to handles. Repeating this
request with the same from and to returns the existing chat and sends the message
into it instead of starting a second conversation.
A new chat is created instead of reusing one when the participant set changed (a
participant was added or removed), or the from line left the group.
Whenever the response is a new chat, the first-message rules above apply to that request:
no link in the first message, and no reply_to. To send into a chat you
already know, use POST /v3/chats/{chatId}/messages with its chat_id.
Body ParametersJSON
Sender phone number in E.164 format. Must be a phone number that the authenticated partner has permission to send from.
Create a new chat
curl https://api.linqapp.com/api/partner/v3/chats \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $LINQ_API_V3_API_KEY" \
-d '{
"from": "+12052535597",
"message": {
"parts": [
{
"type": "text",
"value": "Hello! How can I help you today?"
}
]
},
"to": [
"+12052532136"
]
}'{
"chat": {
"id": "94c6bf33-31d9-40e3-a0e9-f94250ecedb9",
"display_name": "+14155551234, +14155559876",
"handles": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"handle": "+14155551234",
"joined_at": "2025-05-21T15:30:00.000Z",
"service": "RCS",
"is_me": true,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
{
"id": "550e8400-e29b-41d4-a716-446655440011",
"handle": "+14155559876",
"joined_at": "2025-05-21T15:30:00.000Z",
"service": "RCS",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
}
],
"health_status": {
"doc_url": "https://docs.linqapp.com/channel/imessage/guides/chats/chat-health#at-risk",
"status": "AT_RISK",
"updated_at": "2026-05-01T18:28:25Z"
},
"is_group": false,
"message": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"created_at": "2025-10-23T13:07:55.019-05:00",
"delivery_status": "pending",
"is_read": false,
"parts": [
{
"reactions": [
{
"handle": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "RCS",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"is_me": false,
"type": "love",
"id": "9f8b1c2d-3e4f-5061-7283-94a5b6c7d8e9",
"custom_emoji": null
}
],
"type": "text",
"value": "Hello!"
}
],
"sent_at": null,
"delivered_at": null,
"from_handle": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "RCS",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"reply_to": {
"message_id": "550e8400-e29b-41d4-a716-446655440000",
"part_index": 0
},
"service": "RCS"
},
"service": "RCS"
}
}{
"error": {
"status": 400,
"code": 1002,
"message": "Phone number must be in E.164 format",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/1xxx/1002/"
},
"success": false
}{
"error": {
"status": 401,
"code": 2004,
"message": "Unauthorized - missing or invalid authentication token",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2004/"
},
"success": false
}{
"error": {
"status": 403,
"code": 2005,
"message": "Access denied - insufficient permissions for this resource",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2005/"
},
"success": false
}{
"error": {
"status": 500,
"code": 3006,
"message": "Internal server error",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/3xxx/3006/"
},
"success": false
}Returns Examples
{
"chat": {
"id": "94c6bf33-31d9-40e3-a0e9-f94250ecedb9",
"display_name": "+14155551234, +14155559876",
"handles": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"handle": "+14155551234",
"joined_at": "2025-05-21T15:30:00.000Z",
"service": "RCS",
"is_me": true,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
{
"id": "550e8400-e29b-41d4-a716-446655440011",
"handle": "+14155559876",
"joined_at": "2025-05-21T15:30:00.000Z",
"service": "RCS",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
}
],
"health_status": {
"doc_url": "https://docs.linqapp.com/channel/imessage/guides/chats/chat-health#at-risk",
"status": "AT_RISK",
"updated_at": "2026-05-01T18:28:25Z"
},
"is_group": false,
"message": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"created_at": "2025-10-23T13:07:55.019-05:00",
"delivery_status": "pending",
"is_read": false,
"parts": [
{
"reactions": [
{
"handle": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "RCS",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"is_me": false,
"type": "love",
"id": "9f8b1c2d-3e4f-5061-7283-94a5b6c7d8e9",
"custom_emoji": null
}
],
"type": "text",
"value": "Hello!"
}
],
"sent_at": null,
"delivered_at": null,
"from_handle": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "RCS",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"reply_to": {
"message_id": "550e8400-e29b-41d4-a716-446655440000",
"part_index": 0
},
"service": "RCS"
},
"service": "RCS"
}
}{
"error": {
"status": 400,
"code": 1002,
"message": "Phone number must be in E.164 format",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/1xxx/1002/"
},
"success": false
}{
"error": {
"status": 401,
"code": 2004,
"message": "Unauthorized - missing or invalid authentication token",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2004/"
},
"success": false
}{
"error": {
"status": 403,
"code": 2005,
"message": "Access denied - insufficient permissions for this resource",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/2xxx/2005/"
},
"success": false
}{
"error": {
"status": 500,
"code": 3006,
"message": "Internal server error",
"doc_url": "https://docs.linqapp.com/channel/imessage/error/codes/3xxx/3006/"
},
"success": false
}