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

# Analytics

> Read the same roll-ups the Fuse dashboards show — campaigns, dialer, enrichment, website intent and agents

Five endpoints return the numbers behind the Fuse insights tabs. They are read-only, cost no credits, and each covers one area.

They need a key with the `analytics` [scope](/concepts/scopes).

| Endpoint | Covers |
| - | - |
| `GET /business/analytics/campaigns` | Email and LinkedIn volume, replies and engagement |
| `GET /business/analytics/dialer` | Call volume, connects and outcomes |
| `GET /business/analytics/enrichment` | Emails and phones enriched over time |
| `GET /business/analytics/website-intent` | Visits, companies and people seen on your site |
| `GET /business/analytics/agents` | What your agents have delivered |

## Pick a window

Every endpoint takes an optional `range`, and an optional IANA `timezone` (default `UTC`) that decides where each day starts:

| `range` | Window |
| - | - |
| `7d` | Last 7 days |
| `30d` | Last 30 days (default) |
| `90d` | Last 90 days |

```bash theme={null}
curl -G https://api.tryfuse.ai/api/v1/business/analytics/website-intent \
  --data-urlencode "range=7d" \
  -u "$FUSE_API_KEY:"
```

```json theme={null}
{
  "range": "7d",
  "metrics": {
    "totalVisits": 1518,
    "uniqueCompanies": 182,
    "uniquePeople": 47,
    "highConfidenceVisits": 206
  },
  "timeSeries": [{ "date": "Aug 18", "isoDate": "2026-08-18", "companies": 76, "people": 13 }]
}
```

The `range` you asked for is echoed back, so a stored response is self-describing.

## The shape of a response

Each endpoint returns one or more **panels**. A panel is either a set of summary cards or a time series, and the response always names the range it covers.

```json theme={null}
{
  "range": "30d",
  "agents": {
    "totals": {
      "totalAgents": 6,
      "activeAgents": 4,
      "totalProspects": 480,
      "peopleProspects": 310,
      "companyProspects": 170
    },
    "byType": [{ "monitorType": "job_postings", "listType": "company", "agentCount": 2, "prospects": 170 }]
  }
}
```

<Note>
  On the campaigns, dialer and enrichment endpoints a panel can come back `null`. Each one is computed independently, so a slow or unavailable source degrades that panel rather than failing the whole call. Treat `null` as "not available for this window", not as zero. The website intent and agents endpoints have no per-panel `null`: if their source fails, the whole call fails, and website intent answers `404 WEBSITE_TRACKING_NOT_SET_UP` until tracking is set up.
</Note>

## Buckets in a time series

Series are bucketed by the window: daily for `7d`, and ISO weeks for `30d` and `90d`. Every point is zero-filled and carries two dates:

```json theme={null}
{
  "emailsEnriched": {
    "totalSince": 644,
    "mode": "weekly",
    "series": [
      { "date": "Jul 20", "isoDate": "2026-07-20", "total": 5 },
      { "date": "Jul 27", "isoDate": "2026-07-27", "total": 141 }
    ]
  }
}
```

`date` is a display label for the start of the bucket, and `isoDate` is the same date as `YYYY-MM-DD`. Use `isoDate` for date math. The enrichment panels also name the bucket in `mode`, `daily` or `weekly`.

Totals are exact figures for the whole window, so derive rates from the totals rather than by adding up the series. The responses carry no comparison against a previous window.

## Putting it in a dashboard

<Steps>
  <Step title="Fetch the areas you show, in parallel">
    The five endpoints are independent; nothing needs to be called in order.
  </Step>

  <Step title="Handle null panels per panel">
    One unavailable source should blank one card, not the page.
  </Step>

  <Step title="Format dates from `isoDate`">
    The bucket size changes with the range, and `date` is only a label.
  </Step>

  <Step title="Cache for the window you display">
    These are roll-ups over days; polling them frequently spends [rate limit](/concepts/rate-limits) for numbers that barely move.
  </Step>
</Steps>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.