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

# Points & rewards

> Read your points balances on Extended, Robinhood, and Ondo, and enable Kinetiq kPoints with your Hyperliquid wallet

This page covers the independent rewards surfaces exposed through the API: **Extended points**, **Robinhood points**, and **Ondo points and rewards**, each tied to the account on that venue, plus **Kinetiq kPoints**, tied to your Hyperliquid wallet. They are unrelated — earning in one has no effect on any other.

<Info>
  **Prerequisites:** an active VOOI API token, plus the relevant exchange connected for whichever surface you are reading. All endpoints below carry your `vooi_…` bearer token.
</Info>

## Extended points

Extended points are read-only through the API — you accrue them by trading and providing liquidity on Extended, and these endpoints report the result.

[`GET /extended/points`](/docs/api-reference/extended/get-extended-points-summary-total-rank-and-league-tiers) returns a summary: your total points, overall rank, and the league tier you sit in for each of three programs (trading, liquidity, and referral rewards). League tiers run **KING** (highest) > **QUEEN** > **ROOK** > **KNIGHT** > **PAWN**.

[`GET /extended/points/earned`](/docs/api-reference/extended/get-extended-points-earned-per-season-and-epoch) returns the per-season, per-epoch breakdown — each season carries its epoch rewards with the points earned and the epoch's start and end dates.

See the API reference for the full field tables.

### Referral code

Registering on Extended through [Register on Extended](/docs/register-extended) automatically applies the VOOI referral code — no client action is needed. To apply a different code, [`POST /extended/use-referral-code`](/docs/api-reference/extended/apply-a-referral-code-to-the-extended-account) takes `{ code }` and returns `{ "status": "ok" }`. It fails if a code is already applied to the account, so treat it as a one-shot override before any code is set.

This is Extended's own endpoint. On the other venues a referral code can only be bound **at registration**: pass `referralCode` to [`POST /user-exchange/{exchange}/register/prepare`](/docs/api-reference/user-exchange/prepare-exchange-registration) and it is applied to the new account. Supported on Aster, Hyperliquid, Lighter, Robinhood, Extended, and Ondo; omit it and the VOOI code is applied.

## Robinhood points

[`GET /robinhood/points`](/docs/api-reference/robinhood/get-robinhood-points-summary-totals-last-week-and-rank) returns your Robinhood points summary: total points and total referral points across the whole program, the points and referral points earned during the last completed week, and your all-time leaderboard `rank` (`null` when the account is not ranked yet).

## Ondo points and rewards

Ondo splits its program into points and paid-out rewards, on two endpoints:

* [`GET /ondo/points`](/docs/api-reference/ondo/get-ondo-points-summary-totals-by-source-and-leaderboard-rank) — `totalPoints` plus the breakdown by source (`tradingPoints`, `referralPoints`, `marketBoostPoints`, `alphaStratPoints`, `bonusPoints`), your leaderboard `rank` (`-1` when not yet ranked), the pseudonym Ondo assigned the account, and `updatedUnix`, the Unix time in seconds of the last leaderboard recomputation.
* [`GET /ondo/rewards/total`](/docs/api-reference/ondo/get-the-total-usdc-rewards-paid-out-to-the-ondo-account) — `totalRewards`, the total USDC paid out to the account across every weekly payout, as a decimal string.

<Note>
  `rank` uses a different "not ranked yet" sentinel on each venue: Ondo returns `-1`, Robinhood returns `null`. Check for both rather than treating either as a real position.
</Note>

## Kinetiq kPoints

Kinetiq kPoints are a rewards program keyed to your **Hyperliquid wallet** — a rewards balance you opt into, not something you trade.

Enabling requires a connected Hyperliquid wallet — see [Register on Hyperliquid](/docs/register-hyperliquid) or [Use your own keys](/docs/exchanges).

### Enable kPoints

[`POST /kinetiq/enable`](/docs/api-reference/kinetiq/enable-kinetiq-kpoints-by-verifying-a-wallet-signature) takes a `signature` — a `personal_sign` of the exact literal message `kPoints account verification`, produced by your Hyperliquid wallet. The recovered signer must match your connected Hyperliquid wallet, or the request is rejected. On success it returns the verified `{ address }`.

<CodeGroup>
  ```typescript Node / TypeScript theme={null}
  const message = 'kPoints account verification';
  const signature = await account.signMessage({ message });

  const res = await fetch('https://perps-api.vooi.io/kinetiq/enable', {
    method: 'POST',
    headers: { Authorization: `Bearer ${apiToken}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ signature }),
  });
  // → { "address": "0xYourHyperliquidWallet" }
  ```

  ```bash curl theme={null}
  curl -X POST https://perps-api.vooi.io/kinetiq/enable \
    -H "Authorization: Bearer $TOKEN" \
    -H 'content-type: application/json' \
    -d '{ "signature": "0x..." }'
  ```
</CodeGroup>

### Read kPoints

Once enabled, [`GET /kinetiq/points`](/docs/api-reference/kinetiq/get-current-kinetiq-kpoints) returns your current balance, rank, and tier, and [`GET /kinetiq/status`](/docs/api-reference/kinetiq/check-whether-kinetiq-kpoints-are-enabled) reports whether kPoints are enabled and for which address. See the API reference for the full field tables.

## Next steps

<CardGroup cols={2}>
  <Card title="Register on Extended" icon="user-plus" href="/docs/register-extended">
    Connect Extended and auto-apply the VOOI referral code
  </Card>

  <Card title="Register on Hyperliquid" icon="user-plus" href="/docs/register-hyperliquid">
    Connect the Hyperliquid wallet that backs kPoints
  </Card>
</CardGroup>


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