L'API di P2P Dash
I dati del tuo portafoglio P2P in JSON, per un foglio di calcolo, uno script o una dashboard tutta tua. Crei un token nel tuo account, lo mandi con ogni richiesta e ricevi gli stessi numeri che vedi in P2P Dash.
La tua prima richiesta
Tre passaggi in un terminale su macOS o Linux. Se preferisci partire da Google Sheets, più sotto trovi l'esempio giusto.
Crea un token
In P2P Dash apri il menu utente e vai su «Token API». Dai un nome al token, imposta «I tuoi dati» su «Lettura» e scegli quando scade. Il token lo vedi una volta sola, quindi copialo subito.
Tienilo fuori dal codice
Mettilo in una variabile d'ambiente, qui P2PDASH_TOKEN, non in un file che condividi. Chiunque abbia il token può leggere i tuoi numeri.
Manda una richiesta
Ogni richiesta porta il token nell'header Authorization. La risposta è JSON, con i tuoi dati sotto data.
export P2PDASH_TOKEN="p2pdash_..."
curl https://app.p2pdash.com/api/v1/account/summary \
-H "Authorization: Bearer $P2PDASH_TOKEN"Su Windows in PowerShell imposta il token con $env:P2PDASH_TOKEN = "p2pdash_...", scrivi curl.exe invece di curl, metti la richiesta su una sola riga e usa $env:P2PDASH_TOKEN nell'header.
{
"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
}
}Sono numeri di esempio. totalBalance è quanto vale il tuo account: depositi meno prelievi più tutto quello che hai guadagnato, al netto di commissioni, tasse e perdite.
Esempi
Quattro cose che puoi fare con l'API. Copia il codice, imposta il tuo token e adattalo da lì.
Il tuo saldo in Google Sheets
Nel tuo foglio apri Estensioni → Apps Script e incolla questa funzione. In Impostazioni progetto → Proprietà script aggiungi P2PDASH_TOKEN con il tuo token. Poi scrivi la formula in una cella. Funziona con qualsiasi campo del riepilogo, per esempio "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 tiene il risultato e richiede i dati solo quando cambia la formula. Per aggiornare, aggiungi un secondo argomento come =P2PDASH("totalBalance", A1) e cambia A1. Ogni cella è una richiesta. Chi può modificare il foglio può anche leggere il token in Apps Script, quindi non farlo in un foglio che altri possono modificare.
Interessi al mese
La serie temporale con granularity=month ti dà un punto per ogni mese con dati. Installa la libreria una volta con 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 per piattaforma
Salva il codice come xirr.mjs ed esegui node xirr.mjs (Node.js 18 o successivo). Lo XIRR arriva come frazione: 0.0984 vuol dire 9,84% all'anno. Una piattaforma senza abbastanza dati riceve 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 -I numeri per la dichiarazione dei redditi
Interessi e bonus per piattaforma in un anno, accorciati con jq. Cosa conta come reddito dipende dalle regole del tuo paese; l'API mostra solo quello che c'è in 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
}Cosa puoi leggere
L'account intero, ogni portafoglio e ogni piattaforma rispondono alle stesse cinque domande. Le impari una volta e puoi farle a ogni livello.
Le cinque viste
Ogni vista esiste in tre versioni. Per una piattaforma prendi prima il suo ID da /api/v1/platforms, poi mettilo al posto di {id}. Con i portafogli funziona allo stesso modo.
summaryI totali dall'inizio: interessi, bonus, commissioni, perdite, depositi, prelievi e i saldi che ne derivano.
- Tutto l'account
- GET /api/v1/account/summary
- Un portafoglio
- GET /api/v1/portfolios/{id}/summary
- Una piattaforma
- GET /api/v1/platforms/{id}/summary
timeseriesGli stessi numeri nel tempo, per giorno, mese o anno, con il saldo alla fine di ogni periodo. Comodo per i grafici.
- Tutto l'account
- GET /api/v1/account/timeseries
- Un portafoglio
- GET /api/v1/portfolios/{id}/timeseries
- Una piattaforma
- GET /api/v1/platforms/{id}/timeseries
metricsXIRR (dall'inizio e per anno, con e senza bonus), cash drag, saldo investito medio e indice di libertà del capitale, per piattaforma e in totale.
- Tutto l'account
- GET /api/v1/account/metrics
- Un portafoglio
- GET /api/v1/portfolios/{id}/metrics
- Una piattaforma
- GET /api/v1/platforms/{id}/metrics
income-projectionQuanto renderebbe il tuo saldo attuale al giorno, al mese e all'anno con il tuo XIRR passato senza bonus. Una proiezione, non una promessa.
- Tutto l'account
- GET /api/v1/account/income-projection
- Un portafoglio
- GET /api/v1/portfolios/{id}/income-projection
- Una piattaforma
- GET /api/v1/platforms/{id}/income-projection
taxInteressi, bonus, tasse trattenute, commissioni e perdite per piattaforma e anno solare, a partire dall'anno più recente.
- Tutto l'account
- GET /api/v1/account/tax
- Un portafoglio
- GET /api/v1/portfolios/{id}/tax
- Una piattaforma
- GET /api/v1/platforms/{id}/tax
Elenchi e dettagli
- GET /api/v1/account
- Quale token stai usando, i suoi ambiti e quando scade. Utile per controllare che un token funzioni ancora.
- GET /api/v1/platforms
- Tutte le tue piattaforme con ID, portafogli e totali. Parti da qui per trovare gli ID.
- GET /api/v1/platforms/{id}
- Una piattaforma, lo stesso oggetto dell'elenco.
- GET /api/v1/platforms/{id}/intent-history
- Quando hai cambiato i tuoi piani per una piattaforma (aumentare, mantenere, uscire e così via).
- GET /api/v1/portfolios
- Tutti i tuoi portafogli con le loro piattaforme.
- GET /api/v1/portfolios/{id}
- Un portafoglio.
- GET /api/v1/platform-types
- Dati per tipo di piattaforma: paese, classi di attivi, regolamentazione, anno di fondazione. Uguali per tutti gli utenti.
Parametri di query
from, to- Solo per
timeseries. Giorni nel formatoYYYY-MM-DD, estremi inclusi. Conmonthoyearsi allargano ai periodi interi. I saldi contano comunque dal tuo primo giorno di dati, quindi unfrompiù tardo non li azzera. granularity- Solo per
timeseries.day(predefinito),monthoyear. La data di un punto è l'ultimo giorno del suo periodo. Un giorno o un periodo senza dati non ha nessun punto, quindi non aspettarti degli zeri. year- Solo per
tax. Un anno solare come2025. Le piattaforme senza dati in quell'anno non compaiono.
Ogni campo di ogni risposta è descritto nel documento OpenAPI. Strumenti come Postman o Swagger UI sanno leggerlo e i generatori di codice possono crearne un client.
Apri il documento OpenAPIBuono a sapersi
Le regole che valgono per tutti gli endpoint.
Sola lettura
L'API legge i tuoi dati e non cambia niente. Import e impostazioni restano nell'app.
Aggiornata quanto il tuo ultimo import
P2P Dash non scarica niente dalle piattaforme. L'API restituisce quello che hai importato o inserito a mano, e lastDate ti dice l'ultimo giorno con dati.
60 richieste, poi un minuto di pausa
Per token. Il conteggio riparte da zero solo dopo un minuto intero senza nessuna richiesta con quel token, quindi anche uno script che chiede ogni pochi secondi arriva al limite. A quel punto ricevi un 429, e Retry-After ti dice quanti secondi aspettare. Le risposte andate a buon fine mostrano quante ne restano in X-RateLimit-Remaining.
Importi in EUR
I movimenti di denaro come deposit, withdrawal o fee sono sempre positivi; la direzione sta nel nome. I saldi e netIncome possono andare sotto zero. XIRR e cash drag sono frazioni (0.075 è il 7,5%), l'indice di libertà del capitale va da 0 a 100.
Date in UTC
Giorni come YYYY-MM-DD, istanti come ISO 8601. Un giorno è quello dell'export, senza fusi orari che lo spostano.
Token
Fino a 10 token attivi per account, validi «30 giorni», «90 giorni», «1 anno» o senza scadenza («Mai»). Con «Revoca» nella pagina dei token, il token smette subito di funzionare.
Quando qualcosa va storto
Gli errori tornano come JSON con un error.code fisso. Controlla il codice, non il messaggio: il messaggio può cambiare, i codici restano.
| Stato | Codice e significato |
|---|---|
| 400 | invalid_requestUn parametro è sbagliato. |
| 401 | unauthorizedIl token manca, è scritto male, è stato revocato o è scaduto. |
| 403 | insufficient_scopeIl token non ha il permesso di leggere questa parte dell'API. |
| 404 | not_foundIl percorso non esiste, oppure l'ID non corrisponde a nessuna delle tue piattaforme o dei tuoi portafogli. |
| 429 | rate_limited60 richieste senza un minuto di pausa. Aspetta i secondi indicati da |
| 500 | internal_errorErrore nostro. Riprova più tardi e, se continua a succedere, scrivici. |
Esistono altri due codici 403, forbidden e plan_required. Con un account normale non li vedrai.
Esempio: una data che non esiste
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"
}
]
}
}Domande sull'API
Prima della tua prima richiesta.
L'API costa qualcosa?
No. Come l'app, per ora è gratis per tutti gli account.
Posso importare transazioni tramite l'API?
Non ancora. L'API legge e basta. Gli export li carichi sempre nell'app.
Devo saper programmare?
Non molto. L'esempio per Google Sheets è un copia e incolla, e la richiesta curl gira nel terminale su macOS e Linux. Per tutto il resto aiuta un po' di Python o JavaScript.
Cosa succede se qualcuno mette le mani sul mio token?
Può leggere i tuoi numeri di P2P Dash, ma non può cambiare niente e non vede mai la tua email né la tua password. Revoca il token nella pagina dei token e smette subito di funzionare.
L'API cambierà?
Sì, può succedere. Questa è la prima versione e campi o endpoint possono ancora cambiare senza un nuovo numero di versione. Se ci costruisci sopra qualcosa, metti in conto di doverlo adattare ogni tanto.
Posso leggere i dati di altri utenti?
No. Un token legge sempre e solo i dati dell'account che l'ha creato. L'unica eccezione è l'elenco dei tipi di piattaforma, che contiene dati pubblici sulle piattaforme.
Crea il tuo primo token
Accedi, apri «Token API» nel menu utente e manda la tua prima richiesta.
Vai ai token APINon hai ancora un account? Registrati gratis e importa prima un export, altrimenti l'API non ha niente da mostrare.