> ## Documentation Index
> Fetch the complete documentation index at: https://docs.glider.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# SIWE Verify

> Verify a signed SIWE message and receive a bearer token.

Verifies the signed SIWE message and returns a bearer token for authenticated wallet requests.

* Auth: none
* Rate limit tier: Tier 2
* Origin policy: request must come from an allowlisted origin/host

Common error responses:

* `400` when SIWE input is malformed, `chainId` is invalid/unsupported, or chain SIWE RPC is not configured
* `401` for expired SIWE messages/challenges or invalid signatures/challenges
* `403` when request origin/host is not allowlisted for SIWE

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://api.glider.fi/v1/auth/siwe/verify' \
    --header 'Content-Type: application/json' \
    --header 'Origin: https://app.glider.fi' \
    --data '{
      "message": "app.glider.fi wants you to sign in with your Ethereum account:\n0x1111111111111111111111111111111111111111\n\nSign in to Glider.\n\nURI: https://app.glider.fi\nVersion: 1\nChain ID: 8453\nNonce: 0f8f1f5f3c4248dfae34a7f8fd2de18e\nIssued At: 2026-03-05T00:00:00.000Z\nExpiration Time: 2026-03-05T00:10:00.000Z",
      "signature": "0x..."
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "accessToken": "<jwt>",
    "tokenType": "Bearer",
    "expiresAt": "2026-03-12T00:00:00.000Z",
    "walletAddress": "0x1111111111111111111111111111111111111111",
    "chainId": 8453
  }
  ```
</ResponseExample>

Use the returned token on wallet-authenticated endpoints:

```bash cURL theme={null}
curl --request POST \
  --url 'https://api.glider.fi/v1/trpc/v2.portfolio.list' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <jwt>' \
  --data '{"input":{}}'
```
