---
title: "Authenticate user"
method: POST
path: "/auth/login"
tags: ["Authentication"]
---

# Authenticate user

`POST /auth/login`

Authenticate a user using EIP712 signature or API key and return access/refresh tokens

## Request body

- AuthenticateRequestDto
  - `method` 'eip712' | 'api_key' | 'privy_access_token', required — Authentication method
  - `address` string, required — User wallet address
  - `clientId` string, required — Client identifier
  - `details` union, required — Authentication method specific details
    - EIP712AuthDetailsDto
      - `signature` string, required — EIP712 signature
      - `timestamp` number, required — Unix timestamp used in the signed message
      - `chainId` number — EIP-155 chain ID used in the EIP712 domain when signing. Optional; falls back to server default (EIP712_CHAIN_ID) for backward compatibility.
    - ApiKeyAuthDetailsDto
      - `apiKey` string, required — API key for authentication
    - PrivyAuthDetailsDto
      - `appId` string, required — Privy App ID
      - `accessToken` string, required — Privy access token (JWT)

## Response `200`

Authentication successful

- AuthenticateResponseDto
  - `accessToken` string, required — JWT access token
  - `refreshToken` string, required — Refresh token for obtaining new access tokens
  - `tokenType` string, required — Token type
  - `expiresIn` number, required — Token expiration time in seconds
  - `address` string, required — User wallet address
  - `clientId` string, required — Client identifier

## Other responses

- `400` — Bad request - invalid input data
- `401` — Unauthorized - authentication failed

---

[API](https://skmtc.dev/pearprotocol/apis/pear-protocol-trading-api.md) · [All operations](https://skmtc.dev/pearprotocol/apis/pear-protocol-trading-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pearprotocol/pear-protocol-trading-api/revisions/d5e1438dfaa7/schema)
