> ## 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.

# Add margin to a copy position

> Add margin to a copy position (0XM-2971).

 Moves collateral from the follow's copy account into the margin of its
 isolated copy position on one trading pair: the position's margin rises
 by exactly `amount`, the copy account's remaining collateral falls by the
 same, and your margin account is never touched. It lowers the position's
 leverage and moves its liquidation price away; it opens no exposure, so
 it works while copy trading is switched off and on a CLOSE_ONLY follow.
 There is no margin reduction: a follow exits by being stopped. Follow
 writes need a master account session (not a delegated agent or a
 sub-account). 404 unless the follow is yours; 409 while it is stopping
 or once it is stopped, and when copy trading is not available on the
 platform at all (the platform then runs copy trading exits only). It
 spends the per-user movement budget withdrawals and collateral transfers
 share. It is not idempotent: a retry after a timeout whose first attempt
 landed adds the amount twice, so read the follow before retrying.



## OpenAPI

````yaml /proto-openapi/api/openapi.yaml post /api/v1/copy-trading/follows/{followId}/position-margin
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/copy-trading/follows/{followId}/position-margin:
    post:
      tags:
        - CopyTradingService
        - Copy Trading
      summary: Add margin to a copy position
      description: |-
        Add margin to a copy position (0XM-2971).

         Moves collateral from the follow's copy account into the margin of its
         isolated copy position on one trading pair: the position's margin rises
         by exactly `amount`, the copy account's remaining collateral falls by the
         same, and your margin account is never touched. It lowers the position's
         leverage and moves its liquidation price away; it opens no exposure, so
         it works while copy trading is switched off and on a CLOSE_ONLY follow.
         There is no margin reduction: a follow exits by being stopped. Follow
         writes need a master account session (not a delegated agent or a
         sub-account). 404 unless the follow is yours; 409 while it is stopping
         or once it is stopped, and when copy trading is not available on the
         platform at all (the platform then runs copy trading exits only). It
         spends the per-user movement budget withdrawals and collateral transfers
         share. It is not idempotent: a retry after a timeout whose first attempt
         landed adds the amount twice, so read the follow before retrying.
      operationId: add_follow_position_margin
      parameters:
        - name: followId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddFollowPositionMarginRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddFollowPositionMarginResponse'
        '400':
          description: >-
            Invalid follow id, trading pair or amount, or refused by the engine
            with code COPY_TRADING_REJECTED (no copy position on the pair, the
            position or the margin account is being liquidated, the position has
            lost more than its margin, more than the copy account holds; the
            message names the rule)
        '401':
          description: Authentication required
        '403':
          description: >-
            Only a master account session can add margin (not a delegated agent
            or a sub-account)
        '404':
          description: Follow not found
        '409':
          description: >-
            The follow is stopping or stopped, or code COPY_TRADING_UNAVAILABLE:
            copy trading is not available on the platform
        '429':
          description: >-
            Movement rate limit exceeded — withdrawals and collateral transfers
            share a per-user budget; retry after the interval in
            details.retryAfter
        '500':
          description: Internal server error
        '503':
          description: Matching engine unavailable; retry
      security:
        - monacoSignature: []
        - monacoHttpSignature: []
components:
  schemas:
    AddFollowPositionMarginRequest:
      type: object
      properties:
        followId:
          type: string
          description: The follow's id
          format: uuid
          nullable: true
        tradingPairId:
          type: string
          description: Trading pair UUID of the copy position to add margin to
          format: uuid
          nullable: true
        amount:
          example: '25'
          type: string
          description: >-
            Margin to add, in quote units: a positive decimal, taken from the
            follow's copy account
          nullable: true
    AddFollowPositionMarginResponse:
      type: object
      properties:
        followId:
          type: string
          description: The follow's id
          format: uuid
          nullable: true
        tradingPairId:
          type: string
          description: Trading pair UUID of the copy position
          format: uuid
          nullable: true
        riskBucketId:
          type: string
          description: The copy position's isolated risk bucket
          format: uuid
          nullable: true
        positionId:
          type: string
          description: The copy position's id
          format: uuid
          nullable: true
        positionMargin:
          example: '125'
          type: string
          description: The copy position's margin after the add, in quote units
          nullable: true
        copyAccountAvailable:
          example: '875'
          type: string
          description: >-
            What the copy account can still put into this position, in quote
            units, after the add
          nullable: true
  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.