curl --request GET \
--url https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree \
--header 'X-Monaco-Signature: <api-key>'import requests
url = "https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree"
headers = {"X-Monaco-Signature": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Monaco-Signature': '<api-key>'}};
fetch('https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Monaco-Signature: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Monaco-Signature", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree")
.header("X-Monaco-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Monaco-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"parent": "<string>",
"parentLevel": 8,
"nodes": [
{
"wallet": "0x0000000000000000000000000000000000000004",
"display": "<string>",
"level": 5,
"parent": "<string>",
"referredAt": "2023-11-07T05:31:56Z",
"refereeCount": 123,
"totalEarned": "<string>"
}
],
"nextPageToken": "<string>"
}Get one level of your referral tree (deprecated PitPass path)
Read one level of your own referral tree (self-scoped).
Return the wallets directly referred by parent — the authenticated caller
when parent is omitted, otherwise one of the caller’s own referees above
the deepest rewarded level — one page at a time, newest first. Each node carries its level
relative to the caller, its parent, how many wallets it has referred (so the
client knows whether it can be expanded), and what the caller has earned
from that wallet’s own trades. Expanding a node is another call with
parent set to that node’s wallet; the tree always lists the caller’s
direct referees (L1) and goes as deep as any client application rewards,
at most 10 levels.
Self-scoped — identity comes only from the session. A parent that is not
the caller or a referee the caller can expand returns 404, the same
as a wallet that does not exist, so the endpoint cannot be used to read
anyone else’s tree. Every node is identified by its public wallet address,
never an internal id.
curl --request GET \
--url https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree \
--header 'X-Monaco-Signature: <api-key>'import requests
url = "https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree"
headers = {"X-Monaco-Signature": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Monaco-Signature': '<api-key>'}};
fetch('https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Monaco-Signature: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Monaco-Signature", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree")
.header("X-Monaco-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/pitpass/referrals/me/tree")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Monaco-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"parent": "<string>",
"parentLevel": 8,
"nodes": [
{
"wallet": "0x0000000000000000000000000000000000000004",
"display": "<string>",
"level": 5,
"parent": "<string>",
"referredAt": "2023-11-07T05:31:56Z",
"refereeCount": 123,
"totalEarned": "<string>"
}
],
"nextPageToken": "<string>"
}Authorizations
Ed25519 session-key request signing. Every authenticated request carries three headers: X-Monaco-PublicKey (64-char lowercase-hex session public key), X-Monaco-Timestamp (Unix milliseconds, within 30s of server time), and X-Monaco-Signature (hex ed25519 signature). The signature is over METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body), where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from POST /api/v1/auth/challenge followed by POST /api/v1/auth/verify.
Query Parameters
Nodes per page (max 200)
1 <= x <= 200Opaque cursor from a previous response's nextPageToken; omit or send an
empty string for the first page. Only valid with the same parent.
Response
OK
Wallet address whose referees nodes lists — the caller's own wallet when the request omitted parent.
Depth of parent below the caller: 0 for the caller, otherwise the level of the referee being expanded. Every node is one level deeper.
x <= 9The wallets parent referred, newest first. A wallet that signed up under several referrers (one per app) appears only under the referrer the reward engine pays.
Show child attributes
Show child attributes
Cursor for the next page; empty when there are no more.
Was this page helpful?

