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

# Create Spot transfer

> Move funds on the same account between main and spot or margin and spot. Margin moves require collateral eligibility and sufficient withdrawable margin. The returned record is the destination-crediting leg; from.wallet may be main for a margin/spot move. No client idempotency key is supported. Reconcile balances and history after an uncertain result before retrying.

See the [Spot API guide](/api-reference/spot-api-guide). Requires authentication; API-key scope: `transfer`.



## OpenAPI

````yaml /api-reference/rest-spec.json post /v1/spot/transfers
openapi: 3.0.3
info:
  title: Ondo Perps REST API
  version: '1.0'
  description: >-
    REST API for Ondo Perps: account, wallet, deposits/withdrawals, API keys,
    Spot trading, internal transfers, and perpetual futures trading.
servers:
  - url: https://api.ondoperps.xyz
security:
  - BearerAuth: []
paths:
  /v1/spot/transfers:
    post:
      tags:
        - Spot balances and transfers
      summary: Create Spot transfer
      description: >-
        Move funds on the same account between main and spot or margin and spot.
        Margin moves require collateral eligibility and sufficient withdrawable
        margin. The returned record is the destination-crediting leg;
        from.wallet may be main for a margin/spot move. No client idempotency
        key is supported. Reconcile balances and history after an uncertain
        result before retrying.


        See the [Spot API guide](/api-reference/spot-api-guide). Requires
        authentication; API-key scope: `transfer`.
      operationId: postSpotTransfers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SpotTransferReq'
      responses:
        '200':
          description: Success. Inspect item-level outcomes for batch operations.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  result:
                    $ref: '#/components/schemas/SpotTransfer'
                required:
                  - success
        '400':
          description: Validation error; inspect error_code and error.
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - BearerAuth: []
        - ApiKeyAuth: []
components:
  schemas:
    SpotTransferReq:
      type: object
      properties:
        from:
          $ref: '#/components/schemas/SpotWalletKey'
        to:
          $ref: '#/components/schemas/SpotWalletKey'
        symbol:
          type: string
          description: Ledger asset ID, e.g. USDC or SPY.
        amount:
          type: string
          description: >-
            Positive amount aligned to tokenConfig.decimals; share-equivalent
            units for GM assets.
      required:
        - from
        - to
        - symbol
        - amount
    SpotTransfer:
      type: object
      properties:
        from:
          $ref: '#/components/schemas/SpotWalletKey'
        to:
          $ref: '#/components/schemas/SpotWalletKey'
        symbol:
          type: string
          description: Ledger asset ID, e.g. USDC or SPY.
        amount:
          type: string
          description: >-
            Positive amount aligned to tokenConfig.decimals; share-equivalent
            units for GM assets.
        id:
          type: string
          description: ''
        time:
          type: string
          format: date-time
        type:
          type: integer
          description: Numeric transfer type.
      required:
        - id
        - from
        - to
        - symbol
        - amount
        - time
        - type
    SpotWalletKey:
      type: object
      properties:
        id:
          type: string
          description: >-
            Account ID; defaults to the authenticated account. Must identify the
            same account on both sides.
        wallet:
          type: string
          enum:
            - main
            - margin
            - spot
      required:
        - wallet
  responses:
    TooManyRequests:
      description: Rate limit exceeded. Slow down request frequency.
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: false
              error:
                type: string
                description: Human-readable error message
              error_code:
                type: string
                enum:
                  - too_many_requests
          example:
            success: false
            error: Description of the error
            error_code: too_many_requests
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      in: header
      name: ONDO-KEY-ID
      description: >-
        Also send ONDO-TIMESTAMP and ONDO-SIGN. See
        /api-reference/api_key_authentication for exact HMAC signing; the key ID
        alone is insufficient.

````

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