# Get Conversation

> ApiConversation & { messages: ApiMessage[] } (note messages excluded).

Source: https://shopassist.coec.dk/docs/api/reference/conversations/get-conversation · Updated 2026-11-03

`GET /v1/stores/{store_id}/conversations/{conversation_id}`

- Scope: `conversations:read`
- Rate limit: 600 requests/min per API key (test keys: 60/min)

`ApiConversation & { messages: ApiMessage[] }` (`note` messages excluded).

## Parameters [#parameters]

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `store_id` | path | `string` | yes |  |
| `conversation_id` | path | `string` | yes |  |

## Example request [#example-request]

```bash
curl -X GET "https://api.shopassist.coec.dk/v1/stores/sto_01j8000000e008000000000000/conversations/conv_01j8000000e008000000000000" \
  -H "Authorization: Bearer $SHOPASSIST_API_KEY"
```

## Response 200 (ApiConversationDetail) [#response]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `assigned_user_id` | `string \| null` | yes | pattern `^usr_[0-9a-hjkmnp-tv-z]{26}$` |
| `channel` | `"widget" \| "playground" \| "preview" \| "demo" \| "api"` | yes |  |
| `closed_at` | `string \| null` | yes | format date-time |
| `csat_score` | `integer \| null` | yes |  |
| `handoff_requested_at` | `string \| null` | yes | format date-time |
| `handoff_state` | `"none" \| "requested" \| "live" \| "delivered_offline" \| "failed" \| "resolved"` | yes |  |
| `id` | `string` | yes | pattern `^conv_[0-9a-hjkmnp-tv-z]{26}$` |
| `identity_level` | `"guest" \| "order_lookup" \| "order_otp" \| "customer"` | yes |  |
| `is_test` | `boolean` | yes |  |
| `last_message_at` | `string \| null` | yes | format date-time |
| `locale` | `string \| null` | yes |  |
| `message_count` | `integer` | yes | ≥ 0 |
| `messages` | `ApiMessage[]` | yes |  |
| `messages[].author` | `MessageAuthor` | yes | Who wrote a message. |
| `messages[].author.display_name` | `string \| null` | yes |  |
| `messages[].author.type` | `"shopper" \| "ai" \| "human" \| "system"` | yes |  |
| `messages[].blocks` | `UiBlock[]` | yes |  |
| `messages[].created_at` | `string` | yes | format date-time |
| `messages[].id` | `string` | yes | pattern `^msg_[0-9a-hjkmnp-tv-z]{26}$` |
| `messages[].is_ai_generated` | `boolean` | yes |  |
| `messages[].role` | `"shopper" \| "assistant" \| "agent" \| "system"` | yes |  |
| `messages[].seq` | `integer` | yes | ≥ 0 |
| `messages[].text` | `string` | yes |  |
| `mode` | `"ai" \| "human_requested" \| "human"` | yes |  |
| `platform_customer_id` | `string \| null` | yes | Only for identity_level = customer |
| `resolution` | `"resolved_ai" \| "handed_off" \| "abandoned" \| "unknown" \| null` | yes |  |
| `shopper` | `ShopperView` | yes | Shopper identity as shown on lists (masked for agent/viewer, 06 §5.3). |
| `shopper.email` | `string \| null` | yes |  |
| `shopper.is_masked` | `boolean` | yes |  |
| `shopper.is_verified` | `boolean` | yes |  |
| `shopper.name` | `string \| null` | yes |  |
| `started_at` | `string` | yes | format date-time |
| `status` | `"open" \| "closed"` | yes |  |
| `store_id` | `string` | yes | pattern `^sto_[0-9a-hjkmnp-tv-z]{26}$` |
| `tags` | `string[]` | yes |  |

```json
{
  "assigned_user_id": "usr_01j8000000e008000000000000",
  "channel": "widget",
  "closed_at": "2026-09-28T10:15:30.123Z",
  "csat_score": 1,
  "handoff_requested_at": "2026-09-28T10:15:30.123Z",
  "handoff_state": "none",
  "id": "conv_01j8000000e008000000000000",
  "identity_level": "guest",
  "is_test": true,
  "last_message_at": "2026-09-28T10:15:30.123Z",
  "locale": "da-DK",
  "message_count": 0,
  "messages": [
    {
      "author": {
        "display_name": "string",
        "type": "shopper"
      },
      "blocks": [
        {
          "as_of": "2026-09-28T10:15:30.123Z",
          "id": "b1",
          "items": [
            {
              "actions": {
                "add_to_cart": true,
                "check_store_stock": true,
                "notify_back_in_stock": false
              },
              "as_of": "2026-09-28T10:15:30.123Z",
              "availability": {
                "as_of": "2026-09-28T10:15:30.123Z",
                "label": "Only 2 left",
                "quantity": 2,
                "status": "low_stock"
              },
              "badges": [
                "New"
              ],
              "default_variant_id": "var_01j8000000e008000000000001",
              "image": {
                "alt": "City bike",
                "height": 600,
                "url": "https://cdn.shopify.com/s/files/1/demo/bike-1.jpg",
                "width": 800
              },
              "options": [
                {
                  "name": "Size",
                  "values": [
                    {
                      "is_available": true,
                      "value": "M"
                    },
                    {
                      "is_available": false,
                      "value": "L"
                    }
                  ]
                }
              ],
              "price": {
                "amount": "4999",
                "currency": "DKK",
                "display": "4.999,00 kr."
              },
              "product_id": "prd_01j8000000e008000000000001",
              "rating": {
                "average": 4.6,
                "count": 128
              },
              "subtitle": "Nordic Bikes",
              "title": "Nordic City Bike 7-speed",
              "url": "https://nordicbikes.example/products/city-bike?utm_source=shopassist&utm_medium=chat",
              "variants": [
                {
                  "availability": {
                    "as_of": "2026-09-28T10:15:30.123Z",
                    "label": "Only 2 left",
                    "quantity": 2,
                    "status": "low_stock"
                  },
                  "cart_ref": {
                    "variant_gid": "gid://shopify/ProductVariant/4711"
                  },
                  "options": {
                    "Size": "M"
                  },
                  "price": {
                    "amount": "4999",
                    "currency": "DKK",
                    "display": "4.999,00 kr."
                  },
                  "title": "M",
                  "variant_id": "var_01j8000000e008000000000001"
                }
              ]
            }
          ],
          "layout": "carousel",
          "title": "City bikes in stock",
          "type": "products"
        }
      ],
      "created_at": "2026-09-28T10:15:30.123Z",
      "id": "msg_01j8000000e008000000000000",
      "is_ai_generated": true,
      "role": "shopper",
      "seq": 0,
      "text": "string"
    }
  ],
  "mode": "ai",
  "platform_customer_id": "string",
  "resolution": "resolved_ai",
  "shopper": {
    "email": "string",
    "is_masked": true,
    "is_verified": true,
    "name": "string"
  },
  "started_at": "2026-09-28T10:15:30.123Z",
  "status": "open",
  "store_id": "sto_01j8000000e008000000000000",
  "tags": [
    "string"
  ]
}
```

## Errors [#errors]

| Status | Meaning |
| --- | --- |
| 400 | Bad Request ([error codes](/docs/api/errors)) |
| 401 | Unauthorized ([error codes](/docs/api/errors)) |
| 403 | Forbidden ([error codes](/docs/api/errors)) |
| 404 | Not Found ([error codes](/docs/api/errors)) |
| 422 | Unprocessable Content ([error codes](/docs/api/errors)) |
| 429 | Too Many Requests ([error codes](/docs/api/errors)) |
