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

# Post apiv1margincollateraltransfer

> Move collateral between the spot wallet, the caller's margin accounts and
 their risk buckets. `from` and `to` each name the wallet or a margin
 account (optionally one of its risk buckets). Supported moves: wallet to
 the default margin account and back, margin account to margin account,
 and margin account to one of its own risk buckets. The older transfer
 routes keep working unchanged.



## OpenAPI

````yaml /proto-openapi/api/openapi.yaml post /api/v1/margin/collateral/transfer
openapi: 3.0.3
info:
  title: Monaco Protocol API
  description: REST API for the Monaco Protocol hybrid CLOB exchange.
  version: 1.0.0
servers:
  - url: https://staging.apimonaco.xyz
    description: Staging server (Testnet)
security: []
tags:
  - name: AccountsService
  - name: ApplicationsService
  - name: AuthService
  - name: BuildercodeRewardsService
  - name: CopyTradingService
  - name: DelegatedAgentsService
  - name: FaucetService
  - name: FeesService
  - name: HealthService
  - name: ManagedMarketsService
    description: |-
      Wallet-authenticated maker assignments. The signed session must match both
       configured maker user and application. Owner IDs are process fences, never auth.
       Only wallet sessions are supported; delegated-agent sessions receive 403.
  - name: MarginAccountsService
    description: |-
      Current public isolated-margin semantics:
       - a user has one parent margin account per application scope
       - opening orders create or reuse isolated position buckets under that parent
       - parent account creation is handled internally by margin workflows
  - name: MarketService
  - name: OrderbookService
  - name: OrdersService
  - name: PositionsService
    description: |-
      Current public isolated-margin semantics:
       - positions link to a parent margin account and, when applicable, a bucket id
       - opening orders create or reuse isolated position buckets under the parent
       - users can open another isolated position by reusing the parent account with a different market bucket
  - name: PulseService
  - name: SweeperService
  - name: TraderCodeService
  - name: TradesService
  - name: WhitelistService
  - name: WithdrawalsService
paths:
  /api/v1/margin/collateral/transfer:
    post:
      tags:
        - MarginAccountsService
      description: >-
        Move collateral between the spot wallet, the caller's margin accounts
        and
         their risk buckets. `from` and `to` each name the wallet or a margin
         account (optionally one of its risk buckets). Supported moves: wallet to
         the default margin account and back, margin account to margin account,
         and margin account to one of its own risk buckets. The older transfer
         routes keep working unchanged.
      operationId: transfer_collateral
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferCollateralRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferCollateralResponse'
        '429':
          description: >-
            Movement rate limit exceeded — withdrawals and collateral transfers
            share a per-user budget; retry after the interval in
            details.retryAfter
      security:
        - monacoSignature: []
        - monacoHttpSignature: []
components:
  schemas:
    TransferCollateralRequest:
      type: object
      properties:
        asset:
          type: string
          description: Collateral asset symbol or address.
          nullable: true
        amount:
          type: string
          nullable: true
        from:
          allOf:
            - $ref: '#/components/schemas/CollateralTransferEndpoint'
          description: Where the collateral comes from.
          nullable: true
        to:
          allOf:
            - $ref: '#/components/schemas/CollateralTransferEndpoint'
          description: Where the collateral goes.
          nullable: true
    TransferCollateralResponse:
      type: object
      properties:
        movementId:
          type: string
          nullable: true
        amount:
          type: string
          nullable: true
        fromMarginAccountId:
          type: string
          description: The source margin account, when the source is one.
          nullable: true
        toMarginAccountId:
          type: string
          description: The destination margin account, when the destination is one.
          nullable: true
        toRiskBucketId:
          type: string
          description: The destination risk bucket, when the destination is one.
          nullable: true
    CollateralTransferEndpoint:
      type: object
      properties:
        wallet:
          type: boolean
          description: >-
            The spot wallet. Set exactly one of `wallet` and
            `margin_account_id`.
          nullable: true
        marginAccountId:
          type: string
          nullable: true
        riskBucketId:
          type: string
          description: A risk bucket of `margin_account_id`.
          nullable: true
      description: |-
        One side of a `TransferCollateral`: the spot wallet, or a margin account
         and optionally one of its risk buckets.
  securitySchemes:
    monacoSignature:
      type: apiKey
      description: >-
        Ed25519 session-key request signing. Every authenticated request carries
        three headers: `X-Monaco-PublicKey` (64-char lowercase-hex session
        public key), `X-Monaco-Timestamp` (Unix milliseconds, within 30s of
        server time), and `X-Monaco-Signature` (hex ed25519 signature). The
        signature is over `METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body)`,
        where the body hash is the SHA-256 of the empty byte string when there
        is no body. Obtain the session keypair from `POST
        /api/v1/auth/challenge` followed by `POST /api/v1/auth/verify`.
      name: X-Monaco-Signature
      in: header
    monacoHttpSignature:
      type: apiKey
      description: >-
        RFC 9421 Ed25519 session-key request signatures. Send Signature-Input,
        Signature, and Content-Digest together; never combine them with
        X-Monaco-* credentials. The monaco signature covers @method, @path,
        @query, and content-digest in that order, with created (Unix seconds
        within 30s of server time), keyid (registered lowercase-hex session
        public key), and alg=ed25519 parameters. Content-Digest uses RFC 9530
        sha-256 over the exact body bytes, including the empty body. Query
        coverage retains ordering and percent encoding. Timestamp freshness does
        not reject repeated identical requests; use endpoint idempotency where
        supported. Existing legacy signing remains supported during server-first
        migration; SDK RFC 9421 signing is opt-in. See
        https://docs.0xmonaco.com/reference/http-message-signatures for the
        complete profile and trust model.
      name: Signature
      in: header

````

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