# API Documentation
###### tags: `Documentation` `API`
## USER REGISTRATION
User signs up using his email as username and password. After signing up user must confirm his email.
### POST /user
Creates an unconfirmed user
**Request Body**
| Key | Type | Description |
| -------- | -------- | -------- |
| username | string | Required. Username should be an email |
| password | string | Required. Password must be at least 8 characters, a number, a special character, uppercase and lowercase letters. |
**Request Example**
```json=
{
"username": "padilla@mailinator.com",
"password": "Padilla1!"
}
```
**Success Response Examples**
- Status Code: `201`
- Content:
```json=
{
"cognito_id": "sample-cognito-id"
}
```
**Error Response Examples**
- Missing required fields
- Status Code: `400`
- Content:
```json=
"errors": [
{
"code": "missing_required_field",
"message": "Field is required",
"param": "username"
}
]
```
- User already exists
- Status Code: `400`
- Content:
```json=
"errors": [
{
"code": "user_already_exists",
"message": "User already exists",
"param": "username"
}
]
```
- Username is not valid
- Status Code: `400`
- Content:
```json=
"errors": [
{
"code": "invalid_username",
"message": "Username must be a valid email",
"param": "username"
}
]
```
- Password is not valid
- Status Code: `400`
- Content:
```json=
"errors": [
{
"code": "invalid_password",
"message": "Password must be at least 8 characters long, and has at least 1 of each of the following: number, special character, uppercase letter, lowercase letter",
"param": "password"
}
]
```