UpshiftDocs
REST APIInstitutional API

Points

Points registration, leaderboard, and per-user balances.

Register User

Process referral signup bonus and create referral entries.

Auth: wallet signature over a canonical message containing the user address, optional referrer, a single-use nonce, and an expiry. See _verify_register_signature for the validation rules.

POST
/upshift/points/register
user_addressUser Address
referrer_address?Referrer Address
chain_idChain Id
Range1 <= value
signatureSignature
Match^0x[0-9a-fA-F]+$
nonceNonce
Length8 <= length <= 128
expiryExpiry
Range0 <= value

Response Body

curl -X POST "https://api.upshift.finance/api/v1/upshift/points/register" \  -H "Content-Type: application/json" \  -d '{    "user_address": "string",    "chain_id": 1,    "signature": "string",    "nonce": "stringst",    "expiry": 0  }'
{
  "success": true,
  "message": "string",
  "user_id": "string",
  "referral_bonus_awarded": false
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Leaderboard

Get leaderboard with pagination and optional user search.

  • Without search params: Returns paginated leaderboard
  • With wallet_address or ens_name: Returns ONLY that specific user with their rank
GET
/upshift/points/leaderboard

Query Parameters

page?Page
Default1
Range1 <= value
perPage?Perpage
Default10
Range1 <= value <= 100
sortBy?Sortby
Default"totalPoints"
Value in"totalPoints" | "streakDays"
wallet_address?Wallet Address

Search for specific wallet address - returns only that user

ens_name?Ens Name

Search for specific ENS name - returns only that user

chain?Chain

Chain ID for ENS resolution (default: 1 for mainnet)

Response Body

curl -X GET "https://api.upshift.finance/api/v1/upshift/points/leaderboard?page=1&perPage=10&sortBy=totalPoints&wallet_address=string&ens_name=string&chain=0"
{
  "page": 0,
  "perPage": 0,
  "totalItems": 0,
  "totalPages": 0,
  "items": [
    {
      "rank": 0,
      "userAddress": "string",
      "topVault": {
        "name": "string",
        "address": "string",
        "deposit": {}
      },
      "streakDays": 0,
      "streakTooltip": "Total number of days a user has held a deposit in any Upshift vault.",
      "totalPoints": 0
    }
  ]
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Points By User

GET
/upshift/points/{user_address}

Path Parameters

user_addressUser Address

Response Body

curl -X GET "https://api.upshift.finance/api/v1/upshift/points/string"
{
  "totalPoints": 0,
  "referralEarnings": 0,
  "pools": {
    "property1": {
      "amountDepositedInUsd": 0,
      "nativeAmountDeposited": 0,
      "totalPoints": 0,
      "hasPendingRewards": false
    },
    "property2": {
      "amountDepositedInUsd": 0,
      "nativeAmountDeposited": 0,
      "totalPoints": 0,
      "hasPendingRewards": false
    }
  },
  "external": {
    "property1": {
      "protocol": "string",
      "externalName": "string",
      "amountDepositedInUsd": 0,
      "nativeAmountDeposited": 0,
      "totalPoints": 0,
      "multiplier": 1
    },
    "property2": {
      "protocol": "string",
      "externalName": "string",
      "amountDepositedInUsd": 0,
      "nativeAmountDeposited": 0,
      "totalPoints": 0,
      "multiplier": 1
    }
  },
  "referrals": {
    "property1": {
      "totalPoints": 0,
      "amountDepositedInUsd": 0,
      "nativeAmountDeposited": 0
    },
    "property2": {
      "totalPoints": 0,
      "amountDepositedInUsd": 0,
      "nativeAmountDeposited": 0
    }
  },
  "topVault": {
    "lifetimeDeposit": 0,
    "address": "string"
  },
  "streak": 0,
  "daily_streak_points": 0,
  "manual_points": 0,
  "rank": 0
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}