---
title: "Count and sample the contacts that match unsaved conditions"
method: POST
path: "/segments/preview"
tags: ["Campaigns"]
---

# Count and sample the contacts that match unsaved conditions

`POST /segments/preview`

## Request

- Base URL: `https://sendhq.cc/api/v1`
- URL: `https://sendhq.cc/api/v1/segments/preview`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sendhq/apis/sendhq-api/docs/segments/preview/post.ts> (a function with typed inputs; its response is checked against the schema)

Evaluate `match` and `conditions` without saving them: the number of subscribed, non-dormant contacts that match and up to five of them.

## Request body

- object
  - `name` string
  - `match` 'all' | 'any'
  - `conditions` object[]
    - `field` string, required: One of tag, list, status, source, email, name, signed_up, opened, clicked, opens, sends_without_open, country, or a custom field as `fields.<key>` (or `field` with `key`).
    - `key` string: Custom field key when `field` is `field`.
    - `op` string, required: Operator allowed for the field (see `fields` in GET /segments).
    - `value` union: Required except for is_set, not_set, ever, and never. Day counts and numbers for in_last_days, not_in_last_days, gte, lte, gt, and lt; YYYY-MM-DD for before and after.
      - string
      - number

## Response `200`

Successful response

- object
  - `count` integer, required
  - `sample` object[], required
    - `id` string, required
    - `email` string, email, required
    - `name` string, required
    - `fields` object, required
      - `plan` string, required
    - `status` string, required
    - `consent` object, required
      - `source` string, required
      - `basis` string, required
      - `importId` unknown, required
      - `optedInAt` string, date-time, required
      - `confirmedAt` unknown, required
      - `ip` unknown, required
      - `userAgent` unknown, required
    - `unsubscribedAt` unknown, required
    - `dormant` boolean, required
    - `dormantAt` unknown, required
    - `engagement` object, required
      - `sent` integer, required
      - `opens` integer, required
      - `clicks` integer, required
      - `lastSentAt` string, date-time, required
      - `lastOpenedAt` string, date-time, required
      - `lastClickedAt` string, date-time, required
      - `sendsSinceEngaged` integer, required
    - `country` string, required
    - `tags` string[], required
    - `lists` string[], required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid authentication
- `402`: A paid entitlement is required for this recipient or feature
- `403`: The workspace, domain, policy, or suppression state forbids the operation
- `404`: Tenant-scoped resource not found
- `409`: Resource state or idempotency conflict
- `413`: Attachment count or bytes exceed the accepted limit
- `422`: Request validation or suppression check failed
- `423`: Sending is paused for this sender identity or workspace; the message gives the reason and how to appeal
- `429`: A monthly, daily, or trial usage limit was reached
- `500`: Unexpected server error
- `502`: An upstream provider operation failed
- `503`: A required provider or signing configuration is unavailable
- `default`: An error response using SendHQ's standard JSON envelope

---

[API](https://skmtc.dev/sendhq/apis/sendhq-api.md) - [All operations](https://skmtc.dev/sendhq/apis/sendhq-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sendhq/apis/sendhq-api/revisions/98e39e48cb9a?raw)
