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

# Validate referrer

> Checks whether assigning a referrer would create a circular loop before you submit an on-chain `SetReferrer` transaction.



## OpenAPI

````yaml /openapi.json post /api/v2/referrals/validate
openapi: 3.1.0
info:
  title: QuantDesk API
  version: 2.0.0
  description: >-
    Public HTTP API for the QuantDesk perpetual DEX gateway. Endpoints are
    grouped by market data, unified portfolio state, oracle pricing, social
    surfaces, backtesting, and reference data. Field-level truth for on-chain
    accounts lives in the SDK; this reference documents the REST gateway
    surface.


    Authenticated routes accept a Bearer JWT obtained from the wallet session
    flow described in the Authentication guide.
  contact:
    name: QuantDesk Support
    url: https://docs.quantdesk.app
    email: support@quantdesk.app
  license:
    name: MIT
servers:
  - url: https://api.quantdesk.app
    description: Production gateway
security: []
tags:
  - name: Markets
    description: Market registry, metadata, and crankless orderbook depth.
  - name: Oracle
    description: Price feeds sourced from the Pyth oracle network.
  - name: Portfolio
    description: Unified portfolio state aggregated from on-chain accounts.
  - name: Data
    description: Authoritative market statistics and historical OHLCV candles.
  - name: Social
    description: Leaderboard and verified proof (flex) cards.
  - name: Backtesting
    description: Strategy simulation lifecycle and dataset catalog.
  - name: Referrals
    description: Referral validation before on-chain assignment.
paths:
  /api/v2/referrals/validate:
    post:
      tags:
        - Referrals
      summary: Validate referrer
      description: >-
        Checks whether assigning a referrer would create a circular loop before
        you submit an on-chain `SetReferrer` transaction.
      operationId: validateReferral
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - referrerAddress
              properties:
                referrerAddress:
                  type: string
                  description: Candidate referrer wallet public key.
                  example: 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
      responses:
        '200':
          description: Validation result
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      isLoop:
                        type: boolean
                        description: >-
                          `true` means the referral is rejected (circular chain
                          detected); `false` means it is safe to proceed
                          on-chain.
                        example: false
        '401':
          description: Missing or expired auth
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - BearerAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: PORTFOLIO_NOT_FOUND
        code:
          type: string
          example: PORTFOLIO_NOT_FOUND
        message:
          type: string
          example: Wallet has not initialized a V2 portfolio yet.
        timestamp:
          type: string
          format: date-time
        request_id:
          type: string
          example: req_8f2a1c
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer JWT obtained from the wallet session flow. See the Authentication
        guide.

````