Summary
GET /portfolio/v1/positions/{address} is returning 200 OK with an empty payload shape for multiple wallets:
elements: []
fetcherReports: []
tokenInfo: {}
This happens consistently even for the wallet used in docs examples, which suggests a backend/indexing issue (or behavior drift) rather than a wallet-specific empty state.
Environment
- Date: 2026-02-26
- Region observed from response headers:
x-amz-cf-pop: SIN2-P4
- Auth: valid
x-api-key (without key request returns 401 Unauthorized as expected)
- Endpoint:
https://api.jup.ag/portfolio/v1/positions/{address}
Reproduction
- Call:
GET https://api.jup.ag/portfolio/v1/positions/Hh2WB6rQu1vAFyRa25opVyYXgCYXrMXfeTTNxw6s68pv
GET https://api.jup.ag/portfolio/v1/positions/8NppHjP2E1FL6x29r3XrLA8SYfK5VQsjhxTFJxnvXocc
GET https://api.jup.ag/portfolio/v1/positions/jdocuPgEAjMfihABsPgKEvYtsmMzjUHeq9LX4Hvs7f3 (docs sample wallet)
- Include header
x-api-key: <valid key>
- Observe response shape.
Observed response shape (all 3)
{
"owner": "...",
"date": 1772092xxxxxx,
"duration": 199-250,
"elements": [],
"fetcherReports": [],
"tokenInfo": {}
}
Additional checks
/portfolio/v1/platforms returns 200 with 7 platforms.
/portfolio/v1/staked-jup/{address} returns 200 (zero staked for tested wallets).
- Calls without API key correctly return:
{"code":401,"message":"Unauthorized"}
- Repeated requests (3 retries with backoff) return the same empty shape.
Why this seems suspicious
- Empty
elements can be valid, but empty fetcherReports and empty tokenInfo for multiple wallets + docs sample wallet suggests fetchers may not be running or payload assembly changed.
- This also blocks diagnostics because API gives no per-fetcher status.
Request
Could you confirm whether this behavior is expected right now, or if Portfolio indexing/fetchers are degraded for this endpoint? If expected, please document the new semantics for fetcherReports and empty payload handling in the Portfolio docs.
Summary
GET /portfolio/v1/positions/{address}is returning200 OKwith an empty payload shape for multiple wallets:elements: []fetcherReports: []tokenInfo: {}This happens consistently even for the wallet used in docs examples, which suggests a backend/indexing issue (or behavior drift) rather than a wallet-specific empty state.
Environment
x-amz-cf-pop: SIN2-P4x-api-key(without key request returns401 Unauthorizedas expected)https://api.jup.ag/portfolio/v1/positions/{address}Reproduction
GET https://api.jup.ag/portfolio/v1/positions/Hh2WB6rQu1vAFyRa25opVyYXgCYXrMXfeTTNxw6s68pvGET https://api.jup.ag/portfolio/v1/positions/8NppHjP2E1FL6x29r3XrLA8SYfK5VQsjhxTFJxnvXoccGET https://api.jup.ag/portfolio/v1/positions/jdocuPgEAjMfihABsPgKEvYtsmMzjUHeq9LX4Hvs7f3(docs sample wallet)x-api-key: <valid key>Observed response shape (all 3)
{ "owner": "...", "date": 1772092xxxxxx, "duration": 199-250, "elements": [], "fetcherReports": [], "tokenInfo": {} }Additional checks
/portfolio/v1/platformsreturns200with7platforms./portfolio/v1/staked-jup/{address}returns200(zero staked for tested wallets).{"code":401,"message":"Unauthorized"}Why this seems suspicious
elementscan be valid, but emptyfetcherReportsand emptytokenInfofor multiple wallets + docs sample wallet suggests fetchers may not be running or payload assembly changed.Request
Could you confirm whether this behavior is expected right now, or if Portfolio indexing/fetchers are degraded for this endpoint? If expected, please document the new semantics for
fetcherReportsand empty payload handling in the Portfolio docs.