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

# Best Practices

> Use Vero Data Hub API efficiently and reliably

<div style={{ width: '100%', height: 240, marginBottom: 32, borderRadius: 16, overflow: 'hidden', position: 'relative' }}>
  <video style={{ width: '100%', height: '100%', objectFit: 'cover', filter: 'sepia(0.3) saturate(1.5) hue-rotate(-14deg) brightness(0.72) contrast(1.12)' }} autoPlay loop muted playsInline>
    <source src="https://mintcdn.com/vero-fa5575b5/G_sL_RHXpWEXOwUp/images/bg_video.mp4?fit=max&auto=format&n=G_sL_RHXpWEXOwUp&q=85&s=f731a6a676fb99a2368193fbaf3281ee" type="video/mp4" data-path="images/bg_video.mp4" />
  </video>
</div>

<div style={{ width: '100%', height: 4, marginBottom: 24, borderRadius: 2, background: 'rgba(0,0,0,0.08)' }}>
  <div style={{ width: '87.5%', height: '100%', borderRadius: 2, background: 'linear-gradient(90deg, var(--accent-primary) 0%, var(--accent-light) 50%, var(--accent-dark) 100%)' }} />
</div>

## Request hygiene

| Recommendation               | Why it matters                                                         |
| ---------------------------- | ---------------------------------------------------------------------- |
| Always use clear time ranges | Smaller responses and easier debugging                                 |
| Set a reasonable `limit`     | Avoids fetching more data than needed                                  |
| Use cursor pagination        | More stable than offset-based pagination                               |
| Cache slow-changing data     | Instruments, reports and fund metadata do not need constant refetching |
| Retry with backoff           | Avoids retry storms during temporary errors                            |

## Time range guidance

| Use case            | Recommendation                                       |
| ------------------- | ---------------------------------------------------- |
| Intraday charts     | Query by session or day                              |
| Long history charts | Split requests into time windows                     |
| News feeds          | Query by day or latest timestamp                     |
| Batch analytics     | Use pagination and store progress on the client side |

## Pagination flow

<Steps>
  <Step title="Send the first request">
    Include the `limit` that matches your UI or processing batch size.
  </Step>

  <Step title="Check next_cursor">
    If the response includes `next_cursor`, another page is available.
  </Step>

  <Step title="Request the next page">
    Send the same request with `cursor` set to the returned token.
  </Step>
</Steps>

## Error handling

| Status | Suggested handling                     |
| ------ | -------------------------------------- |
| `400`  | Fix query parameters or time format    |
| `401`  | Check account credentials              |
| `404`  | Check the requested ID, symbol or code |
| `429`  | Slow down and retry later              |
| `503`  | Retry with backoff after a short delay |
