---
title: "Generate an EIP-191 sign-in challenge"
method: POST
path: "/wallet-auth/challenge"
tags: ["Wallet Auth"]
---

# Generate an EIP-191 sign-in challenge

`POST /wallet-auth/challenge`

## Request

- Base URL: `https://www.cloudworldmodel.ai/api`
- URL: `https://www.cloudworldmodel.ai/api/wallet-auth/challenge`
- Auth: none required

Issues a one-time nonce for the given EVM wallet address. The caller must
sign the returned `message` string with `personal_sign` (EIP-191) and
submit the hex signature to `POST /wallet-auth/verify` within 5 minutes.

Rate-limited to 10 requests per IP per minute to prevent nonce-farming.
No authentication required.

## Request body

- object
  - `walletAddress` string, required: The EVM wallet address requesting a sign-in challenge

## Response `200`

Challenge nonce issued

- object
  - `nonce` string, required: The random hex nonce (32 hex chars)
  - `message` string, required: The full message string to sign with personal_sign
  - `expiresAt` string, date-time, required: ISO-8601 timestamp when the nonce expires (5 minutes)

## Other responses

- `400`: Invalid request data — structured field-level error
- `429`: Rate limit exceeded — 10 challenges per IP per minute
- `500`: Internal server error

---

[API](https://skmtc.dev/cloudworldmodel/apis/cloud-world-model-agent-api.md) · [All operations](https://skmtc.dev/cloudworldmodel/apis/cloud-world-model-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cloudworldmodel/apis/cloud-world-model-agent-api/revisions/ecc3ad1ff07f?raw)
