---
title: "Request O T P"
method: POST
path: "/auth/otp/request"
tags: ["auth"]
---

# Request O T P

`POST /auth/otp/request`

## Request

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

Public: starts the native `email_otp` login/registration flow by emailing a one-time code to `email` (optionally scoped by `tenant_code`). Always 200 `{message:"code sent"}` on success; the code itself is only echoed in the response body when the deployment has `expose_dev_otp` enabled (local/dev only). An expired workspace code gets 404 `tenant_code_expired`.

## Request body

- EnforcerV3InternalUsecaseAuthRequestOTPInput
  - `email` string
  - `tenant_code` string

## Response `200`

OK

- InternalDeliveryHttpHandlerOtpRequestResponse
  - `dev_otp` string
  - `message` string
  - `success` boolean

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found

---

[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)
