---
title: "Reveal a prospect's email"
method: POST
path: "/v1/finder/prospects/{id}/reveal_email"
tags: ["RecruitAffiliates.ai"]
---

# Reveal a prospect's email

`POST /v1/finder/prospects/{id}/reveal_email`

## Request

- Base URL: `https://api.affiliaterail.com`
- URL: `https://api.affiliaterail.com/v1/finder/prospects/{id}/reveal_email`
- Auth: HTTP bearer

Looks up the email address of one saved prospect. Spends one email credit, only when a usable address comes back: if nothing is found the credit is refunded in the same call, and `refunded` says so. A prospect already revealed costs nothing.

Send an `Idempotency-Key`: a retry with the same key answers the first result and never spends twice.

A test key answers a sample address and spends nothing.

**Scope:** `finder:write`

## Path parameters

- `id` string, required: Prefixed id (`fdi_…`)

## Response `200`

What the look found

- FinderRevealResult
  - `object` 'finder_email_reveal', required
  - `prospect_id` string, required: Prefixed id (`fdi_…`)
  - `found` boolean, required: True when a usable address came back, or the prospect already had one
  - `email` string, nullable, required
  - `verification` 'verified' | 'unverified' | 'null', nullable, required: `unverified` covers catch-all domains too
  - `source` string, nullable, required: Where the address was found, like `website` or `hunter`
  - `charged` boolean, required: True when this call spent one email credit
  - `refunded` boolean, required: True when the credit was spent and then given back because nothing usable came back
  - `already_revealed` boolean, required
  - `reason_code` string, nullable, required: Why nothing was found: `no_result`, `invalid`, `provider_failure`, `timeout` or `budget`
  - `reason` string, nullable, required: The same, as a sentence you can show a person
  - `livemode` boolean, required
  - `deliverability` 'verified' | 'catch_all' | 'mx_ok' | 'unchecked' | 'invalid' | 'null', nullable, required: What we know about whether the address takes mail: `verified` (the mail server accepted it), `catch_all` (the server accepts every address, so it may still bounce), `mx_ok` (not checked itself, but its domain has a mail server), `unchecked` (nothing checked, or the check timed out) or `invalid`. Null when nothing was found.

## Other responses

- `400`: Invalid request
- `401`: Missing or unknown API key
- `402`: The organization's Recruit Affiliates plan does not include the API
- `403`: Key lacks the required scope
- `404`: No such object in your organization
- `409`: In conflict with the object's state, or the same idempotent request is still running
- `422`: The request was understood and refused
- `429`: Rate limited, by key or by organization: see Retry-After and X-RateLimit-Scope
- `501`: Not available to a test key (`sandbox_no_send`)

---

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