Generate a proposal from verified tax lots and provider-backed prices without placing replacement trades.
/api/v2/investment/portfolios/{portfolio}/tax-harvestReplacement securities are explicitly user-supplied. FinanceGPT does not determine legal tax compliance.
investment:runThe playground uses deterministic isolated sandbox fixtures. It never queries production workspace data and does not require you to paste an API secret into the browser.
Sign in to run{
"data": {
"status": "draft",
"financial_action_executed": false
}
}curl -X POST \
https://equitygpt.app/api/v2/investment/portfolios/1/tax-harvest \
-H "Authorization: Bearer $FINANCEGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tax_regime":"customer_policy","tax_rate_pct":27,"replacement_symbols":{"AAA":"BBB"}}'import os, requests
url = "https://equitygpt.app/api/v2/investment/portfolios/1/tax-harvest"
headers = {"Authorization": f"Bearer {os.environ['FINANCEGPT_API_KEY']}"}
payload = {
"tax_regime": "customer_policy",
"tax_rate_pct": 27,
"replacement_symbols": {
"AAA": "BBB"
}
}
response = requests.request("POST", url, headers=headers, json=payload)
response.raise_for_status()
print(response.json())const response = await fetch('https://equitygpt.app/api/v2/investment/portfolios/1/tax-harvest', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.FINANCEGPT_API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"tax_regime":"customer_policy","tax_rate_pct":27,"replacement_symbols":{"AAA":"BBB"}})
});
if (!response.ok) throw new Error(`FinanceGPT ${response.status}`);
console.log(await response.json());<?php
$ch = curl_init('https://equitygpt.app/api/v2/investment/portfolios/1/tax-harvest');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => ['Authorization: Bearer '.getenv('FINANCEGPT_API_KEY'), 'Content-Type: application/json'], CURLOPT_POSTFIELDS => '{\"tax_regime\":\"customer_policy\",\"tax_rate_pct\":27,\"replacement_symbols\":{\"AAA\":\"BBB\"}}']);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) >= 400) throw new RuntimeException($response);
echo $response;Explorer gives immediate isolated sandbox access. Production plans require a commercial entitlement.
Create account