# Login

j**Step 1: Prepare Your Request**

* **Endpoint:** `/auth/login`
* **Method:** `POST`
* **URL:** `https://api.talkstackai.com/auth/login`
* **Headers:** Include `Content-Type: application/json`.

**Step 2:** **Create the Request Body**

* `email`: Registered email of the user.
* `password` : Password of the account.

**Example Request Body:**

```
{
    "email": "example@host.com",
    "password": "XXXXXXXXXX"
}
```

**Step 3: Send the Request**

Use your preferred HTTP client to send the POST request with the JSON body.

**Step 4: Handle the response**

**Success Response:**

**Status Code:** `200 OK`

* token: The token to be used for authorization. The token is only valid for 2 hours.
* refreshToken: Token to be used to get new token and continue session.
* expirationTime: Time after which the token will expire.
* `loginStatus`: The login statuses are based on this enum:<br>

  ```javascript
  export const LOGIN_STATUS = {
      'CREDENTIALS_MISSING': 0,
      'ACCOUNT_ALREADY_EXISTS': 1,
      'ACCOUNT_NOT_VERIFIED': 2,
      'USER_NOT_FOUND': 3,
      'INVALID_PASSWORD': 4,
      'HUBSPOT_INTEGRATION_FAILED': 5,
      'HUBSPOT_INTEGRATION_SUCCESS': 6,
      'SUCCESS': 7,
      'LOGIN_FAILED': 8,
      'INVALID_EMAIL': 9
  }
  ```
* **Response Body**<br>

  ```json
  {
      "message": "successfully logged in.",
      "status": "success",
      "token": "xxxxxxxxxxxxxxxxxxx",
      "refreshToken": "xxxxxxxxxxxxxxxxxx",
      "expirationTime": "2025-03-11T17:49:38.925Z",
      "user": {
          "email": "example@host.com",
          "name": "John",
          "active_project": null,
          "created_at": "2025-03-05T11:04:49.875Z",
          "updated_at": "2025-03-05T11:06:02.837Z",
          "company_name": null
      },
      "loginStatus": 7
  }
  ```

**Troubleshooting**

* `400 Bad Request`: If the `email` or `password` is missing in the request.
* `401 Not Found`: If the password is invalid.
* `404 Not Found`: If the user is not found.
* `500 Internal Server Error`: For errors in login.

Last updated 18 hours ago
