Skip to content

Portfolio API /positions returns 200 with elements=[] + fetcherReports=[] for multiple wallets #828

@amitkarpe

Description

@amitkarpe

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

  1. 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)
  2. Include header x-api-key: <valid key>
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions