For the complete documentation index, see llms.txt. This page is also available as Markdown.

Submit a signed perp action

Submit a signed perp action

post

Submit an action you have signed to the Hyperliquid exchange.

This is the only perp endpoint that changes anything: every other one either reads state or prepares an unsigned payload.

⚠️ There is no dry-run mode. A successful call is a real order, cancel, leverage change or transfer against real funds, and no request field prevents that.

Send action and nonce back exactly as a prepare endpoint returned them, plus the {r, s, v} signature you produced over that response's eip712 payload. Re-serializing, reordering or editing any field breaks signature verification and the action is rejected.

Accepted actions: order, cancel, updateLeverage, updateIsolatedMargin, usdClassTransfer and approveBuilderFee. Order actions must carry the builder code the prepare endpoint attached to them.

Rejections come back as 422, not 200. The exchange reports a refused action inside an otherwise successful response, so this endpoint inspects the result and surfaces the reason as a 422 — a 2xx here means the action was genuinely accepted. For orders the response reports each order as filled or resting, with the order id you need to cancel it later.

Authorizations
apikeystringRequired

API key for authentication

Body

A signed action to submit to the exchange.

Every field except the signature comes from a prepare response and must be passed through unchanged.

nonceintegerRequired

The nonce from the prepare response, unchanged

Example: 1754476800000
vault_addressany ofOptional

The vault_address from the prepare response, unchanged (null for a normal wallet action)

stringOptional
Responses
200

Successful Response

application/json
post/api/v1/perp/execute

Last updated

Was this helpful?