API reference
Referrals
Referral links, first visits, and referral claims.
- GET
/api/v1/referrals/code-exists - GET
/api/v1/referrals/me - POST
/api/v1/referrals/me - POST
/api/v1/referrals/visit - POST
/api/v1/referrals/link - POST
/api/v1/referrals/me/payout/request - GET
/api/v1/referrals/me/payout/in-progress
How the pages use it
- 1On a browser's first visit the page sends
POST /api/v1/referrals/visit, with the link name when it came through a/join/@link. - 2Right after a wallet signs in, the page sends
POST /api/v1/referrals/link. On the wallet's first sign in, this ties it to the link of that first visit. - 3From then on, the referrer earns a share of the creator fees the wallet's trades make.
Is a link name taken
/api/v1/referrals/code-existsNo sign inWhether a link name is taken, in any case.
- Sign in
- Not needed
- CSRF header
- Not needed
- Cached
- Never
- Rate limit
- None of its own
Query
Response
{
"success": true,
"message": "Referral code checked",
"data": boolean
}Errors
Example
curl -s "/api/v1/referrals/code-exists?code=<link name>"My referrals
/api/v1/referrals/meSigned inThe signed in wallet's link, the people it referred and its earnings.
- Sign in
- Needed (session cookie)
- CSRF header
- Not needed
- Cached
- Never
- Rate limit
- None of its own
Response
referralPendingPayout: earnings not claimed yet, in SOL. tradingFees: the creator fees your referrals' trades made, in SOL (you earn 20% of it). referralGeneratedAmount and referralTradingVolume are in SOL.
{
"success": true,
"message": "Referral data fetched successfully",
"data": {
"referralPendingPayout": number,
"tradingFees": number,
"ownReferralCode": "<link name>" | null,
"ownReferralCodeEarnPercentage": 20 | null,
"referredUsers": [
{
"referralGeneratedAmount": number,
"referralTradingVolume": number,
"createdAt": "<ISO time>",
"publicKey": "<wallet address>"
}
],
"referredByPublicKey": "<wallet address>" | null,
"totalReferredUsers": number
}
}Errors
Example
curl -s -b cookies.txt "/api/v1/referrals/me"Create my link
/api/v1/referrals/meSigned in, CSRF headerCreates the signed in wallet's referral link. One per wallet, made once. Works before rewards open.
- Sign in
- Needed (session cookie)
- CSRF header
- Needed:
x-zpad: zpad - Cached
- Never
- Rate limit
- 10 a minute per wallet
Body
Response
{
"success": true,
"message": "Referral link created",
"data": {
"code": "<link name>",
"earnPercentage": 20
}
}Errors
Example
curl -s -X POST -b cookies.txt "/api/v1/referrals/me" \
-H "x-zpad: zpad" \
-H "content-type: application/json" \
-d '{"code":"<link name>"}'Record a visit
/api/v1/referrals/visitNo sign in, CSRF headerSent once per browser. The first visit gets a random visitor id in an HttpOnly cookie (gz_vid, 400 days) and is recorded with the link it came through, or none. Later visits change nothing. Only a hash of the visitor id is stored.
- Sign in
- Not needed
- CSRF header
- Needed:
x-zpad: zpad - Cached
- Never
- Rate limit
- 30 a minute per address (IP)
Body
Response
{
"success": true,
"message": "Visit recorded",
"data": {
"first": boolean
}
}Errors
Example
curl -s -X POST "/api/v1/referrals/visit" \
-H "x-zpad: zpad" \
-H "content-type: application/json" \
-d '{"code":"<link name>"}'Tie the referral
/api/v1/referrals/linkSigned in, CSRF headerSent right after sign in. On the wallet's first sign in it ties the wallet to the link of this browser's first visit, if any. Answers whether the wallet has a referrer now.
- Sign in
- Needed (session cookie)
- CSRF header
- Needed:
x-zpad: zpad - Cached
- Never
- Rate limit
- 10 a minute per wallet
Response
{
"success": true,
"message": "Referral checked",
"data": boolean
}Errors
Example
curl -s -X POST -b cookies.txt "/api/v1/referrals/link" \
-H "x-zpad: zpad"Claim referral earnings
/api/v1/referrals/me/payout/requestSigned in, CSRF headerClaims every referral earning not claimed yet as one PENDING payout, sent by hand.
- Sign in
- Needed (session cookie)
- CSRF header
- Needed:
x-zpad: zpad - Cached
- Never
- Rate limit
- 6 a minute per wallet
Response
{
"success": true,
"message": "Claim received. It is paid by hand and shows once sent.",
"data": {
"payoutId": number,
"sol": "<SOL>",
"status": "PENDING",
"kind": "referral"
}
}Errors
Example
curl -s -X POST -b cookies.txt "/api/v1/referrals/me/payout/request" \
-H "x-zpad: zpad"Referral claim waiting
/api/v1/referrals/me/payout/in-progressSigned inWhether a referral claim waits to be paid.
- Sign in
- Needed (session cookie)
- CSRF header
- Not needed
- Cached
- Never
- Rate limit
- None of its own
Response
{
"success": true,
"message": "Payout progress fetched successfully",
"data": {
"inProgress": boolean,
"expiresAt": 0,
"payoutId": number | null,
"sol": "<SOL>" | null,
"requestedAt": "<ISO time>" | null
}
}Errors
Example
curl -s -b cookies.txt "/api/v1/referrals/me/payout/in-progress"