---
title: "List custom contact fields"
method: GET
path: "/contact-fields"
tags: ["Contact fields"]
---

# List custom contact fields

`GET /contact-fields`

## Request

- Base URL: `https://www.unitpost.com/api/v1`
- URL: `https://www.unitpost.com/api/v1/contact-fields`
- Auth: HTTP bearer

Retrieve a list of the custom contact fields defined in your workspace, cursor-paginated. These are the typed attributes (text, number, date, boolean, and so on) you can set on any contact and reference as template variables. Define a new one with [Create a custom contact field](#post-contact-fields). Requires the `contacts:read` capability.

## Query parameters

- `limit` integer
- `after` string
- `before` string

## Response `200`

A page of contact fields.

- object
  - `object` 'list', required
  - `has_more` boolean, required
  - `data` ContactField[], required
    - `object` 'contact_field', required
    - `id` string, required
    - `key` string, required
    - `label` string, required
    - `type` 'text' | 'number' | 'boolean' | 'date', required
    - `default_value` string, nullable, required: The value used for any contact that has none for this field (key missing or null): when an email is sent (merge tags) and when segments are evaluated. It's never written onto contacts, so changing it takes effect everywhere at once. Stored as a string and coerced to the field's type; null means no default. In segment filters, is_set / is_not_set check whether the contact itself has a value.
    - `position` number, required
    - `created_at` string, required
    - `updated_at` string, required

## Other responses

- `401`: Missing or invalid API key.
- `422`: Invalid pagination params.

---

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