> ## Documentation Index
> Fetch the complete documentation index at: https://nocode-docs.zeroagent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Emailotp

The Email with OTP authentication allows your client to authenticate using OTP method. The endpoints are pre-built and are easy to manage your authentication flow and users. To get your `{auth_base_url}`, check it out here - [Get started with base url](/authentication/api/generalinfo#get-started-with-base-url).

<Info>
  Note : **APP-KEY** to be passed in Headers can be obtained from the settings in the project dashboard
</Info>

<Note>
  **Sending Email OTP** - Currently, we don't support additional custom SMTP configuration. We send emails from our SMTP server. No configuration is needed for email setup
</Note>

## 1. Signup API

This endpoints allows you to create a new user using the email address and otp method.

<Accordion title="Endpoint" defaultOpen="true">
  <ParamField path="POST" type="{auth_base_url}/email-otp-signup" />
</Accordion>

<Accordion title="Header">
  <ParamField query="APP-KEY" type="string" required>
    App key of the particular project
  </ParamField>
</Accordion>

<Accordion title="Body Data">
  POST the data in the **application/json** format.

  <ParamField body="email" type="string" required>
    Email address of the user
  </ParamField>
</Accordion>

<Accordion title="Response Body Data">
  The response with **201 CREATED** status code represents that user is created and the OTP is sent to the email address

  <ResponseField name="user_id" type="string">
    User Id of the new created user
  </ResponseField>

  <ResponseField name="email" type="string">
    Email address of the user
  </ResponseField>
</Accordion>

#### Example

```jsx Request theme={null}
POST https://authn.zeromagic.cloud/auth/353d1499ab5149e194a53cf0f6c837f4/development/email-otp-signup 
HTTP/1.1
APP-KEY : ldM6yPAAE3PRTZbHXrjqGGzZY2Yjm7GwjAyjbNqWH48

{
    "email":"user@zeromagic.cloud"
}
```

```jsx Response theme={null}
HTTP/1.1 
201 CREATED

{
    "user_id": "1",
    "email":"user@zeromagic.cloud"
}
```

## 2. Login API

This endpoints allows you to login a user using the email and otp method.

<Accordion title="Endpoint">
  <ParamField path="POST" type="{auth_base_url}/email-otp-login" />
</Accordion>

<Accordion title="Header">
  <ParamField query="APP-KEY" type="string" required>
    App key of the particular project
  </ParamField>
</Accordion>

<Accordion title="Body Data">
  POST the data in the **application/json** format.

  <ParamField body="email" type="string" required>
    Email address of the user
  </ParamField>
</Accordion>

<Accordion title="Response Body Data">
  The response with **200 OK** status code represents that the OTP is sent to the email address

  <ResponseField name="user_id" type="string">
    User Id of the user
  </ResponseField>

  <ResponseField name="email" type="string">
    Email address of the user
  </ResponseField>
</Accordion>

#### Example

```jsx Request theme={null}
POST https://authn.zeromagic.cloud/auth/353d1499ab5149e194a53cf0f6c837f4/development/email-otp-login 
HTTP/1.1
APP-KEY : ldM6yPAAE3PRTZbHXrjqGGzZY2Yjm7GwjAyjbNqWH48

{
    "email":"user@zeromagic.cloud"
}
```

```jsx Response theme={null}
HTTP/1.1 
200 OK

{
    "user_id": "1",
    "email":"user@zeromagic.cloud"
}
```

## 3. Verify OTP API

This endpoints allows you to verify the otp of the respective email address.

<Accordion title="Endpoint">
  <ParamField path="POST" type="{auth_base_url}/email-otp-verify" />
</Accordion>

<Accordion title="Header">
  <ParamField query="APP-KEY" type="string" required>
    App key of the particular project
  </ParamField>
</Accordion>

<Accordion title="Body Data">
  POST the data in the **application/json** format.

  <ParamField body="email" type="string" required>
    Email address of the user
  </ParamField>

  <ParamField body="otp_code" type="integer" required>
    Otp sent to the email address
  </ParamField>
</Accordion>

<Accordion title="Response Body Data">
  <ResponseField name="user_id" type="string">
    User Id of the user
  </ResponseField>

  <ResponseField name="email" type="string">
    Email address of the user
  </ResponseField>

  <ResponseField name="access_token" type="string">
    JWT access token is returned
  </ResponseField>

  <ResponseField name="token_type" type="string">
    Value is *bearer*
  </ResponseField>

  <ResponseField name="expires_in" type="string">
    Currently no expiry time for token, Returns null
  </ResponseField>
</Accordion>

#### Example

```jsx Request theme={null}
POST https://authn.zeromagic.cloud/auth/353d1499ab5149e194a53cf0f6c837f4/development/email-otp-verify 
HTTP/1.1
APP-KEY : ldM6yPAAE3PRTZbHXrjqGGzZY2Yjm7GwjAyjbNqWH48

{
    "email":"user@zeromagic.cloud"
    "otp_code" : 1234
}
```

```jsx Response theme={null}
HTTP/1.1 
200 OK

{
   "user_id": "1",
   "email":"user@zeromagic.cloud"
   "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzNDU2Nzg5LCJuYW1lIjoiSm9zZXBoIn0.OpOSSw7e485LOP5PrzScxHb7SR6sAOMRckfFwi4rp7o",
   "token_type" :"bearer",
   "expires_in" : null
}
```
