curl --request GET \
--url https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>'import requests
url = "https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history"
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"API-Nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'API-Key': '<api-key>', 'API-Sign': '<api-key>', 'API-Nonce': '<api-key>'}
};
fetch('https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history', 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://api.services.payward.com/v1/accounts/{account_id}/portfolio/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"API-Nonce: <api-key>",
"API-Sign: <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://api.services.payward.com/v1/accounts/{account_id}/portfolio/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
req.Header.Add("API-Nonce", "<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://api.services.payward.com/v1/accounts/{account_id}/portfolio/history")
.header("API-Key", "<api-key>")
.header("API-Sign", "<api-key>")
.header("API-Nonce", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
request["API-Sign"] = '<api-key>'
request["API-Nonce"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"timestamp": "2025-01-01T00:00:00Z",
"assets": [
{
"symbol": "XBT",
"type": "crypto",
"amount": "0.50000000"
},
{
"symbol": "USD",
"type": "fiat",
"amount": "100.00"
},
{
"symbol": "TSLAx",
"type": "xstock",
"amount": "2.00000000"
}
],
"value": "20000.50",
"total_pnl": "100.00"
},
{
"timestamp": "2025-06-01T00:00:00Z",
"assets": [
{
"symbol": "XBT",
"type": "crypto",
"amount": "0.50000000"
},
{
"symbol": "USD",
"type": "fiat",
"amount": "100.00"
},
{
"symbol": "TSLAx",
"type": "xstock",
"amount": "2.50000000"
}
],
"value": "22500.75",
"total_pnl": "2600.25"
},
{
"timestamp": "2025-12-31T00:00:00Z",
"assets": [
{
"symbol": "XBT",
"type": "crypto",
"amount": "0.55000000"
},
{
"symbol": "USD",
"type": "fiat",
"amount": "150.00"
},
{
"symbol": "TSLAx",
"type": "xstock",
"amount": "3.00000000"
}
],
"value": "25000.75",
"total_pnl": "5100.50"
}
],
"quote_symbol": "USD",
"quote_type": "fiat",
"start_timestamp": "2025-01-01T00:00:00Z",
"end_timestamp": "2025-12-31T00:00:00Z"
}{
"error": {
"causes": [
{
"field": "account_id",
"message": "must be a valid account identifier"
}
],
"status": 400,
"code": "bad_request",
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "unauthenticated",
"status": 401,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "forbidden",
"status": 403,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "not_found",
"status": 404,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "resource_exhausted",
"status": 429,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "internal",
"status": 500,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "unimplemented",
"status": 501,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "unavailable",
"status": 503,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "deadline_exceeded",
"status": 504,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}List portfolio history
Returns daily portfolio valuation snapshots for an account over the requested time window. Use assets to include per-asset balances for selected holdings.
curl --request GET \
--url https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>'import requests
url = "https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history"
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"API-Nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'API-Key': '<api-key>', 'API-Sign': '<api-key>', 'API-Nonce': '<api-key>'}
};
fetch('https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history', 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://api.services.payward.com/v1/accounts/{account_id}/portfolio/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"API-Nonce: <api-key>",
"API-Sign: <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://api.services.payward.com/v1/accounts/{account_id}/portfolio/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
req.Header.Add("API-Nonce", "<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://api.services.payward.com/v1/accounts/{account_id}/portfolio/history")
.header("API-Key", "<api-key>")
.header("API-Sign", "<api-key>")
.header("API-Nonce", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.services.payward.com/v1/accounts/{account_id}/portfolio/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
request["API-Sign"] = '<api-key>'
request["API-Nonce"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"timestamp": "2025-01-01T00:00:00Z",
"assets": [
{
"symbol": "XBT",
"type": "crypto",
"amount": "0.50000000"
},
{
"symbol": "USD",
"type": "fiat",
"amount": "100.00"
},
{
"symbol": "TSLAx",
"type": "xstock",
"amount": "2.00000000"
}
],
"value": "20000.50",
"total_pnl": "100.00"
},
{
"timestamp": "2025-06-01T00:00:00Z",
"assets": [
{
"symbol": "XBT",
"type": "crypto",
"amount": "0.50000000"
},
{
"symbol": "USD",
"type": "fiat",
"amount": "100.00"
},
{
"symbol": "TSLAx",
"type": "xstock",
"amount": "2.50000000"
}
],
"value": "22500.75",
"total_pnl": "2600.25"
},
{
"timestamp": "2025-12-31T00:00:00Z",
"assets": [
{
"symbol": "XBT",
"type": "crypto",
"amount": "0.55000000"
},
{
"symbol": "USD",
"type": "fiat",
"amount": "150.00"
},
{
"symbol": "TSLAx",
"type": "xstock",
"amount": "3.00000000"
}
],
"value": "25000.75",
"total_pnl": "5100.50"
}
],
"quote_symbol": "USD",
"quote_type": "fiat",
"start_timestamp": "2025-01-01T00:00:00Z",
"end_timestamp": "2025-12-31T00:00:00Z"
}{
"error": {
"causes": [
{
"field": "account_id",
"message": "must be a valid account identifier"
}
],
"status": 400,
"code": "bad_request",
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "unauthenticated",
"status": 401,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "forbidden",
"status": 403,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "not_found",
"status": 404,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "resource_exhausted",
"status": 429,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "internal",
"status": 500,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "unimplemented",
"status": 501,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "unavailable",
"status": 503,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}{
"error": {
"code": "deadline_exceeded",
"status": 504,
"type": "portfolio_error",
"instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
}
}Authorizations
Your public API key. Identifies the partner making the request.
HMAC signature over the request, computed with your private key.
Monotonically increasing nonce included in the request signature.
Path Parameters
Account ID
Query Parameters
Asset filters to include in the per-data-point breakdown. Each entry is a {symbol, type} pair. Empty or omitted returns no per-asset rows.
Show child attributes
Show child attributes
RFC 3339 timestamp.
RFC 3339 timestamp.
Quote asset symbol to denominate values in. Defaults to USD.
3 - 16Quote asset classification. Supports fiat and stablecoin.
fiat, stablecoin Response
Successful response
Response for ListPortfolioHistory.
Portfolio data points ordered by ascending timestamp. Always present; serialized as an empty array when there is no history in the window.
Show child attributes
Show child attributes
Quote asset the values are denominated in.
Quote asset classification. Supports fiat and stablecoin.
fiat, stablecoin RFC 3339 timestamp.
RFC 3339 timestamp.