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

# Copy trade (unavailable)

> Closed copy-follow intake pending signing-contracts; no follow or automation is persisted. Separate copy.trade scope is reserved and unavailable from the dashboard; copy.read never authorizes this operation. After authentication and key/IP policy, bounded exact wire bytes go to request-signature admission before JSON parsing, validation or provider wallet lookup. Before activation every state-changing call requires per-key request signing with timestamp, nonce, method/path and exact body hash plus an atomic bounded replay window. The independent request-signing gate refuses all requests until a reviewed verifier is released, even if the backend signer becomes available. Provider-bound account wallet ownership remains required after future verification. Chain coverage matches the released copy identity contract (SOL, Base, BNB, Ethereum, Robinhood). The verified continuation validates exact positive USD decimal strings, caps and fixed/percentage sizing; no dry-run success or execution authority is implied.



## OpenAPI

````yaml https://www.oceanx.trade/api/v1/openapi.json post /api/v1/copy-trading/follows
openapi: 3.1.0
info:
  title: OceanX Developer API
  version: 1.0.0
  description: >-
    OceanX Developer API v1 (beta). Covers every public route and method: market
    data, charts, token/risk facts, wallet analytics, tracker, copy reads,
    alerts, owned account wallet/funding reads, spot quotes and perps. Scope and
    availability are operation-specific. Spot execution, copy execution, account
    withdrawals, developer webhooks and prediction trading are not public v1
    capabilities. Perps order submission and collateral rebalance remain
    unavailable; their error contracts are explicit. Documentation:
    https://docs.oceanx.trade/api/overview.
  contact:
    url: https://docs.oceanx.trade
  termsOfService: https://www.oceanx.trade/legal/terms
  license:
    name: Proprietary
    url: https://www.oceanx.trade/legal/terms
servers:
  - url: https://www.oceanx.trade
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Perps
    description: Cross-venue market data and explicit account-wallet execution limitations.
  - name: Router
    description: >-
      Read-only Raptor route quotes and public Solana transaction status. Build
      and execution remain separately gated.
  - name: Market Data
    description: Read-only OceanX market context sourced and cached by VM producers.
  - name: Spot
    description: >-
      Executable Solana swap quotes off OceanX's own router, and the exit
      checker that reports whether a whole position can be sold.
  - name: Callouts
    description: >-
      Public token callouts — user-posted token calls with live click/volume
      attribution stats. Read-only.
  - name: Copy Trading
    description: Key-owner follow, fill and PnL reads; no execution authority.
  - name: Price Alerts
    description: Key-owner alert management through the existing evaluator; no webhooks.
paths:
  /api/v1/copy-trading/follows:
    post:
      tags:
        - Copy Trading
      summary: Copy trade (unavailable)
      description: >-
        Closed copy-follow intake pending signing-contracts; no follow or
        automation is persisted. Separate copy.trade scope is reserved and
        unavailable from the dashboard; copy.read never authorizes this
        operation. After authentication and key/IP policy, bounded exact wire
        bytes go to request-signature admission before JSON parsing, validation
        or provider wallet lookup. Before activation every state-changing call
        requires per-key request signing with timestamp, nonce, method/path and
        exact body hash plus an atomic bounded replay window. The independent
        request-signing gate refuses all requests until a reviewed verifier is
        released, even if the backend signer becomes available. Provider-bound
        account wallet ownership remains required after future verification.
        Chain coverage matches the released copy identity contract (SOL, Base,
        BNB, Ethereum, Robinhood). The verified continuation validates exact
        positive USD decimal strings, caps and fixed/percentage sizing; no
        dry-run success or execution authority is implied.
      operationId: createCopyTradingFollow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyTradingRequest'
      responses:
        '400':
          description: >-
            Query parameters or unreadable/body over 8 KiB; after future
            signature verification, invalid JSON/UTF-8, unknown fields,
            chain/address/amount, expiry or schedule.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            Missing, invalid or revoked API key. Session cookies never authorize
            this route.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Missing reserved scope, denied IP or wallet not owned by this key's
            account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: Content-Type must be application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Per-key REST admission exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: API-key verification dependency failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            signer_unavailable: released API signing/automation authority is
            unavailable; or trading_unavailable/rate_limit_unavailable on
            dependency failure. No side effect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CopyTradingRequest:
      $schema: https://json-schema.org/draft/2020-12/schema
      oneOf:
        - type: object
          properties:
            chain:
              type: string
              enum:
                - solana
                - base
                - bnb
                - ethereum
                - robinhood
            wallet:
              type: string
              maxLength: 44
            targetWallet:
              type: string
              maxLength: 44
            mode:
              type: string
              enum:
                - buys
                - all
            maxPerTradeUsd:
              type: string
              maxLength: 48
              pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
            dailyCapUsd:
              type: string
              maxLength: 48
              pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
            slippageBps:
              type: integer
              minimum: 1
              maximum: 300
            clientOrderId:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^[A-Za-z0-9_-]+$
            sizingMode:
              type: string
              const: fixed
            fixedUsd:
              type: string
              maxLength: 48
              pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
          required:
            - chain
            - wallet
            - targetWallet
            - mode
            - maxPerTradeUsd
            - dailyCapUsd
            - slippageBps
            - clientOrderId
            - sizingMode
            - fixedUsd
          additionalProperties: false
        - type: object
          properties:
            chain:
              type: string
              enum:
                - solana
                - base
                - bnb
                - ethereum
                - robinhood
            wallet:
              type: string
              maxLength: 44
            targetWallet:
              type: string
              maxLength: 44
            mode:
              type: string
              enum:
                - buys
                - all
            maxPerTradeUsd:
              type: string
              maxLength: 48
              pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
            dailyCapUsd:
              type: string
              maxLength: 48
              pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
            slippageBps:
              type: integer
              minimum: 1
              maximum: 300
            clientOrderId:
              type: string
              minLength: 1
              maxLength: 64
              pattern: ^[A-Za-z0-9_-]+$
            sizingMode:
              type: string
              const: pct
            pctBps:
              type: integer
              minimum: 1
              maximum: 10000
          required:
            - chain
            - wallet
            - targetWallet
            - mode
            - maxPerTradeUsd
            - dailyCapUsd
            - slippageBps
            - clientOrderId
            - sizingMode
            - pctBps
          additionalProperties: false
    Error:
      type: object
      required:
        - error
      properties:
        requestId:
          type: string
          description: Request identifier on new token endpoints.
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Stable machine-readable code. Branch on this, not the message.
              example: no_route
            message:
              type: string
              description: Human-readable detail. May change.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An OceanX API key, created in the app under Settings → Developer API.
        Send it as `Authorization: Bearer ox_live_…`. Required scopes are
        operation-specific: market reads use md.read, tracker uses tracker.read,
        copy reads use copy.read, alert operations use alerts.read or
        alerts.write, and owned wallet/funding reads require explicit
        account.read. New scopes require explicit selection and grant no trading
        authority. Existing perps operations retain their documented scopes.

````

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