---
title: "Login"
method: POST
path: "/auth/login"
tags: ["Auth"]
---

# Login

`POST /auth/login`

Authenticate with email and password. Returns a JWT access token and sets a HttpOnly refresh token cookie. Rate limited to 5 requests/minute per IP.

## Request body

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

## Response `200`

Login successful. `refresh_token` set as HttpOnly cookie.

- AuthResponse
  - `success` boolean
  - `user` UserObject
    - `id` string
    - `email` string, email
    - `name` string
    - `plan` 'free' | 'starter' | 'pro'
    - `avatarUrl` string, nullable
    - `emailVerified` boolean
    - `isAdmin` boolean
    - `createdAt` string, date-time
  - `accessToken` string — JWT access token (15 min expiry). Store in memory only.
  - `message` string

## Other responses

- `401` — Invalid credentials
- `403` — Account disabled
- `429` — Rate limited (5/min per IP)

---

[API](https://skmtc.net/snapapi/apis/snapapi-screenshot-web-data-api.md) · [All operations](https://skmtc.net/snapapi/apis/snapapi-screenshot-web-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/snapapi/snapapi-screenshot-web-data-api/versions/b12ff2791613/schema)
