---
title: "User login"
method: POST
path: "/api/login"
tags: ["Auth"]
---

# User login

`POST /api/login`

## Request

- The document declares no server URL.
- Auth: none declared

Authenticates a user and returns a JWT token upon successful login.

## Request body

- ServerUserCredentials
  - `password` string
  - `username` string

## Response `200`

JWT token (upgrade_id present when async SSO upgrade started)

- ServerAuthTokenWithUpgrade
  - `token` string
  - `upgrade_id` string

## Other responses

- `401`: Invalid credentials
- `403`: Error in request
- `429`: Too many requests
- `500`: Error signing token

## Changes

- **2026-07-17** `7465ea0ee21a`: 1 info
  - endpoint added
- **2023-03-31** `b57fc7b9446e`: 1 breaking
  - api path removed without deprecation

[Operation history](https://skmtc.dev/signal18/apis/signal-18-dashboard-api/changes/api/login/post.md)

---

[API](https://skmtc.dev/signal18/apis/signal-18-dashboard-api.md) - [All operations](https://skmtc.dev/signal18/apis/signal-18-dashboard-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signal18/apis/signal-18-dashboard-api/revisions/8ee8a1e31294?raw)
