Paradex XP Transfers V2 API

The XPTransfersV2 API from Paradex — 6 operation(s) for xptransfersv2.

Operations 6

GET /xp/account-balance Get XP Balance (V2) #
GET /xp/fee-config Get Transfer Fee Configuration #
GET /xp/public-transfers Get Public XP Transfer History #
POST /xp/transfer Create XP Transfer #
GET /xp/transfer/{transfer_id} Get XP Transfer by ID #
GET /xp/transfers Get XP Transfer History #

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-xptransfersv2-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-xptransfersv2-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Paradex XP Transfers V2 API
  version: 1.142.2
  contact: {}
  description: 'Operations tagged XPTransfersV2 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: XPTransfersV2
paths:
  /xp/account-balance:
    get:
      security:
      - BearerToken: []
      description: 'Get detailed XP balance including earned XP, transfer delta, and transferrable

        amount.'
      tags:
      - XPTransfersV2
      summary: Get XP Balance (V2)
      operationId: get-xp-balance-v2
      parameters:
      - description: Season filter ('preseason' for Preseason, 'season1' for Season 1, 'season2' for Season 2, 'season3' for Season 3)
        name: season
        in: query
        schema:
          type: string
          default: season3
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.GetXPBalanceResponseV2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /xp/fee-config:
    get:
      description: Get the current fee percentage charged on XP transfers
      tags:
      - XPTransfersV2
      summary: Get Transfer Fee Configuration
      operationId: get-transfer-fee-config-v2
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/services.TransferFeeConfigResponse'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /xp/public-transfers:
    get:
      description: Retrieve a feed of public XP transfers. Supports filtering by time range or getting the latest transfers based on page_size. Private transfers are excluded from results.
      tags:
      - XPTransfersV2
      summary: Get Public XP Transfer History
      operationId: get-public-xp-transfers-v2
      parameters:
      - description: Start timestamp in milliseconds
        name: start_at
        in: query
        schema:
          type: integer
      - description: End timestamp in milliseconds
        name: end_at
        in: query
        schema:
          type: integer
      - description: Season filter ('preseason' for Preseason, 'season1' for Season 1, 'season2' for Season 2, 'season3' for Season 3)
        name: season
        in: query
        schema:
          type: string
          default: season3
      - description: Pagination cursor
        name: cursor
        in: query
        schema:
          type: string
      - description: Number of results per page
        name: page_size
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 50
          default: 50
      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.XPTransfer'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /xp/transfer:
    post:
      security:
      - BearerToken: []
      description: Transfer XP instantly from your account to another user.
      tags:
      - XPTransfersV2
      summary: Create XP Transfer
      operationId: create-xp-transfer-v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/requests.CreateXPTransferRequest'
        description: Transfer details
        required: true
      responses:
        '201':
          description: Transfer created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.CreateTransferResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
        '403':
          description: Not whitelisted for XP transfers V2
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /xp/transfer/{transfer_id}:
    get:
      description: 'Retrieve details of a specific XP transfer by its ID. This is a public endpoint that does not require authentication. Note: Private transfers will return 404 (not found) to maintain privacy.'
      tags:
      - XPTransfersV2
      summary: Get XP Transfer by ID
      operationId: get-xp-transfer-by-id-v2
      parameters:
      - description: Transfer ID
        name: transfer_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.XPTransfer'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
  /xp/transfers:
    get:
      security:
      - BearerToken: []
      description: 'Retrieve XP transfer history for the authenticated account with optional

        filtering by role (sender/recipient).'
      tags:
      - XPTransfersV2
      summary: Get XP Transfer History
      operationId: get-xp-transfers-v2
      parameters:
      - description: Filter by role
        name: role
        in: query
        schema:
          type: string
          enum:
          - sender
          - recipient
      - description: Season filter ('preseason' for Preseason, 'season1' for Season 1, 'season2' for Season 2, 'season3' for Season 3)
        name: season
        in: query
        schema:
          type: string
          default: season3
      - description: Pagination cursor
        name: cursor
        in: query
        schema:
          type: string
      - description: Number of results per page
        name: page_size
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 5000
          default: 100
      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.XPTransfer'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ApiError'
    servers:
    - url: https://api.prod.paradex.trade/v1
components:
  schemas:
    requests.CreateXPTransferRequest:
      type: object
      required:
      - amount
      - recipient
      properties:
        amount:
          description: Amount of XP to transfer (must be >= 1 and <= 1e12)
          type: integer
          maximum: 1000000000000
          minimum: 1
          example: 100
        is_private:
          description: Whether the transfer is private (not shown on public feeds). Defaults to false if not provided.
          type: boolean
          default: false
          example: false
        recipient:
          description: Recipient's Starknet address (hex format)
          type: string
          example: '0x1234567890abcdef0123456789abcdef'
        season:
          description: Season identifier. Defaults to season3 if not provided. Only season3 XP can be transferred.
          type: string
          default: season3
          example: season3
    services.TransferFeeConfigResponse:
      type: object
      properties:
        fee_percentage:
          description: Fee percentage charged on transfers (e.g., 0.01 = 1%)
          type: number
    responses.CreateTransferResponse:
      type: object
      properties:
        transfer:
          description: The created XP transfer
          allOf:
          - $ref: '#/components/schemas/responses.XPTransfer'
    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.XPTransfer:
      type: object
      properties:
        amount:
          description: Amount of XP transferred
          type: integer
          example: 100
        created_at:
          description: Creation timestamp (milliseconds since epoch)
          type: integer
          example: 1640995200000
        fee:
          description: Fee charged for the transfer (deducted from sender's balance)
          type: integer
          example: 1
        id:
          description: Unique transfer identifier
          type: string
          example: transfer_123
        is_private:
          description: Whether the transfer is private (not shown on public feeds)
          type: boolean
          example: false
        recipient:
          description: Address of the recipient (gaining XP)
          type: string
          example: '0xfedcba0987654321'
        season:
          description: Season identifier ('season1' for Season 1, 'season2' for Season 2, etc.)
          type: string
          example: season2
        sender:
          description: Address of the sender (losing XP)
          type: string
          example: '0x1234567890abcdef'
    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.GetXPBalanceResponseV2:
      type: object
      properties:
        earned_xp:
          description: XP earned through trading (from leaderboard, immutable)
          type: integer
          example: 1000
        transferrable_xp:
          description: Maximum XP that can be transferred
          type: integer
          example: 700
        xp_delta:
          description: Net XP from transfers
          type: integer
          example: 200
  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)