---
title: "What the CRM already knows about a contact, for a live voice agent"
description: "Returns facts only, never instructions. `checklist` is the qualification checklist the contact record shows as primary (voice or text). `last_call` is the newest connected Voice AI call with a summary. A part that fails or exceeds the time budget is null and named in `unavailable`. Requires a workspace API key with contacts read.\n"
---

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

Path: Channel Automation API › Voice Lookup API

`GET /api/v1/voice-lookup/contacts/{contactId}/context`

Returns facts only, never instructions. `checklist` is the qualification checklist the contact record shows as primary (voice or text). `last_call` is the newest connected Voice AI call with a summary. A part that fails or exceeds the time budget is null and named in `unavailable`. Requires a workspace API key with contacts read.

## Authentication

- `ApiKeyAuth`, apiKey, in header, header `X-API-Key`, format `API_KEY`

## Path parameters

- `contactId` (`get/api/v1/voice-lookup/contacts/contactId/context.path.contactId`; string, required)
  - format `uuid`

## Code samples

### cURL

```bash
curl --request GET \
  --url 'https://api.channelautomation.com/api/v1/voice-lookup/contacts/<contactId>/context' \
  --header 'X-API-Key: <X-API-Key>'
```

### TypeScript

```typescript
const url = 'https://api.channelautomation.com/api/v1/voice-lookup/contacts/<contactId>/context';
const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.channelautomation.com/api/v1/voice-lookup/contacts/<contactId>/context"

headers = {"X-API-Key": "<X-API-Key>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

Context for the contact

#### Example

```json
{
  "success": true,
  "data": {
    "contact_id": "1c916dcd-f50b-43bd-bd86-ba59b0c58134",
    "checklist": {
      "source": "voice",
      "as_of": "2026-10-27T22:00:57Z",
      "qualified": false,
      "answered": 10,
      "total": 11,
      "steps": [
        {
          "question": "Product / interest confirmed",
          "answer": "Bath",
          "status": "captured"
        },
        {
          "question": "Co owner",
          "answer": null,
          "status": "missing"
        }
      ]
    },
    "last_call": {
      "at": "2026-10-29T15:35:51Z",
      "agent": "Confirmation Agent v2 (Inbound)",
      "direction": "inbound",
      "duration_seconds": 199,
      "summary": "Caller confirmed the Friday 10 AM bath consultation."
    },
    "unavailable": []
  }
}
```

### 400

contactId is not a UUID

### 401

Missing or invalid API key

### 403

Key lacks contacts read

### 404

Contact not found in the key's workspace


Source: https://developer.channelautomations.com/api/get-api-v1-voice-lookup-contacts-contact-id-context/index.md
