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

# Login

> Authenticate a user with email and password

## Request

<ParamField body="email" type="string" required>
  User's email address
</ParamField>

<ParamField body="password" type="string" required>
  User's password (minimum 8 characters)
</ParamField>

## Response

<ResponseField name="accessToken" type="string">
  JWT token for authenticating subsequent requests
</ResponseField>

<ResponseField name="expiresIn" type="number">
  Token expiration time in seconds (default: 604800 = 7 days)
</ResponseField>

<ResponseField name="user" type="object">
  User information

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      User UUID
    </ResponseField>

    <ResponseField name="email" type="string">
      User's email
    </ResponseField>

    <ResponseField name="name" type="string">
      User's display name
    </ResponseField>

    <ResponseField name="role" type="string">
      User's role: `employee`, `manager`, or `admin`
    </ResponseField>

    <ResponseField name="organizationId" type="string">
      Organization UUID
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.hitler.app/api/auth/login" \
    -H "Content-Type: application/json" \
    -d '{
      "email": "user@company.com",
      "password": "securepassword123"
    }'
  ```

  ```typescript TypeScript theme={null}
  const response = await api.login({
    email: "user@company.com",
    password: "securepassword123",
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expiresIn": 604800,
    "user": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "email": "user@company.com",
      "name": "John Doe",
      "role": "employee",
      "organizationId": "456e7890-e12b-34d5-a678-426614174000"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "statusCode": 401,
    "message": "Invalid credentials",
    "error": "Unauthorized"
  }
  ```
</ResponseExample>
