---
title: "List custom contact fields and pipeline stages"
method: GET
path: "/api/v1/sites/{id}/contacts/fields"
tags: ["CRM"]
---

# List custom contact fields and pipeline stages

`GET /api/v1/sites/{id}/contacts/fields`

## Request

- Base URL: `https://app.mondovo.com`
- URL: `https://app.mondovo.com/api/v1/sites/{id}/contacts/fields`
- Auth: HTTP bearer

Returns the custom attributes defined on this site’s contacts AND the pipeline stage keys `status` will accept. Call this before an import to map your columns onto the site’s existing vocabulary. Requires scope `crm:read`.

## Response `200`

Field definitions and stages.

- object
  - `site_id` string, uuid
  - `fields` object[]
    - `field_key` string
    - `label` string
    - `field_type` 'text' | 'number' | 'select' | 'boolean' | 'date'
    - `options` string[]
  - `stages` object[]
    - `key` string
    - `label` string
  - `stages_source` 'configured' | 'default' | 'unreadable': `default` means the site has not configured its own pipeline and the built-in stages apply.

## Other responses

- `401`: Authentication failed. Error codes: `invalid_api_key` (missing/unknown key), `key_revoked`, `key_expired`.
- `403`: Authenticated but not allowed. Error codes: `addon_required` (the API key’s workspace no longer has the Agency add-on — checked on every request, not just at key creation) and `missing_scope` (the key lacks the scope this endpoint needs).
- `404`: `site_not_found`.
- `429`: Rate limit exceeded (`rate_limit_exceeded`). The body includes `retry_after_seconds`, `limit`, and `window` ("minute" or "hour"); a `Retry-After` header is also set.
- `500`: Unexpected server error (`internal_error`). Safe to retry.

---

[API](https://skmtc.dev/mondovo/apis/mondovo-public-api.md) · [All operations](https://skmtc.dev/mondovo/apis/mondovo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mondovo/apis/mondovo-public-api/revisions/1baa3e2865ba?raw)
