# Account features

Referrals, points, giveaways, and creator rewards belong to the authenticated account. Changing the selected trading wallet does not change that ownership.

## Referrals

`GET /v1/referrals` returns the current primary `code`, referral counts, `totalEarnedMicros`, and paginated reward entries. Share links use `/invite?ref=CODE`; existing `/login?ref=CODE` links remain valid.

Attribution is set when a new account is created and cannot be changed through a later login. The standard `fee-share-v1` policy rewards the referrer with 10 percent of a confirmed trade's `vaultFeeMicros`. A reward is spendable only after it has been durably posted. Read returned rewards instead of calculating a second balance from quotes.

Changing the primary code through `PUT /v1/referrals/code` requires a browser session and CSRF token. Earlier generated and custom codes remain active aliases. Accounts can create five new custom aliases in a rolling 24 hours; reselecting an owned alias is exempt. Codes remain exclusive to their original owner.

## Points

`GET /v1/points` returns `totalPoints`, `tradePoints`, `referralPoints`, `confirmedSpendMicros`, and paginated point entries. Point totals are integer strings.

Confirmed trading volume earns one whole point per cumulative settlement-token dollar, with fractional dollars carried forward. A referrer earns 100 points once when an invited account first qualifies through a positive confirmed referral reward. Points are non-spendable and do not change cash balances or giveaway eligibility.

## Giveaways

`GET /v1/giveaways` returns published campaigns, each campaign's dates and rules, the account's confirmed balance, and any existing entry. An empty list means there is no published campaign to show.

Entry uses `POST /v1/giveaways/:giveawayId/entries` from a browser session with CSRF protection and an idempotency key. Each account can enter once. Eligibility checks a point-in-time balance across all owned wallets, including available, reserved, and gas-reserved settlement funds. It excludes pending deposits and portfolio prices, and it does not lock funds after entry.

## Creator rewards

`GET /v1/rewards` returns claimable Pump.fun and PumpSwap creator rewards for the account's wallets. These native Solana amounts use lamports, not settlement micros. `POST /v1/rewards/pumpfun/claims` requires mutation authentication and an idempotency key, and returns claimed amounts and transaction references.

## Account history and share cards

`GET /v1/account/portfolio-history` accepts `range=day`, `week`, `month`, or `all`, defaulting to `week`. It combines wallet balances and onchain position values across the account. Account-value change includes transfers, deposits, and withdrawals; label it separately from realized PnL.

`POST /v1/pnl-cards` creates a share card from a confirmed sell, a verified open wallet position, or a period recap. `GET /v1/pnl-cards/:cardId` is public. The owner can remove a card with `DELETE /v1/pnl-cards/:cardId`. Quotes are optional single-line text of at most 60 characters. Use the returned card path instead of constructing one from an account identifier.

See [OpenAPI](/openapi.json) for request and response fields, and [Wallets](/docs/wallets) for cost-basis and pending-settlement semantics.
