Paradex System API

The System API from Paradex — 7 operation(s) for system.

Operations 7

GET /system/announcements Get all announcements #
GET /system/config Get system config #
GET /system/margin-config Get margin configuration #
GET /system/portfolio-margin-config Get portfolio margin configuration (deprecated) #
GET /system/state Get system state #
GET /system/time Get system time (unix milliseconds) #
GET /system/volume-tiers Get volume-based fee tiers #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/paradex:paradex-system-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

paradex-system-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Paradex System API
  version: 1.142.2
  contact: {}
  description: 'Operations tagged System across 2 of this provider''s published API definitions: paradex-openapi-prod.json, paradex-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.prod.paradex.trade/v1
tags:
- name: System
paths:
  /system/announcements:
    get:
      description: get announcements
      tags:
      - System
      summary: Get all announcements
      operationId: get-announcements
      parameters:
      - description: Returns the ‘next’ paginated page.
        name: cursor
        in: query
        schema:
          type: string
      - description: End Time (unix time millisecond)
        name: end_at
        in: query
        schema:
          type: integer
      - description: Limit the number of responses in the page
        name: page_size
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 5000
          default: 100
      - description: Start Time (unix time millisecond)
        name: start_at
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/responses.PaginatedAPIResults'
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        $ref: '#/components/schemas/responses.Announcement'
        '400':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /system/config:
    get:
      description: Get clearing and settlement layer config for Paradex
      tags:
      - System
      summary: Get system config
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.SystemConfigResponse'
      operationId: getSystemConfig
      x-operation-id-source: derived
    servers:
    - url: https://api.prod.paradex.trade/v1
  /system/margin-config:
    get:
      description: 'Returns margin configuration per base asset: the portfolio

        margin risk parameters where the asset has them, and the bound

        an unpriced RFQ on it is held at.'
      tags:
      - System
      summary: Get margin configuration
      operationId: get-margin-config
      parameters:
      - description: Base asset filter (e.g. BTC, ETH). Omit to return all.
        name: base_asset
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/responses.APIResults'
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        $ref: '#/components/schemas/responses.MarginParamsResp'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /system/portfolio-margin-config:
    get:
      description: 'Deprecated. Serves only the portfolio-margin-eligible assets,

        the rows this path has always returned. Use

        `/system/margin-config` for every listed asset and its RFQ

        bound.'
      tags:
      - System
      summary: Get portfolio margin configuration (deprecated)
      operationId: get-portfolio-margin-config
      deprecated: true
      parameters:
      - description: Base asset filter (e.g. BTC, ETH). Omit to return all.
        name: base_asset
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/responses.APIResults'
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        $ref: '#/components/schemas/responses.MarginParamsResp'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /system/state:
    get:
      description: 'Get the current state of the Paradex system


        ## Response


        ```json

        {"status": "ok"}

        ```


        ### Status Values


        - `ok`: Fully operational

        - `maintenance`: Trading unavailable

        - `cancel_only`: Only cancellations allowed


        Check before trading operations.'
      tags:
      - System
      summary: Get system state
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.SystemStateResponse'
      operationId: getSystemState
      x-operation-id-source: derived
    servers:
    - url: https://api.prod.paradex.trade/v1
  /system/time:
    get:
      description: Get the current time in the Paradex
      tags:
      - System
      summary: Get system time (unix milliseconds)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.SystemTimeResponse'
      operationId: getSystemTime
      x-operation-id-source: derived
    servers:
    - url: https://api.prod.paradex.trade/v1
  /system/volume-tiers:
    get:
      description: Returns all volume tier configurations for retail and pro profiles
      tags:
      - System
      summary: Get volume-based fee tiers
      operationId: get-volume-tiers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/responses.APIResults'
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        $ref: '#/components/schemas/responses.VolumeTierResp'
    servers:
    - url: https://api.prod.paradex.trade/v1
components:
  schemas:
    responses.BridgedToken:
      type: object
      properties:
        decimals:
          type: integer
        l1_bridge_address:
          type: string
        l1_token_address:
          type: string
        l2_bridge_address:
          type: string
        l2_token_address:
          type: string
        name:
          type: string
        symbol:
          type: string
    responses.AnnouncementKind:
      type: string
      enum:
      - UPDATE
      - LISTING
      - DELISTING
      x-enum-varnames:
      - AnnouncementKindUpdate
      - AnnouncementKindListing
      - AnnouncementKindDelisting
    responses.VolShockParamsResp:
      type: object
      properties:
        dte_floor_days:
          type: number
          example: 1
        min_vol_shock_up:
          type: number
          example: 0.4
        vega_power_long_dte:
          type: number
          example: 0.13
        vega_power_short_dte:
          type: number
          example: 0.3
    responses.SystemConfigResponse:
      type: object
      properties:
        assets_limit_per_account:
          description: Maximum number of token or synthetic positions allowed per account
          type: integer
          example: 550
        block_explorer_url:
          description: Block explorer URL for the current SN Instance
          type: string
          example: https://voyager.testnet.paradex.trade/
        bridged_tokens:
          description: 'bridged tokens config

            https://github.com/starknet-io/starknet-addresses/blob/master/bridged_tokens/goerli.json'
          type: array
          items:
            $ref: '#/components/schemas/responses.BridgedToken'
        dime_staking_contract_address:
          description: DIME Staking contract address
          type: string
        environment:
          description: Environment of the Paradex Instance
          type: string
          example: local
        l1_chain_id:
          description: L1 chain ID value
          type: string
          example: '5'
        l1_core_contract_address:
          description: Address of Starknet L1 core contract
          type: string
          example: '0x182FE62c57461d4c5Ab1aE6F04f1D51aA1607daf'
        l1_operator_address:
          description: Address of Starknet L1 operator
          type: string
          example: '0x63e762538C70442758Fd622116d817761c94FD6A'
        l1_relayer_address:
          description: Address of L1 Relayer
          type: string
          example: '0x63e762538C70442758Fd622116d817761c94FD6A'
        l2_relayer_address:
          description: Address of L2 Relayer
          type: string
          example: '0x63e762538C70442758Fd622116d817761c94FD6A'
        liquidation_fee:
          description: Liquidation fee
          type: string
          example: '0.20'
        oracle_address:
          description: Oracle contract address
          type: string
          example: '0x47c622ce5f7ff7fa17725df596f4f506364e49be0621eb142a75b44ee3689c6'
        paraclear_account_hash:
          description: Class hash of the account contract
          type: string
          example: '0x033434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2'
        paraclear_account_proxy_hash:
          description: Proxy hash of the account contract
          type: string
          example: '0x3530cc4759d78042f1b543bf797f5f3d647cde0388c33734cf91b7f7b9314a9'
        paraclear_address:
          description: Paraclear contract address
          type: string
          example: '0x4638e3041366aa71720be63e32e53e1223316c7f0d56f7aa617542ed1e7554d'
        paraclear_decimals:
          type: integer
        paraclear_evm_account_hash:
          description: Class hash of the EVM (secp256k1) account contract
          type: string
        partial_liquidation_buffer:
          description: Partial liquidation buffer. Account value is supposed to be at least this much above the MMR after partial liquidation
          type: string
          example: '0.2'
        partial_liquidation_share_increment:
          description: Minimum granularity of partial liquidation share. The share is rounded up to the nearest multiple of this value
          type: string
          example: '0.05'
        rfq_default_max_slippage:
          description: 'The exchange-wide fallback bound an unpriced RFQ''s margin is computed

            from, as a fraction of the underlying spot notional, for an asset that

            carries no bound of its own. Per-asset bounds are on

            /system/margin-config, already resolved. It does not bound the

            execution: a quote wider than it is executable, and is charged what it

            actually costs. The price bands are what bound the trade.'
          type: string
          example: '0.0005'
        starknet_chain_id:
          description: Chain ID for the Starknet Instance
          type: string
          example: SN_CHAIN_ID
        starknet_fullnode_rpc_base_url:
          description: Full node RPC Proxy base URL for Starknet
          type: string
          example: https://rpc.api.testnet.paradex.trade
        starknet_fullnode_rpc_url:
          description: Full node RPC Proxy URL for Starknet
          type: string
          example: https://rpc.api.testnet.paradex.trade/rpc/v0_10
        starknet_gateway_url:
          description: This field is deprecated
          type: string
        universal_deployer_address:
          description: Universal deployer address
          type: string
          example: '0x1f3f9d3f1f0b7f3f9f3f9f3f9f3f9f3f9f3f9f3f'
    responses.MarginParamsResp:
      type: object
      properties:
        base_asset:
          type: string
          example: BTC
        funding_provision_hour:
          type: number
          example: 8
        hedged_margin_factor:
          type: number
          example: 0.01
        mmf_factor:
          type: number
          example: 0.5
        rfq_max_slippage:
          description: 'What the margin held against an unpriced RFQ on this asset is computed

            from, as a fraction of underlying spot notional, already resolved

            against the exchange default. It does not bound the execution.'
          type: string
          example: '0.0005'
        scenarios:
          type: array
          items:
            $ref: '#/components/schemas/responses.PortfolioMarginScenarioResp'
        unhedged_margin_factor:
          type: number
          example: 0.02
        vol_shock_params:
          $ref: '#/components/schemas/responses.VolShockParamsResp'
    responses.SystemStateResponse:
      type: object
      properties:
        status:
          description: Status of the system
          allOf:
          - $ref: '#/components/schemas/responses.SystemStatus'
          example: ok
    responses.VolumeTierResp:
      type: object
      properties:
        fee_rates:
          type: object
          additionalProperties:
            type: string
        kind:
          type: string
          example: retail
        min_volume:
          type: string
          example: '100000'
        min_volume_duration:
          type: string
          example: 14d
        nft_min_volume:
          type: string
          example: '0'
        sort_order:
          type: integer
          example: 1
        tier_name:
          type: string
          example: VIP 1
    responses.PaginatedAPIResults:
      type: object
      properties:
        next:
          description: The pointer to fetch next set of records (null if there are no records left)
          type: string
          example: eyJmaWx0ZXIiMsIm1hcmtlciI6eyJtYXJrZXIiOiIxNjc1NjUwMDE3NDMxMTAxNjk5N=
        prev:
          description: The pointer to fetch previous set of records (null if there are no records left)
          type: string
          example: eyJmaWx0ZXIiOnsiTGltaXQiOjkwfSwidGltZSI6MTY4MTY3OTgzNzk3MTMwOTk1MywibWFya2VyIjp7Im1zMjExMD==
        results:
          description: Array of paginated results
          type: array
          items:
            type: object
    responses.ErrorCode:
      type: string
      enum:
      - VALIDATION_ERROR
      - BINDING_ERROR
      - INTERNAL_ERROR
      - NOT_FOUND
      - SERVICE_UNAVAILABLE
      - INVALID_REQUEST_PARAMETER
      - ORDER_ID_NOT_FOUND
      - ORDER_IS_CLOSED
      - ORDER_IS_NOT_OPEN
      - INVALID_ORDER_SIZE
      - CLIENT_ORDER_ID_NOT_FOUND
      - DUPLICATED_CLIENT_ID
      - INVALID_SYMBOL
      - INVALID_TOKEN
      - INVALID_ETHEREUM_ADDRESS
      - INVALID_ETHEREUM_SIGNATURE
      - INVALID_STARKNET_ADDRESS
      - INVALID_STARKNET_SIGNATURE
      - STARKNET_SIGNATURE_VERIFICATION_FAILED
      - ETHEREUM_SIGNER_MISMATCH
      - ETHEREUM_HASH_MISMATCH
      - NOT_ONBOARDED
      - INVALID_TIMESTAMP
      - INVALID_BLOCK_EXPIRATION
      - ACCOUNT_NOT_FOUND
      - MEDIA_NOT_FOUND
      - INVALID_ORDER_SIGNATURE
      - PUBLIC_KEY_INVALID
      - UNAUTHORIZED_ETHEREUM_ADDRESS
      - UNAUTHORIZED_ERROR
      - ETHEREUM_ADDRESS_ALREADY_ONBOARDED
      - EVM_ADDRESS_ALREADY_ONBOARDED
      - MARKET_NOT_FOUND
      - ALLOWLIST_ENTRY_NOT_FOUND
      - USERNAME_IN_USE
      - GEO_IP_BLOCK
      - ETHEREUM_ADDRESS_BLOCKED
      - PROGRAM_NOT_FOUND
      - PROGRAM_NOT_SUPPORTED
      - INVALID_DASHBOARD
      - MARKET_NOT_OPEN
      - MARKET_NOT_SETTLED
      - INVALID_REFERRAL_CODE
      - REQUEST_NOT_ALLOWED
      - PARENT_ADDRESS_ALREADY_ONBOARDED
      - INVALID_PARENT_ACCOUNT
      - INVALID_VAULT_OPERATOR_CHAIN
      - VAULT_OPERATOR_ALREADY_ONBOARDED
      - VAULT_NAME_IN_USE
      - VAULT_NOT_FOUND
      - VAULT_STRATEGY_NOT_FOUND
      - VAULT_LIMIT_REACHED
      - VAULT_DATA_PRIVATE
      - BATCH_SIZE_OUT_OF_RANGE
      - ISOLATED_MARKET_ACCOUNT_MISMATCH
      - NO_ACCESS_TO_MARKET
      - POINTS_SUMMARY_NOT_FOUND
      - ALGO_ID_NOT_FOUND
      - INVALID_DERIVATION_PATH
      - PROFILE_STATS_NOT_FOUND
      - INVALID_CHAIN
      - INVALID_LAYERSWAP_SWAP
      - INVALID_DEPOSIT_ADDRESS
      - SOCIAL_USERNAME_IN_USE
      - INVALID_OAUTH_REQUEST
      - RPI_ACCOUNT_NOT_WHITELISTED
      - SYSTEM_STATUS_POST_ONLY
      - SYSTEM_STATUS_CANCEL_ONLY
      - INVALID_MARKETING_CODE
      - OFFER_NOT_FOUND
      - MARKET_MARGIN_RESTRICTED
      - NOT_UNIQUE
      - ACCOUNT_ALREADY_REFERRED
      - ONBOARDING_PERIOD_EXPIRED
      - ONBOARDING_RATE_LIMITED
      - RFQ_CREATE_BUDGET_EXCEEDED
      - SUBACCOUNTS_LIMIT_EXCEEDED
      - INSUFFICIENT_MIN_CHAIN_BALANCE
      - INSUFFICIENT_EVM_BALANCE
      - PORTFOLIO_MARGIN_ONBOARDING_DISABLED
      - PORTFOLIO_MARGIN_INVALID_ACCOUNT_KIND
      - EVM_VAULT_OPERATORS_DISABLED
      - VAULT_OPERATOR_OWNER_PROOF_REQUIRED
      - INVALID_EVM_SIGNATURE
      - EVM_SIGNATURE_VERIFICATION_FAILED
      - INVALID_SUBKEY
      - SUBKEY_NOT_ACTIVATABLE
      - SUBKEY_REVOKED
      - TOKEN_LIMIT_REACHED
      - INVALID_TOKEN_SCOPE
      - IP_NOT_ALLOWED
      - INSUFFICIENT_TRANSFERRABLE_XP
      - TRANSFER_LIMIT_REACHED
      - XP_TRANSFERS_DISABLED
      - BLOCK_TRADE_NOT_FOUND
      - BLOCK_TRADE_NOT_ENABLED
      - BLOCK_TRADE_EXPIRED
      - BLOCK_TRADE_ALREADY_CANCELLED
      - BLOCK_TRADE_INVALID_STATUS
      - BLOCK_TRADE_UNAUTHORIZED
      - BLOCK_TRADE_MISSING_TRADES
      - BLOCK_TRADE_MISSING_SIGNERS
      - BLOCK_TRADE_MISSING_SIGNATURE
      - BLOCK_TRADE_ACCOUNT_MISMATCH
      - BLOCK_TRADE_INVALID_SIGNATURE
      - BLOCK_TRADE_SIGNER_KEY_UNAUTHORIZED
      - BLOCK_TRADE_REPLAYED_SIGNATURE
      - BLOCK_TRADE_SELF_TRADE
      - OFFER_ALREADY_CANCELLED
      - OFFER_INVALID_STATUS
      - OFFER_UNAUTHORIZED
      - OFFER_PARENT_MISMATCH
      - OFFER_PARENT_NOT_ACCEPTING
      - PORTFOLIO_MARGIN_CONFIG_NOT_FOUND
      - MARGIN_CONFIG_NOT_FOUND
      - MMP_CONFIG_INVALID
      - MMP_NOT_ENABLED
      - MMP_MIN_FREEZE_NOT_ELAPSED
      - MMP_NOT_CONFIGURED
      - RFQ_VENUE_UNAVAILABLE
      x-enum-comments:
        ErrorCodeString_SignerMismatch: '#nosec G101'
      x-enum-varnames:
      - ErrorCode_Validation
      - ErrorCode_Binding
      - ErrorCode_InternalError
      - ErrorCode_NotFound
      - ErrorCode_ServiceUnavailable
      - ErrorCodeString_InvalidParameter
      - ErrorCodeString_OrderIdNotFound
      - ErrorCodeString_OrderIsClosed
      - ErrorCodeString_OrderIsNotOpen
      - ErrorCodeString_InvalidSizeForModifyOrder
      - ErrorCodeString_ClientOrderIdNotFound
      - ErrorCodeString_DuplicatedClientOrderId
      - ErrorCodeString_InvalidSymbol
      - ErrorCodeString_InvalidToken
      - ErrorCodeString_BadEthAddress
      - ErrorCodeString_BadEthSignature
      - ErrorCodeString_BadStarkNetAddress
      - ErrorCodeString_BadStarkNetSignature
      - ErrorCodeString_StarknetSigVerificationFailed
      - ErrorCodeString_SignerMismatch
      - ErrorCodeString_HashMismatch
      - ErrorCodeString_NotOnboarded
      - ErrorCodeString_BadTimestamp
      - ErrorCodeString_BadExpiration
      - ErrorCodeString_AccountIdNotFound
      - ErrorCodeString_MediaNotFound
      - ErrorCodeString_InvalidOrderSignature
      - ErrorCodeString_BadPublicKey
      - ErrorCodeString_UnauthorizedEthAddress
      - ErrorCodeString_UnauthorizedError
      - ErrorCodeString_EthAddressAlreadyOnboarded
      - ErrorCodeString_EvmAddressAlreadyOnboarded
      - ErrorCodeString_MarketNotFound
      - ErrorCodeString_AllowlistNotFound
      - ErrorCodeString_UsernameInUse
      - ErrorCodeString_GeoIPBlock
      - ErrorCodeString_EthAddressBlocked
      - ErrorCodeString_ProgramNotFound
      - ErrorCodeString_ProgramNotSupported
      - ErrorCodeString_InvalidDashboard
      - ErrorCodeString_MarketNotOpen
      - ErrorCodeString_MarketNotSettled
      - ErrorCodeString_InvalidReferralCode
      - ErrorCodeString_RequestNotAllowed
      - ErrorCodeString_ParentAddressAlreadyOnboarded
      - ErrorCodeString_InvalidParentAccount
      - ErrorCodeString_InvalidVaultOperatorChain
      - ErrorCodeString_VaultOperatorAlreadyOnboarded
      - ErrorCodeString_VaultNameInUse
      - ErrorCodeString_VaultNotFound
      - ErrorCodeString_VaultStrategyNotFound
      - ErrorCodeString_VaultLimitReached
      - ErrorCodeString_VaultDataPrivate
      - ErrorCodeString_BatchSizeOutOfRange
      - ErrorCodeString_IsolatedMarketAccountMismatch
      - ErrorCodeString_NoAccessToMarket
      - ErrorCodeString_PointsSummaryNotFound
      - ErrorCodeString_AlgoIdNotFound
      - ErrorCodeString_InvalidDerivationPath
      - ErrorCodeString_ProfileStatsNotFound
      - ErrorCodeString_InvalidChain
      - ErrorCodeString_InvalidLayerswapSwap
      - ErrorCodeString_InvalidDepositAddress
      - ErrorCodeString_SocialUsernameInUse
      - ErrorCodeString_InvalidOAuthRequest
      - ErrorCodeString_RPIAccountNotWhitelisted
      - ErrorCodeString_SystemStatusPostOnly
      - ErrorCodeString_SystemStatusCancelOnly
      - ErrorCodeString_InvalidMarketingCode
      - ErrorCodeString_OfferNotFound
      - ErrorCodeString_MarketMarginRestricted
      - ErrorCodeString_NotUnique
      - ErrorCodeString_AccountAlreadyReferred
      - ErrorCodeString_OnboardingPeriodExpired
      - ErrorCodeString_OnboardingRateLimited
      - ErrorCodeString_RfqCreateBudgetExceeded
      - ErrorCodeString_SubaccountsLimitExceeded
      - ErrorCodeString_InsufficientMinChainBalance
      - ErrorCodeString_InsufficientEvmBalance
      - ErrorCodeString_PortfolioMarginOnboardingDisabled
      - ErrorCodeString_PortfolioMarginInvalidAccountKind
      - ErrorCodeString_EvmVaultOperatorsDisabled
      - ErrorCodeString_VaultOperatorOwnerProofRequired
      - ErrorCodeString_BadEvmSignature
      - ErrorCodeString_EvmSigVerificationFailed
      - ErrorCodeString_InvalidSubkey
      - ErrorCodeString_SubkeyNotActivatable
      - ErrorCodeString_SubkeyRevoked
      - ErrorCodeString_TokenLimitReached
      - ErrorCodeString_InvalidTokenScope
      - ErrorCodeString_IPNotAllowed
      - ErrorCodeString_InsufficientTransferrableXP
      - ErrorCodeString_TransferLimitReached
      - ErrorCodeString_XPTransfersDisabled
      - ErrorCodeString_BlockTradeNotFound
      - ErrorCodeString_BlockTradeNotEnabled
      - ErrorCodeString_BlockTradeExpired
      - ErrorCodeString_BlockTradeAlreadyCancelled
      - ErrorCodeString_BlockTradeInvalidStatus
      - ErrorCodeString_BlockTradeUnauthorized
      - ErrorCodeString_BlockTradeMissingTrades
      - ErrorCodeString_BlockTradeMissingSigners
      - ErrorCodeString_BlockTradeMissingSignature
      - ErrorCodeString_BlockTradeAccountMismatch
      - ErrorCodeString_BlockTradeInvalidSignature
      - ErrorCodeString_BlockTradeSignerKeyUnauthorized
      - ErrorCodeString_BlockTradeReplayedSignature
      - ErrorCodeString_BlockTradeSelfTrade
      - ErrorCodeString_OfferAlreadyCancelled
      - ErrorCodeString_OfferInvalidStatus
      - ErrorCodeString_OfferUnauthorized
      - ErrorCodeString_OfferParentMismatch
      - ErrorCodeString_OfferParentNotAccepting
      - ErrorCodeString_PortfolioMarginConfigNotFound
      - ErrorCodeString_MarginConfigNotFound
      - ErrorCodeString_MmpConfigInvalid
      - ErrorCodeString_MmpNotEnabled
      - ErrorCodeString_MmpMinFreezeNotElapsed
      - ErrorCodeString_MmpNotConfigured
      - ErrorCodeString_RfqVenueUnavailable
    responses.PortfolioMarginScenarioResp:
      type: object
      properties:
        spot_shock:
          type: number
          example: 0.16
        vol_shock:
          type: number
          example: 0.4
        weight:
          type: number
          example: 1
    responses.Announcement:
      type: object
      properties:
        content:
          description: Full announcement content in Markdown format
          type: string
        expiry_at:
          description: Announcement expiry timestamp at page
          type: integer
        kind:
          description: Type of announcement (e.g., Listing)
          allOf:
          - $ref: '#/components/schemas/responses.AnnouncementKind'
        notification_expiry_at:
          description: Announcement expiry timestamp at notification
          type: integer
        title:
          description: Short, descriptive title of the announcement
          type: string
        visible_at:
          description: Announcement visible timestamp
          type: integer
    responses.APIResults:
      type: object
      properties:
        results:
          description: Array of results
          type: array
          items:
            type: object
    responses.SystemTimeResponse:
      type: object
      properties:
        server_time:
          description: Paradex Server time
          type: string
          example: '1681493415023'
    responses.ApiError:
      type: object
      properties:
        data:
          description: any additional data related to the error
          type: object
        error:
          description: unique immutable string identifier for specific error
          allOf:
          - $ref: '#/components/schemas/responses.ErrorCode'
          example: NOT_ONBOARDED
        message:
          description: detailed description of error and how to address it
          type: string
          example: User has never called /onboarding endpoint
    responses.SystemStatus:
      type: string
      enum:
      - ok
      - maintenance
      - cancel_only
      - post_only
      x-enum-varnames:
      - SystemStatusOk
      - SystemStatusMaintenance
      - SystemStatusCancelOnly
      - SystemStatusPostOnly
  securitySchemes:
    BearerToken:
      type: apiKey
      name: Authorization
      in: header
x-refined-from:
- paradex-openapi-prod.json
- paradex-openapi.yml
x-hideTryItPanel: true
x-provenance:
  method: harvested
  publisher: Paradex
  source: https://docs.paradex.trade/openapi/rest-endpoints.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)