> ## 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.

# Usernamepass

The Username with Password authentication allows your client to authenticate using username and password 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>

## 1. Signup API

This endpoints allows you to create a new user using the username and password method.

<Accordion title="Endpoint" defaultOpen="true">
  <ParamField path="POST" type="{auth_base_url}/username-password-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="username" type="string" required>
    Username of the user. Check out the [username format here](/authentication/api/basicauth/usernamepass#username-validators)
  </ParamField>

  <ParamField body="password" type="string" required>
    Password of the user
  </ParamField>
</Accordion>

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

  <ResponseField name="username" type="string">
    Username of the user
  </ResponseField>
</Accordion>

#### Example

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

{
   "username" : "zeromagic_user",
   "password": "user1234"
}
```

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

{
   "user_id": "1",
   "username" : "zeromagic_user"
}
```

## 2. Login API

This endpoints allows you to login a user using the username and password method.

<Accordion title="Endpoint">
  <ParamField path="POST" type="{auth_base_url}/username-password-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="username" type="string" required>
    Username of the user. Check out the [username format here](/authentication/api/basicauth/usernamepass#username-validators)
  </ParamField>

  <ParamField body="password" type="string" required>
    Password of the user
  </ParamField>
</Accordion>

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

  <ResponseField name="username" type="string">
    Username 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/username-password-login 
HTTP/1.1
APP-KEY : ldM6yPAAE3PRTZbHXrjqGGzZY2Yjm7GwjAyjbNqWH48

{
   "username" : "zeromagic_user",
   "password": "user1234"
}
```

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

{
   "user_id": "1",
   "username" : "zeromagic_user"
   "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzNDU2Nzg5LCJuYW1lIjoiSm9zZXBoIn0.OpOSSw7e485LOP5PrzScxHb7SR6sAOMRckfFwi4rp7o",
   "token_type" :"bearer",
   "expires_in" : null
}
```

### Username

* The username must be between 4 and 20 characters long.
* The username can only contain alphanumeric characters (letters and digits) and underscores.
* The username cannot contain any spaces.
* The username must begin with a letter (a-z or A-Z).

```jsx Examples theme={null}
zeromagic_user
Zerouser01
```
