---
title: "Sign in"
method: POST
path: "/auth/login"
tags: ["Mobile Authentication"]
---

# Sign in

`POST /auth/login`

## Request

- Base URL: `https://getdynamicqr.com/api/v1`
- URL: `https://getdynamicqr.com/api/v1/auth/login`
- Auth: none required

Authenticate with your website email and password.
Returns a mobile token valid for 1 year.

If the account has 2FA enabled, first call this without `two_factor_code` —
you will receive HTTP 202 `{"requires_two_factor": true}`.
Then call again with the 6-digit TOTP code included.

## Request body

- object
  - `email` string, required: Your account email.
  - `password` string, required: Your account password.
  - `two_factor_code` string: 6-digit TOTP code (only when prompted).
  - `device_name` string: Optional device label stored with the token.

## Response `200`

OK

## Other responses

- `202`: Response
- `401`: Unauthorized
- `429`: Rate limit exceeded. See `Retry-After`.

---

[API](https://skmtc.dev/getdynamicqr/apis/d-qr-rest-api.md) · [All operations](https://skmtc.dev/getdynamicqr/apis/d-qr-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getdynamicqr/apis/d-qr-rest-api/revisions/4467aeca30ce?raw)
