Get chat messages
GET /v2/post_checkout/chat/{order_id}/messages
This operation gets all messages exchanged between the customer and shoppers while an order is being fulfilled.
To access all the messages associated with an order, including automated status notifications, use get order messages.
To protect personal data, chat_messages remain accessible for 24 hours, measured from when an order is delivered or cancelled. The is_expired field indicates whether that time period has elapsed. If true, then the messages are no longer accessible and chat_messages is empty. If false, then all exchanged messages, if any, are still present.
If your account configuration enables the shopper information removal feature, this operation always returns an error.
Security
| Name | In | Description |
|---|---|---|
Authorization | header | The Authorization header with the bearer token acquired during authentication. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
order_id | path | string | The ID of the order. | |
X-Treat-Ids-As-Internal | header | boolean |
Request
None.Request examples
- cURL
- Java
- Python
- Go
curl --request GET \
--url 'https://connect.instacart.com/v2/post_checkout/chat/{order_id}/messages' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>' \
--header 'X-Treat-Ids-As-Internal: true'
HttpResponse<String> response = Unirest.get("https://connect.instacart.com/v2/post_checkout/chat/{order_id}/messages")
.header("Accept", "application/json")
.header("Authorization", "Bearer <token>")
.header("X-Treat-Ids-As-Internal", "true")
.asString();
import http.client
conn = http.client.HTTPSConnection("connect.instacart.com")
headers = {
'Accept': "application/json",
'Authorization': "Bearer <token>",
'X-Treat-Ids-As-Internal': "true"
}
conn.request("GET", "/v2/post_checkout/chat/{order_id}/messages", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://connect.instacart.com/v2/post_checkout/chat/{order_id}/messages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "application/json")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Treat-Ids-As-Internal", "true")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Response
| Field | Type | Required | Description |
|---|---|---|---|
chat_messages | Array(Message) | The list of messages. | |
metadata | ChatMessagesMetadata | Metadata associated with the chat messages. |
Message Object
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | The ID of the message. | |
order_id | integer | The order ID for this message. | |
created_at | string | When this message was created. | |
recipient_id | integer | The ID of the message recipient. | |
recipient_type | string | The type of the message recipient. One of be 'user' or 'driver'. | |
sender_id | integer | The ID of the message sender. | |
sender_type | string | The type of the message sender. One of 'user' or 'driver'. | |
read | boolean | Indicates whether this message has been read. | |
read_at | string | Indicates the time this message was read. | |
body | string | The body of this message. | |
image | string | The image associated with this message. |
ChatMessagesMetadata Object
| Field | Type | Required | Description |
|---|---|---|---|
customer | ChatUser | The metadata of the customer. | |
current_shopper | ChatUser | The metadata for the current shopper. | |
shoppers | Array(ChatUser) | The metadata of the shoppers. | |
is_expired | boolean | Indicates whether messages exchanged between the customer and the shopper(s) are still accessible. If true, more than 24 hours have passed since the time of order delivery or cancellation and the messages are no longer accessible. If false, the messages remain accessible. |
ChatUser Object
| Field | Type | Required | Description |
|---|---|---|---|
id | integer | The ID of the user. | |
display_name | string | The display name of the user. | |
avatar_url | string | The URL of the user's avatar. |
Response examples
200 Success
200Messages Fetched
{
"chat_messages": [
{
"id": 123456789,
"order_id": 122233,
"created_at": "2021-01-01T00:00:00Z",
"recipient_id": 334354343,
"recipient_type": "user",
"sender_id": 55655345,
"sender_type": "driver",
"read": false,
"body": "MessageBody"
}
],
"metadata": {
"customer": {
"id": 8,
"display_name": "John",
"avatar_url": ""
},
"current_shopper": {
"id": 15,
"display_name": "Robert",
"avatar_url": "https://speedwagon.foundation/avatar/reospeedwagon.jpg"
},
"shoppers": [
{
"id": 55655345,
"display_name": "SomeFirstName",
"avatar_url": "SomeURL"
},
{
"id": 123456789,
"display_name": "SomeFirstName2",
"avatar_url": "SomeURL2"
},
{
"id": 15,
"display_name": "Robert",
"avatar_url": "https://speedwagon.foundation/avatar/reospeedwagon.jpg"
}
]
}
}
4XX Errors
Error responses return either a single error or multiple errors.
| HTTP Code | Cause | Error Message | Error Code | Error Meta |
|---|---|---|---|---|
400 | Order was not created with Fulfillment v3, trying to fetch with client credentials | "User ID not found" | 4001 | Not applicable |
403 | Retailer requested to redact shopper PII | "Shopper PII" | null | Not applicable |
404 | Order not found | "Resource not found" | 4000 | Not applicable |