openapi: 3.0.3 info: title: Phemex Asset Transfer API description: REST API for transferring assets between spot and futures accounts, managing sub-account fund movements, and performing universal transfers between main and sub-accounts on Phemex. version: 1.0.0 contact: name: Phemex Support url: https://phemex.com/help-center servers: - url: https://api.phemex.com description: Production - url: https://testnet-api.phemex.com description: Testnet security: - HmacAuth: [] paths: /assets/transfer: post: summary: Transfer between spot and futures description: Transfer assets between spot and futures accounts. operationId: transferBetweenAccountTypes tags: - Transfers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRequest' responses: '200': description: Transfer result content: application/json: schema: $ref: '#/components/schemas/TransferResponse' get: summary: Get transfer history description: Retrieve transfer history between spot and futures accounts. operationId: getTransferHistory tags: - Transfers parameters: - name: currency in: query required: true schema: type: string description: Currency to query - name: start in: query schema: type: integer description: Start time in milliseconds - name: end in: query schema: type: integer description: End time in milliseconds - name: offset in: query schema: type: integer description: Pagination offset (default 0) - name: limit in: query schema: type: integer description: Page size (default 20, max 200) - name: side in: query required: true schema: type: integer enum: [1, 2] description: Direction (1=futures to spot, 2=spot to futures) - name: bizType in: query required: true schema: type: integer enum: [10, 11] description: Business type responses: '200': description: Transfer history content: application/json: schema: $ref: '#/components/schemas/TransferListResponse' /assets/spots/sub-accounts/transfer: post: summary: Transfer from spot sub-account description: Transfer assets from a sub-account to the main account (spot). operationId: transferSpotSubAccount tags: - Sub-Account Transfers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SubAccountTransferRequest' responses: '200': description: Transfer result content: application/json: schema: $ref: '#/components/schemas/SubAccountTransferResponse' get: summary: Get spot sub-account transfer history description: Query spot sub-account to main account transfer history. operationId: getSpotSubAccountTransferHistory tags: - Sub-Account Transfers parameters: - name: currency in: query required: true schema: type: string - name: start in: query schema: type: integer - name: end in: query schema: type: integer - name: offset in: query schema: type: integer - name: limit in: query schema: type: integer responses: '200': description: Sub-account transfer history content: application/json: schema: $ref: '#/components/schemas/ApiResponse' /assets/futures/sub-accounts/transfer: post: summary: Transfer from futures sub-account description: Transfer assets from a sub-account to the main account (futures). operationId: transferFuturesSubAccount tags: - Sub-Account Transfers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SubAccountTransferRequest' responses: '200': description: Transfer result content: application/json: schema: $ref: '#/components/schemas/ApiResponse' get: summary: Get futures sub-account transfer history description: Query futures sub-account to main account transfer history. operationId: getFuturesSubAccountTransferHistory tags: - Sub-Account Transfers parameters: - name: currency in: query required: true schema: type: string - name: start in: query schema: type: integer - name: end in: query schema: type: integer - name: offset in: query schema: type: integer - name: limit in: query schema: type: integer responses: '200': description: Sub-account transfer history content: application/json: schema: $ref: '#/components/schemas/ApiResponse' /assets/universal-transfer: post: summary: Universal transfer description: Transfer between main/sub accounts across spot and futures account types. operationId: universalTransfer tags: - Transfers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UniversalTransferRequest' responses: '200': description: Transfer initiated content: application/json: schema: $ref: '#/components/schemas/ApiResponse' /assets/quote: get: summary: Get conversion quote description: Get a conversion rate quote for currency exchange. operationId: getConversionQuote tags: - Conversion parameters: - name: fromCurrency in: query required: true schema: type: string description: Source currency - name: toCurrency in: query required: true schema: type: string description: Target currency - name: fromAmountEv in: query required: true schema: type: integer description: Amount to convert (scaled) responses: '200': description: Conversion quote content: application/json: schema: $ref: '#/components/schemas/QuoteResponse' /assets/convert: post: summary: Execute currency conversion description: Execute a currency conversion using a previously obtained quote. operationId: executeConversion tags: - Conversion requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConvertRequest' responses: '200': description: Conversion result content: application/json: schema: $ref: '#/components/schemas/ConvertResponse' get: summary: Get conversion history description: Query currency conversion history. operationId: getConversionHistory tags: - Conversion parameters: - name: fromCurrency in: query schema: type: string - name: toCurrency in: query schema: type: string - name: startTime in: query schema: type: integer - name: endTime in: query schema: type: integer - name: offset in: query schema: type: integer - name: limit in: query schema: type: integer responses: '200': description: Conversion history content: application/json: schema: $ref: '#/components/schemas/ApiResponse' components: securitySchemes: HmacAuth: type: apiKey in: header name: x-phemex-access-token description: HMAC SHA256 signed request. Also requires x-phemex-request-expiry and x-phemex-request-signature headers. schemas: ApiResponse: type: object properties: code: type: integer msg: type: string data: type: object TransferRequest: type: object required: [amountEv, currency, moveOp] properties: amountEv: type: integer description: Amount to transfer (scaled) currency: type: string description: Currency code (e.g. BTC, ETH, USD) moveOp: type: integer enum: [1, 2] description: Direction (1=futures to spot, 2=spot to futures) TransferResponse: type: object properties: code: type: integer data: type: object properties: amountEv: type: integer currency: type: string linkKey: type: string side: type: integer status: type: integer userId: type: integer TransferListResponse: type: object properties: code: type: integer data: type: object properties: total: type: integer rows: type: array items: type: object properties: amountEv: type: integer bizType: type: integer createTime: type: integer currency: type: string linkKey: type: string side: type: integer status: type: integer userId: type: integer SubAccountTransferRequest: type: object required: [amountEv, currency] properties: amountEv: type: integer description: Amount to transfer (scaled) currency: type: string description: Currency code requestKey: type: string description: Optional unique request identifier SubAccountTransferResponse: type: object properties: code: type: integer data: type: object properties: amountEv: type: integer currency: type: string fromUserId: type: integer requestKey: type: string toUserId: type: integer UniversalTransferRequest: type: object required: [fromUserId, toUserId, amountEv, bizType, currency] properties: fromUserId: type: integer description: Source user ID toUserId: type: integer description: Destination user ID amountEv: type: integer description: Amount to transfer (scaled) bizType: type: string enum: [SPOT, PERPETUAL] description: Business type indicating account type currency: type: string description: Currency code requestKey: type: string description: Optional unique request identifier QuoteResponse: type: object properties: code: type: integer data: type: object properties: code: type: string quoteArgs: type: object properties: expireAt: type: integer price: type: string proceeds: type: string quoteAt: type: integer ttlMs: type: integer ConvertRequest: type: object required: [toCurrency, fromCurrency, code] properties: toCurrency: type: string description: Target currency fromCurrency: type: string description: Source currency fromAmountEv: type: integer description: Amount to convert (scaled, optional) code: type: string description: Encrypted conversion parameters from quote ConvertResponse: type: object properties: code: type: integer data: type: object properties: fromAmountEv: type: integer fromCurrency: type: string linkKey: type: string status: type: integer toAmountEv: type: integer toCurrency: type: string