curl -X POST 'https://api.serialized.xyz/v1/wallet/pnl' \\
-H 'Authorization: YOUR_API_KEY' -H 'Content-Type: application/json' \\
-d '{"items":[{"wallet":"0xd13da05b9288ba4961973110594bd0fe3428791f"},{"wallet":"GuhieZDx6nwJV14WjeUQH2ted6CGPKoGCCTaPSPNgG2E","chain":"solana"}],"period":"7d"}'
{
"data": [
{
"data": {
"history": [
{
"at": 1788307200000,
"realizedPnlUsd": 1140.85094,
"trades": 2
},
{
"at": 1788310800000,
"realizedPnlUsd": 2788.333763,
"trades": 4
},
{
"at": 1788314400000,
"realizedPnlUsd": 21605.963131,
"trades": 34
}
],
"summary": {
"realizedPnlUsd": 7349355.754098,
"winRate": 99.774218,
"trades": 9305,
"wins": 9280,
"losses": 21
}
}
},
{
"data": {
"usdBasis": "trade",
"history": [],
"summary": {
"realizedPnlUsd": 0,
"winRate": null,
"trades": 0,
"wins": 0,
"losses": 0
}
}
}
],
"meta": {
"asOf": 1788937658898
}
}
Wallet PnL
Wallet PnL: batch
Batch twin: up to 20 wallets per call, response array in input order. Each slot is { data }, the body of the single GET for that wallet (PnL curve (daily buckets on 30d and all, hourly on 1d and 7d) plus summary), or { error } when that wallet failed, so one wallet never fails the others. period applies to every wallet of the call. Billed per wallet.
POST
/
v1
/
wallet
/
pnl
curl -X POST 'https://api.serialized.xyz/v1/wallet/pnl' \\
-H 'Authorization: YOUR_API_KEY' -H 'Content-Type: application/json' \\
-d '{"items":[{"wallet":"0xd13da05b9288ba4961973110594bd0fe3428791f"},{"wallet":"GuhieZDx6nwJV14WjeUQH2ted6CGPKoGCCTaPSPNgG2E","chain":"solana"}],"period":"7d"}'
{
"data": [
{
"data": {
"history": [
{
"at": 1788307200000,
"realizedPnlUsd": 1140.85094,
"trades": 2
},
{
"at": 1788310800000,
"realizedPnlUsd": 2788.333763,
"trades": 4
},
{
"at": 1788314400000,
"realizedPnlUsd": 21605.963131,
"trades": 34
}
],
"summary": {
"realizedPnlUsd": 7349355.754098,
"winRate": 99.774218,
"trades": 9305,
"wins": 9280,
"losses": 21
}
}
},
{
"data": {
"usdBasis": "trade",
"history": [],
"summary": {
"realizedPnlUsd": 0,
"winRate": null,
"trades": 0,
"wins": 0,
"losses": 0
}
}
}
],
"meta": {
"asOf": 1788937658898
}
}
POST /v1/wallet/pnl · 1 per wallet credits
Batch twin: up to 20 wallets per call, response array in input order. Each slot is { data }, the body of the single GET for that wallet (PnL curve (daily buckets on 30d and all, hourly on 1d and 7d) plus summary), or { error } when that wallet failed, so one wallet never fails the others. period applies to every wallet of the call. Billed per wallet.
A slot’s
data is exactly what GET /v1/wallet/pnl returns for that wallet with the same period, usdBasis included on Solana; see that page for the fields.curl -X POST 'https://api.serialized.xyz/v1/wallet/pnl' \\
-H 'Authorization: YOUR_API_KEY' -H 'Content-Type: application/json' \\
-d '{"items":[{"wallet":"0xd13da05b9288ba4961973110594bd0fe3428791f"},{"wallet":"GuhieZDx6nwJV14WjeUQH2ted6CGPKoGCCTaPSPNgG2E","chain":"solana"}],"period":"7d"}'
{
"data": [
{
"data": {
"history": [
{
"at": 1788307200000,
"realizedPnlUsd": 1140.85094,
"trades": 2
},
{
"at": 1788310800000,
"realizedPnlUsd": 2788.333763,
"trades": 4
},
{
"at": 1788314400000,
"realizedPnlUsd": 21605.963131,
"trades": 34
}
],
"summary": {
"realizedPnlUsd": 7349355.754098,
"winRate": 99.774218,
"trades": 9305,
"wins": 9280,
"losses": 21
}
}
},
{
"data": {
"usdBasis": "trade",
"history": [],
"summary": {
"realizedPnlUsd": 0,
"winRate": null,
"trades": 0,
"wins": 0,
"losses": 0
}
}
}
],
"meta": {
"asOf": 1788937658898
}
}
Authorizations
Your raw API key (not needed on the demo server).
Body
application/json
[{ "wallet": "…", "chain": "…" }] - 1 to 20 wallets, EVM and Solana mixed freely; chain optional (omit for all EVM chains).
Required array length:
1 - 20 elementsShow child attributes
Show child attributes
Same as the GET, applied to every wallet: 1d, 7d, 30d (default) or all.
Available options:
1d, 7d, 30d, all Example:
"30d"
Response
200
Standard { data, meta } envelope.