---
title: "Email Status"
method: GET
path: "/auth/email-status"
tags: ["auth"]
---

# Email Status

`GET /auth/email-status`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/auth/email-status`
- Auth: none declared

Public, rate-limited: given `email` (and optional `tenant_code`), reports whether an account with that address already exists and is verified WITHIN THAT ONE TENANT, so a signup UI can route to login vs. register vs. "email taken" without leaking whether the address is registered in any other tenant. `email` must parse as a bare address (no display-name form, no dotless domain) or the call is a 400 `invalid_email`, distinct from the 200 `exists:false` a well-formed-but-unregistered address returns. An expired workspace code gets 404 `tenant_code_expired`.

## Query parameters

- `email` string, required
- `tenant_code` string

## Response `200`

OK

- InternalDeliveryHttpHandlerEmailStatusResponse
  - `data` EnforcerV3InternalUsecaseAuthEmailStatus
    - `exists` boolean
    - `verified` boolean
  - `success` boolean

## Other responses

- `400`: Bad Request

---

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