PrisijungtiRegistruotis

P2P Dash API

Tavo P2P portfelio duomenys JSON formatu, skaičiuoklei, scenarijui ar savo valdymo skydui. Paskyroje susikuri raktą, siunti jį su kiekviena užklausa ir gauni tuos pačius skaičius, kuriuos matai P2P Dash.

Tik skaitymuiNemokamaPirmoji versija

Tavo pirmoji užklausa

Trys žingsniai terminale macOS ar Linux sistemoje. Jei mieliau pradėtum nuo Google Sheets, žemiau rasi pavyzdį ir tam.

1

Sukurk raktą

P2P Dash atidaryk naudotojo meniu ir eik į „API prieigos raktai“. Pavadink raktą, prie „Tavo duomenys“ pasirink „Skaitymas“ ir nustatyk, kada jis nustos galioti. Raktą parodome tik vieną kartą, tad nukopijuok jį iškart.

2

Nelaikyk jo kode

Įrašyk jį į aplinkos kintamąjį, čia P2PDASH_TOKEN, o ne į failą, kuriuo dalijiesi. Kas turi raktą, tas gali perskaityti tavo skaičius.

3

Išsiųsk užklausą

Kiekviena užklausa neša raktą antraštėje Authorization. Atsakymas ateina JSON formatu, o tavo duomenys yra po data.

Užklausa
export P2PDASH_TOKEN="p2pdash_..."

curl https://app.p2pdash.com/api/v1/account/summary \
  -H "Authorization: Bearer $P2PDASH_TOKEN"

Windows sistemos PowerShell lange raktą nustatyk komanda $env:P2PDASH_TOKEN = "p2pdash_...", vietoj curl rašyk curl.exe, visą užklausą surašyk vienoje eilutėje, o antraštėje naudok $env:P2PDASH_TOKEN.

Atsakymas
{
  "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
  }
}

Tai pavyzdiniai skaičiai. totalBalance yra tavo paskyros vertė: įnašai minus išėmimai plius viskas, ką uždirbai, atskaičius komisinius, mokesčius ir nuostolius.

Pavyzdžiai

Keturi dalykai, kuriuos gali padaryti su API. Nukopijuok kodą, nustatyk savo raktą ir pritaikyk sau.

Tavo balansas Google Sheets

Savo lentelėje atidaryk Extensions → Apps Script ir įklijuok šią funkciją. Skiltyje Project settings → Script properties pridėk P2PDASH_TOKEN su savo raktu. Tada įrašyk formulę į langelį. Tinka bet kuris suvestinės laukas, pvz., "netIncome".

Google Apps Script
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];
}
Rezultatas
=P2PDASH("totalBalance")   →  12233.5

Sheets įsimena rezultatą ir klausia iš naujo tik pasikeitus formulei. Jei nori atnaujinti, pridėk antrą argumentą, pvz., =P2PDASH("totalBalance", A1), ir pakeisk A1. Kiekvienas langelis yra viena užklausa. Kas gali redaguoti lentelę, tas Apps Script gali perskaityti ir raktą, tad nedaryk to lentelėje, kurią redaguoja kiti.

Palūkanos per mėnesį

Laiko eilutė su granularity=month duoda po vieną tašką kiekvienam mėnesiui, kuriame yra duomenų. Biblioteką vieną kartą įdiek komanda pip install requests.

Python
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}")
Rezultatas
2026-08 94.80
2026-09 96.42
2026-10 98.15

XIRR pagal platformą

Išsaugok tai kaip xirr.mjs ir paleisk node xirr.mjs (Node.js 18 ar naujesnė). XIRR pateikiamas trupmena: 0.0984 reiškia 9,84 % per metus. Platforma, kuriai trūksta duomenų, gauna null.

JavaScript (Node.js)
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);
}
Rezultatas
Platform A   9.84%
Platform B   10.37%
Platform C   11.20%
Platform D   -

Skaičiai mokesčių deklaracijai

Palūkanos ir premijos pagal platformą už vienus metus, sutrumpintos su jq. Kurios iš jų laikomos pajamomis, priklauso nuo tavo šalies taisyklių; API rodo tik tai, kas yra P2P Dash.

curl + jq
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}'
Rezultatas
{
  "name": "Platform A",
  "interest": 412.37,
  "bonus": 25
}
{
  "name": "Platform B",
  "interest": 288.9,
  "bonus": 0
}

Ką gali perskaityti

Visa paskyra, kiekvienas portfelis ir kiekviena platforma atsako į tuos pačius penkis klausimus. Išmok juos kartą ir galėsi užduoti bet kuriame lygyje.

Penki rodiniai

Kiekvienas rodinys yra trijų variantų. Vienai platformai pirmiausia gauk jos ID iš /api/v1/platforms, tada įrašyk jį vietoj {id}. Su portfeliais viskas taip pat.

summary

Viso laikotarpio sumos: palūkanos, premijos, komisiniai, nuostoliai, įnašai, išėmimai ir iš jų išeinantys balansai.

Visa paskyra
GET /api/v1/account/summary
Vienas portfelis
GET /api/v1/portfolios/{id}/summary
Viena platforma
GET /api/v1/platforms/{id}/summary
timeseries

Tie patys skaičiai laike, pagal dieną, mėnesį ar metus, su balansu kiekvieno laikotarpio pabaigoje. Tinka grafikams.

Visa paskyra
GET /api/v1/account/timeseries
Vienas portfelis
GET /api/v1/portfolios/{id}/timeseries
Viena platforma
GET /api/v1/platforms/{id}/timeseries
metrics

XIRR (viso laikotarpio ir kiekvienų metų, su premijomis ir be jų), cash drag, vidutinis investuotas balansas ir kapitalo laisvės indeksas, kiekvienai platformai ir bendrai.

Visa paskyra
GET /api/v1/account/metrics
Vienas portfelis
GET /api/v1/portfolios/{id}/metrics
Viena platforma
GET /api/v1/platforms/{id}/metrics
income-projection

Kiek tavo dabartinis balansas uždirbtų per dieną, mėnesį ir metus pagal tavo ankstesnį XIRR be premijų. Tai prognozė, ne pažadas.

Visa paskyra
GET /api/v1/account/income-projection
Vienas portfelis
GET /api/v1/portfolios/{id}/income-projection
Viena platforma
GET /api/v1/platforms/{id}/income-projection
tax

Palūkanos, premijos, išskaičiuoti mokesčiai, komisiniai ir nuostoliai pagal platformą ir kalendorinius metus, naujausi metai pirmi.

Visa paskyra
GET /api/v1/account/tax
Vienas portfelis
GET /api/v1/portfolios/{id}/tax
Viena platforma
GET /api/v1/platforms/{id}/tax

Sąrašai ir išsami informacija

GET /api/v1/account
Kurį raktą naudoji, kokios jo teisės ir kada jis nustoja galioti. Patogu patikrinti, ar raktas dar veikia.
GET /api/v1/platforms
Visos tavo platformos su ID, portfeliais ir sumomis. Pradėk nuo čia, kad sužinotum ID.
GET /api/v1/platforms/{id}
Viena platforma, tas pats objektas kaip sąraše.
GET /api/v1/platforms/{id}/intent-history
Kada keitei savo planą platformai (didinti, laikyti, pasitraukti ir pan.).
GET /api/v1/portfolios
Visi tavo portfeliai su jų platformomis.
GET /api/v1/portfolios/{id}
Vienas portfelis.
GET /api/v1/platform-types
Faktai apie kiekvieną platformos tipą: šalis, turto klasės, reguliavimas, įkūrimo metai. Visiems naudotojams vienodi.

Užklausos parametrai

from, to
Tik timeseries. Dienos formatu YYYY-MM-DD, abi imtinai. Su month ar year jos išsiplečia iki pilnų laikotarpių. Balansai vis tiek skaičiuojami nuo pirmosios tavo duomenų dienos, tad vėlesnis from jų nenunulina.
granularity
Tik timeseries. day (numatytasis), month arba year. Taško data yra paskutinė jo laikotarpio diena. Diena ar laikotarpis be duomenų neturi jokio taško, tad nulių nesitikėk.
year
Tik tax. Kalendoriniai metai, pvz., 2025. Platformos be duomenų tais metais praleidžiamos.

Kiekvienas kiekvieno atsakymo laukas aprašytas OpenAPI dokumente. Jį gali nuskaityti tokie įrankiai kaip Postman ar Swagger UI, o kodo generatoriai gali iš jo sukurti klientą.

Atidaryti OpenAPI dokumentą

Verta žinoti

Taisyklės, galiojančios kiekvienam galiniam taškui.

Tik skaitymui

API skaito tavo duomenis ir nieko nekeičia. Importai ir nustatymai, kaip ir anksčiau, atliekami programėlėje.

Tiek aktualu, kiek tavo paskutinis importas

P2P Dash nieko neparsisiunčia iš platformų. API grąžina tai, ką importavai ar įvedei ranka, o lastDate parodo paskutinę dieną su duomenimis.

60 užklausų, tada minutės pertrauka

Vienam raktui. Skaičiavimas prasideda iš naujo tik tada, kai raktas visą minutę negauna nė vienos užklausos, todėl ir kas kelias sekundes klausiantis scenarijus pasieks ribą. Tada gausi 429, o Retry-After pasakys, kiek sekundžių palaukti. Sėkminguose atsakymuose X-RateLimit-Remaining rodo, kiek dar liko.

Sumos eurais (EUR)

Pinigų srautai, tokie kaip deposit, withdrawal ar fee, visada teigiami; kryptis aiški iš pavadinimo. Balansai ir netIncome gali nukristi žemiau nulio. XIRR ir cash drag yra trupmenos (0.075 yra 7,5 %), o kapitalo laisvės indeksas yra nuo 0 iki 100.

Datos UTC

Dienos kaip YYYY-MM-DD, laiko momentai kaip ISO 8601. Diena yra ta diena, kuri nurodyta eksporte, laiko juostos jos nepastumia.

Raktai

Iki 10 aktyvių raktų vienai paskyrai, galiojančių „30 dienų“, „90 dienų“, „1 metai“ arba be pabaigos („Niekada“). Raktų puslapyje paspausk „Atšaukti“, ir raktas iškart nustos veikti.

Kai kas nors nepavyksta

Klaidos grįžta JSON formatu su pastoviu error.code. Tikrink kodą, ne pranešimą: pranešimas gali keistis, kodai lieka.

BūsenaKodas ir reikšmė
400invalid_request

Kuris nors parametras neteisingas. details nurodo kiekvieną lauką ir kas su juo negerai.

401unauthorized

Rakto nėra, jis įvestas su klaida, atšauktas arba nebegalioja.

403insufficient_scope

Raktas neturi teisės skaityti šios API dalies.

404not_found

Tokio kelio nėra arba ID nepriklauso nė vienai tavo platformai ar portfeliui.

429rate_limited

60 užklausų be minutės pertraukos. Palauk tiek sekundžių, kiek nurodo Retry-After.

500internal_error

Klaida mūsų pusėje. Bandyk vėliau, o jei kartojasi, parašyk mums.

Yra dar du 403 kodai, forbidden ir plan_required. Su įprasta paskyra jų nepamatysi.

Pavyzdys: neegzistuojanti data

Užklausa
curl "https://app.p2pdash.com/api/v1/account/timeseries?from=2025-02-30" \
  -H "Authorization: Bearer $P2PDASH_TOKEN"
Atsakymas
{
  "error": {
    "code": "invalid_request",
    "message": "Not a valid calendar date",
    "details": [
      {
        "field": "from",
        "message": "Not a valid calendar date"
      }
    ]
  }
}

Klausimai apie API

Prieš pirmąją užklausą.

Ar API kainuoja?

Ne. Kaip ir programėlė, šiuo metu ji nemokama kiekvienai paskyrai.

Ar galiu importuoti operacijas per API?

Kol kas ne. API tik skaito. Eksportus vis dar įkeli programėlėje.

Ar reikia mokėti programuoti?

Nedaug. Google Sheets pavyzdys yra kopijuok ir įklijuok, o curl užklausa veikia terminale macOS ir Linux sistemose. Kam nors daugiau pravers šiek tiek Python ar JavaScript.

Kas nutiks, jei kas nors gaus mano raktą?

Jis galės perskaityti tavo P2P Dash skaičius, bet nieko negalės pakeisti ir niekada nepamatys tavo el. pašto ar slaptažodžio. Atšauk raktą raktų puslapyje, ir jis iškart nustos veikti.

Ar API keisis?

Taip, gali. Tai pirmoji versija, tad laukai ar galiniai taškai dar gali pasikeisti be naujo versijos numerio. Jei ką nors ant jos kuri, tikėkis, kad kartais teks pataisyti.

Ar galiu gauti kitų naudotojų duomenis?

Ne. Raktas visada skaito tik tos paskyros, kuri jį sukūrė, duomenis. Vienintelė išimtis yra platformų tipų sąrašas, kuriame yra vieši faktai apie platformas.

Sukurk savo pirmąjį raktą

Prisijunk, naudotojo meniu atidaryk „API prieigos raktai“ ir išsiųsk pirmąją užklausą.

Eiti į API prieigos raktus

Dar neturi paskyros? Užsiregistruok nemokamai ir pirmiausia importuok eksportą, kitaip API neturės ką parodyti.