API P2P Dash
Dane twojego portfela P2P w formacie JSON, do arkusza, skryptu albo własnego dashboardu. Tworzysz token na swoim koncie, dołączasz go do każdego zapytania i dostajesz te same liczby, które widzisz w P2P Dash.
Twoje pierwsze zapytanie
Trzy kroki w terminalu na macOS albo Linuksie. Wolisz zacząć w Google Sheets? Przykłady niżej pokazują, jak to zrobić.
Utwórz token
W P2P Dash otwórz menu użytkownika i wejdź w „Tokeny API”. Nadaj tokenowi nazwę, dla „Twoje dane” wybierz „Odczyt” i ustaw, kiedy ma wygasnąć. Token pokazujemy tylko raz, więc skopiuj go od razu.
Nie wpisuj go w kod
Zapisz go w zmiennej środowiskowej, tutaj P2PDASH_TOKEN, a nie w pliku, który komuś udostępniasz. Kto ma token, ten może odczytać twoje liczby.
Wyślij zapytanie
Każde zapytanie niesie token w nagłówku Authorization. Odpowiedź przychodzi jako JSON, a twoje dane są pod data.
export P2PDASH_TOKEN="p2pdash_..."
curl https://app.p2pdash.com/api/v1/account/summary \
-H "Authorization: Bearer $P2PDASH_TOKEN"Na Windowsie w PowerShellu ustaw token poleceniem $env:P2PDASH_TOKEN = "p2pdash_...", zamiast curl pisz curl.exe, całe zapytanie zmieść w jednej linii, a w nagłówku użyj $env:P2PDASH_TOKEN.
{
"data": {
"platformCount": 4,
"firstDate": "2021-03-02",
"lastDate": "2026-11-09",
"interest": 1781.4,
"principalRepayment": 37443.05,
"fee": 12.4,
"tax": 0,
"bonus": 85,
"deposit": 12000,
"withdrawal": 1500,
"investment": 48210.33,
"defaultLoss": 120.5,
"internalTransfer": 0,
"transactionCount": 14873,
"totalBalance": 12233.5,
"availableBalance": 1586.72,
"investedBalance": 10646.78,
"netDeposits": 10500,
"netIncome": 1733.5
}
}To przykładowe liczby. totalBalance to wartość twojego konta: wpłaty minus wypłaty plus wszystko, co zarobiłeś, po opłatach, podatkach i stratach.
Przykłady
Cztery rzeczy, które zrobisz z API. Skopiuj kod, ustaw swój token i dopasuj resztę do siebie.
Twoje saldo w Google Sheets
W arkuszu otwórz Rozszerzenia → Apps Script i wklej tę funkcję. W Ustawienia projektu → Właściwości skryptu dodaj P2PDASH_TOKEN ze swoim tokenem. Potem wpisz formułę do komórki. Zadziała każde pole z podsumowania, np. "netIncome".
function P2PDASH(field) {
const token = PropertiesService.getScriptProperties()
.getProperty("P2PDASH_TOKEN");
const res = UrlFetchApp.fetch(
"https://app.p2pdash.com/api/v1/account/summary",
{ headers: { Authorization: "Bearer " + token } },
);
return JSON.parse(res.getContentText()).data[field];
}=P2PDASH("totalBalance") → 12233.5Sheets zapamiętuje wynik i pyta ponownie dopiero, gdy zmieni się formuła. Żeby odświeżyć, dodaj drugi argument, np. =P2PDASH("totalBalance", A1), i zmień A1. Każda komórka to jedno zapytanie. Każdy, kto może edytować arkusz, zobaczy też token w Apps Script, więc nie rób tego w arkuszu, który edytują inni.
Odsetki miesięcznie
Szereg czasowy z granularity=month daje jeden punkt na każdy miesiąc z danymi. Bibliotekę zainstaluj raz poleceniem pip install requests.
import os
import requests
res = requests.get(
"https://app.p2pdash.com/api/v1/account/timeseries",
params={"granularity": "month", "from": "2026-08-01", "to": "2026-10-31"},
headers={"Authorization": f"Bearer {os.environ['P2PDASH_TOKEN']}"},
)
res.raise_for_status()
for point in res.json()["data"]:
print(point["date"][:7], f"{point['interest']:.2f}")2026-08 94.80
2026-09 96.42
2026-10 98.15XIRR dla każdej platformy
Zapisz to jako xirr.mjs i uruchom node xirr.mjs (Node.js 18 lub nowszy). XIRR przychodzi jako ułamek: 0.0984 oznacza 9,84% rocznie. Platforma, która nie ma dość danych, dostaje null.
const res = await fetch("https://app.p2pdash.com/api/v1/account/metrics", {
headers: { Authorization: `Bearer ${process.env.P2PDASH_TOKEN}` },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data } = await res.json();
for (const p of data.xirr.platforms) {
const xirr = p.allTimeXirr === null
? "-"
: (p.allTimeXirr * 100).toFixed(2) + "%";
console.log(p.name.padEnd(12), xirr);
}Platform A 9.84%
Platform B 10.37%
Platform C 11.20%
Platform D -Liczby do zeznania podatkowego
Odsetki i bonusy dla każdej platformy za jeden rok, skrócone przez jq. Co z tego liczy się jako dochód, zależy od przepisów twojego kraju; API pokazuje tylko to, co jest w P2P Dash.
curl -s "https://app.p2pdash.com/api/v1/account/tax?year=2025" \
-H "Authorization: Bearer $P2PDASH_TOKEN" \
| jq '.data[] | {name, interest: .years[0].interest, bonus: .years[0].bonus}'{
"name": "Platform A",
"interest": 412.37,
"bonus": 25
}
{
"name": "Platform B",
"interest": 288.9,
"bonus": 0
}Co możesz odczytać
Całe konto, każdy portfel i każda platforma odpowiadają na te same pięć pytań. Wystarczy je poznać raz, a zadasz je na każdym poziomie.
Pięć widoków
Każdy widok istnieje w trzech wersjach. Dla jednej platformy najpierw pobierz jej ID z /api/v1/platforms, a potem wstaw je w miejsce {id}. Z portfelami jest tak samo.
summarySumy za cały okres: odsetki, bonusy, opłaty, straty, wpłaty, wypłaty i wynikające z nich salda.
- Całe konto
- GET /api/v1/account/summary
- Jeden portfel
- GET /api/v1/portfolios/{id}/summary
- Jedna platforma
- GET /api/v1/platforms/{id}/summary
timeseriesTe same liczby w czasie, dziennie, miesięcznie albo rocznie, z saldem na koniec każdego okresu. Przydaje się do wykresów.
- Całe konto
- GET /api/v1/account/timeseries
- Jeden portfel
- GET /api/v1/portfolios/{id}/timeseries
- Jedna platforma
- GET /api/v1/platforms/{id}/timeseries
metricsXIRR (za cały okres i za każdy rok, z bonusami i bez), cash drag, średnie zainwestowane saldo i indeks wolności kapitału, dla każdej platformy i łącznie.
- Całe konto
- GET /api/v1/account/metrics
- Jeden portfel
- GET /api/v1/portfolios/{id}/metrics
- Jedna platforma
- GET /api/v1/platforms/{id}/metrics
income-projectionIle twoje obecne saldo zarobiłoby dziennie, miesięcznie i rocznie przy twoim dotychczasowym XIRR bez bonusów. To prognoza, nie obietnica.
- Całe konto
- GET /api/v1/account/income-projection
- Jeden portfel
- GET /api/v1/portfolios/{id}/income-projection
- Jedna platforma
- GET /api/v1/platforms/{id}/income-projection
taxOdsetki, bonusy, pobrane podatki, opłaty i straty dla każdej platformy i roku kalendarzowego, od najnowszego roku.
- Całe konto
- GET /api/v1/account/tax
- Jeden portfel
- GET /api/v1/portfolios/{id}/tax
- Jedna platforma
- GET /api/v1/platforms/{id}/tax
Listy i szczegóły
- GET /api/v1/account
- Którego tokena używasz, jakie ma zakresy i kiedy wygasa. Dobry sposób, żeby sprawdzić, czy token nadal działa.
- GET /api/v1/platforms
- Wszystkie twoje platformy z ich ID, portfelami i sumami. Od tego zacznij, żeby poznać ID.
- GET /api/v1/platforms/{id}
- Jedna platforma, ten sam obiekt co na liście.
- GET /api/v1/platforms/{id}/intent-history
- Kiedy zmieniałeś swój plan wobec platformy (rozwijać, trzymać, wyjść i tak dalej).
- GET /api/v1/portfolios
- Wszystkie twoje portfele z ich platformami.
- GET /api/v1/portfolios/{id}
- Jeden portfel.
- GET /api/v1/platform-types
- Fakty o każdym typie platformy: kraj, klasy aktywów, regulacje, rok założenia. Takie same dla każdego użytkownika.
Parametry zapytania
from, to- Tylko dla
timeseries. Dni w formacieYYYY-MM-DD, oba włącznie. Przymonthalboyearrozszerzają się do pełnych okresów. Salda i tak liczą się od pierwszego dnia twoich danych, więc późniejszefromich nie zeruje. granularity- Tylko dla
timeseries.day(domyślnie),monthalboyear. Datą punktu jest ostatni dzień jego okresu. Dzień albo okres bez danych nie ma żadnego punktu, więc nie licz na zera. year- Tylko dla
tax. Rok kalendarzowy, np.2025. Platformy bez danych w tym roku są pomijane.
Każde pole każdej odpowiedzi jest opisane w dokumencie OpenAPI. Czytają go narzędzia takie jak Postman czy Swagger UI, a generatory kodu potrafią zbudować z niego klienta.
Otwórz dokument OpenAPIDobrze wiedzieć
Zasady, które obowiązują dla każdego punktu końcowego.
Tylko odczyt
API czyta twoje dane i niczego nie zmienia. Importy i ustawienia nadal robisz w aplikacji.
Tak aktualne jak twój ostatni import
P2P Dash niczego nie pobiera z platform. API zwraca to, co zaimportowałeś albo wpisałeś ręcznie, a lastDate mówi, który dzień jest ostatnim z danymi.
60 zapytań, potem minuta przerwy
Na token. Licznik zaczyna od nowa dopiero wtedy, gdy token przez pełną minutę nie dostanie żadnego zapytania, więc skrypt, który pyta co kilka sekund, też trafi na limit. Wtedy dostajesz 429, a Retry-After mówi, ile sekund odczekać. Udane odpowiedzi pokazują w X-RateLimit-Remaining, ile ci zostało.
Kwoty w EUR
Przepływy pieniędzy takie jak deposit, withdrawal czy fee są zawsze dodatnie; kierunek wynika z nazwy. Salda i netIncome mogą spaść poniżej zera. XIRR i cash drag to ułamki (0.075 to 7,5%), a indeks wolności kapitału ma skalę od 0 do 100.
Daty w UTC
Dni jako YYYY-MM-DD, momenty w czasie jako ISO 8601. Dzień to dzień z eksportu, strefy czasowe go nie przesuwają.
Tokeny
Do 10 aktywnych tokenów na konto, ważnych „30 dni”, „90 dni”, „1 rok” albo bez wygaśnięcia („Nigdy”). Kliknij „Unieważnij” na stronie tokenów, a token od razu przestanie działać.
Gdy coś pójdzie nie tak
Błędy wracają jako JSON ze stałym error.code. Sprawdzaj kod, a nie komunikat: komunikat może się zmienić, kody zostają.
| Status | Kod i znaczenie |
|---|---|
| 400 | invalid_requestKtóryś parametr jest błędny. |
| 401 | unauthorizedBrakuje tokena, jest źle wpisany, unieważniony albo wygasł. |
| 403 | insufficient_scopeToken nie ma prawa odczytu tej części API. |
| 404 | not_foundTaka ścieżka nie istnieje albo ID nie należy do żadnej twojej platformy ani portfela. |
| 429 | rate_limited60 zapytań bez minuty przerwy. Odczekaj tyle sekund, ile podaje |
| 500 | internal_errorBłąd po naszej stronie. Spróbuj później, a jeśli to się powtarza, napisz do nas. |
Są jeszcze dwa kody 403, forbidden i plan_required. Na zwykłym koncie ich nie zobaczysz.
Przykład: data, która nie istnieje
curl "https://app.p2pdash.com/api/v1/account/timeseries?from=2025-02-30" \
-H "Authorization: Bearer $P2PDASH_TOKEN"{
"error": {
"code": "invalid_request",
"message": "Not a valid calendar date",
"details": [
{
"field": "from",
"message": "Not a valid calendar date"
}
]
}
}Pytania o API
Zanim wyślesz pierwsze zapytanie.
Czy API coś kosztuje?
Nie. Tak jak aplikacja, jest teraz darmowe dla każdego konta.
Czy mogę importować transakcje przez API?
Jeszcze nie. API tylko odczytuje dane. Eksporty nadal wgrywasz w aplikacji.
Czy muszę umieć programować?
Niewiele. Przykład z Google Sheets to kopiuj i wklej, a zapytanie curl działa w terminalu na macOS i Linuksie. Do czegoś więcej przyda się trochę Pythona albo JavaScriptu.
Co się stanie, jeśli ktoś zdobędzie mój token?
Odczyta twoje liczby z P2P Dash, ale niczego nie zmieni i nigdy nie zobaczy twojego e-maila ani hasła. Unieważnij token na stronie tokenów, a od razu przestanie działać.
Czy API się zmieni?
Tak, może. To pierwsza wersja i pola albo punkty końcowe mogą się jeszcze zmienić bez nowego numeru wersji. Jeśli coś na nim budujesz, licz się z tym, że od czasu do czasu trzeba będzie to poprawić.
Czy mogę pobrać dane innych użytkowników?
Nie. Token zawsze czyta tylko dane konta, które go utworzyło. Jedyny wyjątek to lista typów platform, która zawiera publiczne fakty o platformach.
Utwórz swój pierwszy token
Zaloguj się, otwórz „Tokeny API” w menu użytkownika i wyślij pierwsze zapytanie.
Przejdź do tokenów APINie masz jeszcze konta? Zarejestruj się za darmo i najpierw zaimportuj eksport, inaczej API nie będzie miało czego pokazać.