---
title: "Login"
method: POST
path: "/api/user/login"
tags: ["Authentication"]
---

# Login

`POST /api/user/login`

Authenticate a user and receive a JWT token. Does not require an existing API key.

**SDK Usage:**
```typescript
const result = await client.login('user@example.com', 'password123');
client.updateApiKey(result.data.token);
```

## Request body

- object
  - `email` string, email, required
  - `password` string, password, required

## Response `200`

Login successful

- LoginResponse
  - `code` integer
  - `data` object
    - `id` string, uuid
    - `email` string, email
    - `firstName` string
    - `lastName` string
    - `token` string — JWT token for subsequent API calls

## Other responses

- `401` — Invalid credentials

## Changes

- **2026-03-07** `f19009a654f5` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/privacypal/apis/privacypal-api/changes/api/user/login/post.md)

---

[API](https://skmtc.dev/privacypal/apis/privacypal-api.md) · [All operations](https://skmtc.dev/privacypal/apis/privacypal-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/privacypal/privacypal-api/revisions/0e1db3b6bc7c/schema)
