---
title: "Get a contact by email (legacy flat URL shape)"
method: GET
path: "/v1/contacts/{projectId}/{email}"
tags: ["Contacts"]
---

# Get a contact by email (legacy flat URL shape)

`GET /v1/contacts/{projectId}/{email}`

## Request

- Base URL: `https://api.bluefox.email`
- URL: `https://api.bluefox.email/v1/contacts/{projectId}/{email}`
- Auth: HTTP bearer

Legacy flat URL shape, kept for backward compatibility - identical behavior to GET /v1/projectId/{projectId}/contacts/{email} above.

## Path parameters

- `projectId` string, required
- `email` string, required

## Response `200`

OK

- object
  - `status` integer
  - `result` Contact: Custom contact field values are sent/received as flat top-level keys matching the field's name, not nested under a "customFields" object - e.g. after creating a field named "plan" via POST /v1/projectId/{projectId}/contacts/fields, set it with `{ "email": "x@y.com", "plan": "pro" }`. A key that does not match any registered field name is silently dropped (not an error) - it will not appear in the response, so a typo in a custom field name fails silently.
    - `_id` string
    - `email` string
    - `name` string
    - `tags` string[]
    - `_lists` string[]: Names of subscriber lists this contact belongs to.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `403`: Missing or invalid API key
- `404`: Contact not found

---

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