Build a signed canonical payload to close (fully or partially) an open perpetual position on Gains Network or Lighter.
Builds the payload for closing an existing position. Close size is either explicit (Documentation Index
Fetch the complete documentation index at: https://docs.mobula.io/llms.txt
Use this file to discover all available pages before exploring further.
amountRaw) or percentage-based (closePercentage).
gains or lighter.evm:42161, lighter:301).lighter-btc-usd).0 < value ≤ 100). Use 100 for a full close. Mutually exclusive with amountRaw.closePercentage.currentCollateralRaw from the position cache when available, so you do not need to supply it./2/perp/payloads/<action> endpoint verifies the caller by requiring two extra fields in the request body alongside the action parameters:
personal_sign) of the message `${endpoint}-${timestamp}`, where endpoint is the path of this endpoint without the leading slash (e.g., for this page: api/2/perp/payloads/<this-action>). The recovered signer address becomes the user for the request. Single-use — replay returns 403 signature already used.| Status | message |
|---|---|
| 403 | timestamp expired — timestamp older than 30s |
| 403 | signature already used — replay attempt |
| 400 | zod validation failed — timestamp/signature shape invalid |
/2/perp/payloads/<action> endpoint returns the same envelope shape. You pass these fields verbatim into POST /2/perp/execute-v2 to execute the action.
| Status | message |
|---|---|
| 400 | close-position payload generation failed — position not found, invalid close size, or DEX refusal |
data.transport.
gains, lighter Gains trade index. Required for Gains.
Portion to close (0 < value ≤ 100). Mutually exclusive with amountRaw.
Raw base-token amount to close. Mutually exclusive with closePercentage.