---
title: "Bounded Contacts page (list detail) aggregate"
method: GET
path: "/v1/dashboard/contacts/lists/{contact_list_id}"
---

# Bounded Contacts page (list detail) aggregate

`GET /v1/dashboard/contacts/lists/{contact_list_id}`

## Request

- Base URL: `https://api.skysay.ai`
- URL: `https://api.skysay.ai/v1/dashboard/contacts/lists/{contact_list_id}`
- Auth: none declared

Pure read: one list's contacts in import order, searched and filtered (all, not_called, reached, do_not_call), each with its first name, latest campaign outcome and do-not-call state. When a campaign uses the list (and its AI agent is hosted; an AI agent on the customer's own endpoint previews outcome external), a preview of what that campaign's AI agent says to the selected contact. For an AI agent with call variables set up (mode call_variables), the greeting, the script's opening and personalised lines and the SMS templates are rendered from this contact's values by the call-variables admission and template renderer, with the template's fallback wording where a value is missing (missing_values names them); when this contact's values would refuse the call (a required value missing, a wrong type), outcome is refused with the reason code, the field and the destination, never a value. For any other AI agent (mode as_written) the lines are shown as its calls speak them today. Fixed query budget; no provider or model call.

## Path parameters

- `contact_list_id` string, required

## Query parameters

- `project_id` string
- `search` string
- `filter` 'all' | 'not_called' | 'reached' | 'do_not_call'
- `contact_id` string
- `campaign_id` string
- `limit` integer
- `offset` integer

## Response `200`

List detail projection

---

[API](https://skmtc.dev/skysay/apis/skysay-api.md) · [All operations](https://skmtc.dev/skysay/apis/skysay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/skysay/apis/skysay-api/revisions/148c7e111260?raw)
