---
title: "Sign an MFA-exempt Hyperliquid non-send action"
method: POST
path: "/v1/wallets/sign-exchange-action"
tags: ["wallets"]
---

# Sign an MFA-exempt Hyperliquid non-send action

`POST /v1/wallets/sign-exchange-action`

## Request body

- object
  - `action` object, required
    - `type` string, required
    - `signatureChainId` string, required
    - `hyperliquidChain` 'Mainnet' | 'Testnet', required
    - `nonce` integer
  - `nonce` integer, required
  - `vaultAddress` string
  - `expiresAfter` integer

## Response `200`

Successful response

- WalletExchangeSignature
  - `r` string, required
  - `s` string, required
  - `v` union, required
    - 27
    - 28

## Other responses

- `400` — Invalid input data
- `401` — Authorization not provided
- `403` — Insufficient access
- `500` — Internal server error

## Changes

- **2026-08-27** `2e6f0d9a237e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/legend/apis/legend-api/changes/v1/wallets/sign-exchange-action/post.md)

---

[API](https://skmtc.dev/legend/apis/legend-api.md) · [All operations](https://skmtc.dev/legend/apis/legend-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/legend/legend-api/revisions/49a2cefd3b8c/schema)
