---
title: "Start wallet sign-in (SIWE)"
method: POST
path: "/v1/auth/siwe/challenge"
tags: ["Authentication"]
---

# Start wallet sign-in (SIWE)

`POST /v1/auth/siwe/challenge`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/auth/siwe/challenge`
- Auth: none required

Returns the exact EIP-4361 message to sign, for signing in to the
dashboard with an Ethereum wallet.

The message is built server-side and returned whole: the domain and
the nonce are ours to decide, and a client that assembles its own
message is a client that can be talked into signing a different
one. Sign it unmodified and post it back to
`/v1/auth/siwe/verify`.

The nonce is single-use and valid for five minutes. Distinct from
`/v1/platform/siwe/challenge`, which needs a `plt_` caller and
issues nonces scoped to one platform app for *its* end users.

## Request body

- object
  - `address` string, required: 0x-prefixed 20-byte Ethereum address

## Response `200`

Message to sign

- object
  - `message` string: Sign this verbatim
  - `nonce` string
  - `expires_in_secs` integer

## Other responses

- `400`: Not a valid Ethereum address
- `429`: Rate limited

---

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