---
title: "Get a single-use challenge so the wallet that paid for a page can update it — no API key."
method: POST
path: "/wallet-auth/challenge"
tags: ["Provision"]
---

# Get a single-use challenge so the wallet that paid for a page can update it — no API key.

`POST /wallet-auth/challenge`

## Request

- Base URL: `https://api.stacktr.ee`
- URL: `https://api.stacktr.ee/wallet-auth/challenge`
- Auth: none required

Public. Send { "wallet": "0x…" } (EVM, lowercase or checksummed). Returns { challenge, message, expires_at }: personal_sign (EIP-191) the message with that wallet, then send `Authorization: Wallet challenge=…,sig=0x…` on PUT /sites/{id}. One challenge per request, 5-minute TTL. 404 for a wallet with no pages here (pages are keyed to the wallet that PAID at publish time).

## Request body

- object
  - `wallet` string, required: The EVM address that paid at POST /publish (or is linked to the owning account).

## Response `200`

Challenge issued.

- object
  - `challenge` string
  - `message` string: Sign exactly this with personal_sign.
  - `expires_at` integer: Unix ms.

## Other responses

- `404`: This wallet has no pages here.

---

[API](https://skmtc.dev/stacktr/apis/stacktree-api.md) · [All operations](https://skmtc.dev/stacktr/apis/stacktree-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stacktr/apis/stacktree-api/revisions/5878cce46977?raw)
