> ## Documentation Index
> Fetch the complete documentation index at: https://docs.miningwood.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Refresh Portfolio Prices

> Fetch current market prices for all portfolio holdings

## Endpoint

```
POST /api/portfolio/refresh-prices
```

## Description

Fetches the latest market prices from Finnhub API for all holdings in the user's portfolio.

## Authentication

Requires OAuth 2.0 authentication via session cookies.

## Rate Limiting

The free Finnhub API tier allows 60 requests per minute. The application intelligently manages API requests to stay within these limits.

## Response

<ResponseField name="success" type="boolean" required>
  Indicates if the refresh was successful
</ResponseField>

<ResponseField name="updated_count" type="number">
  Number of holdings successfully updated
</ResponseField>

<ResponseField name="errors" type="array">
  List of any errors encountered during refresh
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://your-domain.com/api/portfolio/refresh-prices \
    -H "Cookie: session=your_session_cookie"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('/api/portfolio/refresh-prices', {
    method: 'POST'
  });

  const data = await response.json();

  if (data.success) {
    console.log(`Updated ${data.updated_count} holdings`);
  }
  ```

  ```python Python theme={null}
  import requests

  response = requests.post('http://localhost:5000/api/portfolio/refresh-prices')
  data = response.json()

  if data['success']:
      print(f"Updated {data['updated_count']} holdings")
  ```
</CodeGroup>

## Response Example

```json Success theme={null}
{
  "success": true,
  "updated_count": 5,
  "message": "Successfully updated prices for 5 holdings"
}
```

```json Partial Success theme={null}
{
  "success": true,
  "updated_count": 4,
  "errors": [
    {
      "symbol": "INVALID",
      "error": "Symbol not found"
    }
  ]
}
```

```json Error theme={null}
{
  "success": false,
  "error": "Finnhub API key not configured"
}
```

## Notes

* Prices are automatically refreshed when viewing the portfolio page if last update was >15 minutes ago
* Use this endpoint to manually force a refresh at any time
* Mutual fund prices may be delayed 15-30 minutes
