---
title: "Sign in with email and password"
method: POST
path: "/v1/auth/login"
tags: ["auth"]
---

# Sign in with email and password

`POST /v1/auth/login`

## Request

- Base URL: `https://api.portproof.org`
- URL: `https://api.portproof.org/v1/auth/login`
- Auth: none required

Rate-limited per IP and per email. Sets the `pp_session` (httpOnly) and `pp_csrf` cookies; send the `pp_csrf` value as `X-CSRF-Token` on every later state change.

## Request body

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

## Response `200`

Default Response

- object
  - `customer` object, required
    - `id` string, required
    - `org_id` string, required
    - `email` string, email, required
    - `email_verified` boolean, required
    - `name` string, nullable, required
    - `locale` string, required
    - `referral_code` string, required
    - `marketing_opt_in` boolean, required
    - `status` 'active' | 'suspended' | 'closed', required
    - `created_at` string, date-time, required

## Other responses

- `401`: Default Response
- `403`: Default Response
- `429`: Default Response

---

[API](https://skmtc.dev/portproof/apis/portproof-api.md) · [All operations](https://skmtc.dev/portproof/apis/portproof-api/llms.txt) · [OpenAPI document](https://skmtc.dev/portproof/apis/portproof-api/revisions/4143916c0fac?raw)
