> ## Documentation Index
> Fetch the complete documentation index at: https://docs.weav.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get conversation

> Requires a token with the external-api:read or external-api:write ability. id string required Format: uuid . cURL JavaScript Python PHP cURL JavaScript Python PHP 200 OK 200 OK 404 Not Found 401 Unauthorized id string Format: uuid . channel string One of: email , chat . customer_id string Format:…

```http
GET https://api.weav.com/v1/conversations/{id}
```

Requires a token with the `external-api:read` or `external-api:write` ability.

## Path parameters

<ParamField path="id" type="string" required>
Format: `uuid`.
</ParamField>

## Request

<CodeGroup>

```bash cURL
curl --request GET \
  --url 'https://api.weav.com/v1/conversations/{id}' \
  --header "Authorization: Bearer ${WEAV_API_TOKEN}"
```

```js JavaScript
const response = await fetch("https://api.weav.com/v1/conversations/{id}", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.WEAV_API_TOKEN}`
  }
});
console.log(await response.json());
```

```python Python
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['WEAV_API_TOKEN']}"}
response = requests.get("https://api.weav.com/v1/conversations/{id}", headers=headers)
print(response.json())
```

```php PHP
use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://api.weav.com/v1/conversations/{id}', [
    'headers' => ['Authorization' => 'Bearer '.getenv('WEAV_API_TOKEN')],
]);
echo $response->getBody();
```

</CodeGroup>

## Response

<CodeGroup>

```json 200 OK
{
    "id": "9b2f6c1e-3d4a-4f5b-8c7d-1e2f3a4b5c6d",
    "channel": "email",
    "customer_id": "9b2f6c1e-3d4a-4f5b-8c7d-1e2f3a4b5c6d",
    "subject": "string",
    "status": "open",
    "priority": "low",
    "assignee_id": "9b2f6c1e-3d4a-4f5b-8c7d-1e2f3a4b5c6d",
    "assignee_type": "user",
    "closed_at": "2026-01-01T00:00:00Z",
    "first_response_at": "2026-01-01T00:00:00Z",
    "last_message_at": "2026-01-01T00:00:00Z",
    "is_spam": false,
    "spam_score": 0,
    "created_at": "2026-01-01T00:00:00Z",
    "updated_at": "2026-01-01T00:00:00Z"
}
```

</CodeGroup>

- `404` Not Found
- `401` Unauthorized

## Response fields

<ParamField body="id" type="string">
Format: `uuid`.
</ParamField>

<ParamField body="channel" type="string">
One of: `email`, `chat`.
</ParamField>

<ParamField body="customer_id" type="string">
Format: `uuid`.
</ParamField>

<ParamField body="subject" type="string | null">

</ParamField>

<ParamField body="status" type="string">
One of: `open`, `closed`.
</ParamField>

<ParamField body="priority" type="string">
One of: `low`, `normal`, `high`, `urgent`.
</ParamField>

<ParamField body="assignee_id" type="string | null">
ID of the assigned user or agent. Assignees must belong to the same workspace. Chat conversations can only use the original chat agent when assigning an agent. Email conversations can only use the active email agent when assigning an agent.

Format: `uuid`.
</ParamField>

<ParamField body="assignee_type" type="string | null">
Type of assignee: 'user' for users or 'agent' for AI agents.

One of: `user`, `agent`.
</ParamField>

<ParamField body="closed_at" type="string | null">
Format: `date-time`.
</ParamField>

<ParamField body="first_response_at" type="string | null">
Format: `date-time`.
</ParamField>

<ParamField body="last_message_at" type="string | null">
Format: `date-time`.
</ParamField>

<ParamField body="is_spam" type="boolean">

</ParamField>

<ParamField body="spam_score" type="number | null">

</ParamField>

<ParamField body="created_at" type="string | null">
Format: `date-time`.
</ParamField>

<ParamField body="updated_at" type="string | null">
Format: `date-time`.
</ParamField>

---

This knowledge base is built and hosted on [Weav](https://weav.com).
