---
title: "Create wallet transaction challenge"
method: POST
path: "/v1/auth/wallet/transaction-challenge"
tags: ["Auth"]
---

# Create wallet transaction challenge

`POST /v1/auth/wallet/transaction-challenge`

Handles `POST /v1/auth/wallet/transaction-challenge` via `post.v1.auth.wallet.transaction_challenge`.

## Request body

- WalletTransactionChallengeRequest
  - `wallet_pubkey` string, required — Solana wallet pubkey the caller intends to authenticate as. The challenge transaction is built with this pubkey as the fee payer / sole signer.

## Response `200`

Challenge issued

- WalletTransactionChallengeResponse
  - `expires_at` string, required — RFC3339 timestamp at which this challenge expires.
  - `nonce_id` string, required — Opaque server-issued nonce identifier. Echo on the subsequent login call.
  - `unsigned_transaction` string, required — Base64-encoded unsigned Solana legacy transaction (bincode wire format) containing a single Memo program instruction that encodes the login challenge. Wallets are allowed to include additional ComputeBudget or Lighthouse instructions before signing (some inject these automatically, in arbitrary positions), but the Memo instruction, the recent blockhash, and the wallet's required-signer slot must be preserved. The transaction uses a deterministic, non-recent blockhash and is never submitted on-chain.

## Other responses

- `400` — Standard JSON error payload.
- `500` — Standard JSON error payload.
- `503` — Standard JSON error payload.

---

[API](https://skmtc.net/phoenix/apis/phoenix-eternal-api.md) · [All operations](https://skmtc.net/phoenix/apis/phoenix-eternal-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/phoenix/phoenix-eternal-api/versions/0f598402d680/schema)
