---
title: "Find a contact"
method: GET
path: "/v1/contacts/find"
tags: ["Contacts"]
---

# Find a contact

`GET /v1/contacts/find`

Search for a contact by `email` or `userId`. Only one parameter is allowed.

## Query parameters

- `email` string
- `userId` string

## Response `200`

List of contacts (or an empty array if no contact was found). Contact objects will include any custom properties.

- Contact[]
  - `id` string — The contact's Loops ID.
  - `email` string — The contact's email address.
  - `firstName` string, nullable — The contact's first name.
  - `lastName` string, nullable — The contact's last name.
  - `source` string — The source the contact was created from.
  - `subscribed` boolean — Whether the contact will receive campaign and workflow emails.
  - `userGroup` string — The contact's user group.
  - `userId` string, nullable — The contact's unique user ID.
  - `mailingLists` object — Mailing lists the contact is subscribed to, represented by key-value pairs of mailing list IDs and `true`.
  - `optInStatus` 'accepted' | 'pending' | 'rejected' | 'null', nullable — Double opt-in status. This will be `null` for contacts unless they are created via a form while double opt-in is enabled.

## Other responses

- `400` — Bad request (e.g. invalid email address).
- `405` — Wrong HTTP request method.

---

[API](https://skmtc.net/loops/apis/loops-openapi-spec.md) · [All operations](https://skmtc.net/loops/apis/loops-openapi-spec/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/loops/loops-openapi-spec/revisions/9cc087257f0d/schema)
