# checkContactEmail

Check one of a contact's email addresses now (`contactEmailId` from getContact `emails`) and save the result on it, as the contact page's Check does. Returns the address with its `emailCheck` (`result` DELIVERABLE, RISKY, UNDELIVERABLE or UNKNOWN). `skipReason` set means the check did not run (NO_CREDITS, PROVIDER_ERROR, …), nothing was spent and any earlier result stays. An address not on that contact is NOT_FOUND. One email-verification credit per address checked, the same credits as the app (plan allowance first, then bought; checkBillingAction with action EMAIL_VERIFICATION says how many are left), so name the count and have the person agree before a large one. ADMIN: the key owner must currently be an org admin.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "checkContactEmail", "variables": {...} }`
- Scope: `ADMIN`
- Type: mutation
- Idempotency: honors `Idempotency-Key` (24 h)
- Rate-limited: no

## Variables

- `contactId`: `ID!` (required)
- `contactEmailId`: `ID!` (required)

## Response (data, an example)

```json
{
  "emailCheckMutation": {
    "checkContactEmail": {
      "skipReason": "NO_CREDITS",
      "contactEmail": {
        "id": "<ID>",
        "email": "…",
        "emailCheck": {
          "result": "DELIVERABLE",
          "reason": "…",
          "checkedAt": "2026-01-01T00:00:00.000Z",
          "source": "PERSON",
          "checkedBy": "…"
        }
      }
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "operationId": "checkContactEmail",
    "variables": {
      "contactId": "<contactId>",
      "contactEmailId": "<contactEmailId>"
    }
  }'
```
