> ## Documentation Index
> Fetch the complete documentation index at: https://developer.surefeedback.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Login

> Authenticate and receive a JWT token.

Authenticates a user with email and password and returns a JWT token.

## Request body

<ParamField body="email" type="string" required>
  The user's email address.
</ParamField>

<ParamField body="password" type="string" required>
  The user's password.
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  `true` on success.
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="data fields">
    <ResponseField name="token" type="string">
      JWT bearer token. Pass this in `X-API-Key: sf_your_api_key_here` on all subsequent requests.
    </ResponseField>

    <ResponseField name="user" type="object">
      Authenticated user details.
    </ResponseField>

    <ResponseField name="organization" type="object">
      The user's active organization.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
      "user": {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "email": "jane@example.com",
        "first_name": "Jane",
        "last_name": "Smith",
        "active_organization_id": "660e8400-e29b-41d4-a716-446655440001",
        "active_project_id": "770e8400-e29b-41d4-a716-446655440002"
      }
    }
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "message": "Invalid credentials",
    "error_code": "INVALID_CREDENTIALS"
  }
  ```

  ```json 403 theme={null}
  {
    "success": false,
    "message": "Your account has been blocked.",
    "error_code": "ACCOUNT_BLOCKED"
  }
  ```
</ResponseExample>
