> ## Documentation Index
> Fetch the complete documentation index at: https://perps-api.vooi.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Build EIP-712 data the main Hyperliquid wallet must sign to transfer assets between perp DEXes, spot, users, and/or sub-accounts



## OpenAPI

````yaml https://vooi-api-app.fly.dev/swagger/json post /exchange/hyperliquid/send-asset/prepare
openapi: 3.1.0
info:
  title: VOOI API
  description: Unified perps API
  version: '1.0'
  contact: {}
servers:
  - url: https://perps-api.vooi.io
security: []
tags: []
paths:
  /exchange/hyperliquid/send-asset/prepare:
    post:
      tags:
        - Exchange / Hyperliquid
      summary: >-
        Build EIP-712 data the main Hyperliquid wallet must sign to transfer
        assets between perp DEXes, spot, users, and/or sub-accounts
      operationId: HyperliquidController_prepareSendAsset
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrepareHyperliquidSendAssetBodyDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrepareHyperliquidSendAssetResponseDto'
      security:
        - bearer: []
components:
  schemas:
    PrepareHyperliquidSendAssetBodyDto:
      type: object
      properties:
        amount:
          type: string
          description: Amount to send (decimal string, not in wei).
        destination:
          type: string
          description: Destination wallet address.
          example: '0x1234567890abcdef1234567890abcdef12345678'
        destinationDex:
          type: string
          enum:
            - ''
            - xyz
            - mkts
            - vntl
          description: >-
            Destination perp DEX ("" for default USDC perp, "xyz" for
            trade.xyz).
        fromSubAccount:
          default: ''
          description: Source sub-account address ("" for the main account).
          anyOf:
            - type: string
              enum:
                - ''
            - type: string
              description: Ethereum address
              example: '0x1234567890abcdef1234567890abcdef12345678'
        sourceDex:
          type: string
          enum:
            - ''
            - xyz
            - mkts
            - vntl
          description: Source perp DEX ("" for default USDC perp, "xyz" for trade.xyz).
        token:
          type: string
          description: Token identifier.
      required:
        - amount
        - destination
        - destinationDex
        - sourceDex
        - token
      title: PrepareHyperliquidSendAssetBody
    PrepareHyperliquidSendAssetResponseDto:
      type: object
      properties:
        fee:
          type: number
          description: Hyperliquid-side fee for the operation (always 0 for sendAsset).
        pendingData:
          type: object
          properties:
            action:
              type: object
              propertyNames:
                type: string
              additionalProperties:
                $ref: '#/components/schemas/Json'
              description: Hyperliquid sendAsset action to be replayed in the execute step.
            destination:
              type: string
              description: Destination address (lowercased).
            nonce:
              type: number
              description: Nonce (timestamp in ms) used for replay protection.
          required:
            - action
            - destination
            - nonce
          description: Opaque payload to pass back to the execute endpoint.
        signData:
          type: object
          properties:
            domain:
              type: object
              properties:
                chainId:
                  type: number
                name:
                  type: string
                verifyingContract:
                  type: string
                  description: Ethereum address
                  example: '0x1234567890abcdef1234567890abcdef12345678'
                version:
                  type: string
              required:
                - name
                - version
            message:
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
            primaryType:
              type: string
            types:
              type: object
              propertyNames:
                type: string
              additionalProperties:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    type:
                      type: string
                  required:
                    - name
                    - type
          required:
            - domain
            - message
            - primaryType
            - types
          description: EIP-712 typed data to sign with the main wallet.
      required:
        - fee
        - pendingData
        - signData
      title: PrepareHyperliquidSendAssetResponse
    Json:
      description: Any JSON value
      title: Json
      anyOf:
        - type: string
        - type: number
        - type: boolean
        - type: 'null'
        - type: array
          items:
            $ref: '#/components/schemas/Json'
        - type: object
          propertyNames:
            type: string
          additionalProperties:
            $ref: '#/components/schemas/Json'
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.