> Adsly docs index: https://adsly.pro/docs/llms.txt · every page in one file: https://adsly.pro/docs/llms-full.txt · OpenAPI: https://adsly.pro/docs/api/openapi.yaml

# Stats

GET /v1/stats per campaign, /v1/stats/total for cabinet totals and charts, /v1/stats/analytics for currency split and top campaigns — periods, custom date and hour ranges.

Three endpoints, from detailed to summary. All return data per cabinet, for every cabinet the key reaches.

| Endpoint | Returns |
|---|---|
| `GET /v1/stats` | every campaign's numbers for the period |
| `GET /v1/stats/total` | each cabinet's totals plus chart points |
| `GET /v1/stats/analytics` | totals split by currency, chart, top campaigns |

One campaign over a period: [`GET /v1/campaigns/{ad_id}/history`](https://adsly.pro/docs/api/campaigns.md).

## Periods

| `period` | Window |
|---|---|
| `1d` | last 24 hours (default for `/stats` and `/stats/total`) |
| `7d` | last 7 days |
| `30d` | last 30 days (default for `/stats/analytics`) |
| `all` | all time |
| `custom` | `startDate` and `endDate` (`YYYY-MM-DD`), optionally `startHour` and `endHour` (0–23) |

Any `<N>h` or `<N>d` also works (`6h`, `14d`, up to 365 days). An unrecognised value is read as the last 24 hours — it doesn't return an error, so check your spelling. All times are UTC.

```bash
# 14:00–15:59 UTC on 8 October
curl -s "https://app.adsly.pro/api/v1/stats?period=custom&startDate=2026-10-08&endDate=2026-10-08&startHour=14&endHour=15" \
  -H "X-API-Key: $ADSLY_API_KEY"
```

## GET /v1/stats

Per campaign, nested by cabinet: `data[account_id][ad_id]`.

```json
{
  "success": true,
  "data": {
    "53": {
      "90412": { "views": 640, "clicks": 7, "actions": 3, "spent": 0.96, "ctr": 1.09, "cpm": 1.5, "cpa": 0.32, "group_id": 7 }
    }
  },
  "meta": { "period": "7d" }
}
```

Keys are strings; values here are **numbers** (unlike the campaign object). `cpa` is spend per action; `ctr` is a percentage.

## GET /v1/stats/total

The dashboard endpoint: totals and a chart for each cabinet.

```json
{
  "success": true,
  "data": {
    "accounts": {
      "53": {
        "chart": [
          { "label": "2026-10-08 12:00", "views": 52, "clicks": 1, "spent": 0.83, "budget": 4.95, "ctr": 1.92, "cpc": 0.83, "cpm": 16 }
        ],
        "totals": {
          "views": 121, "clicks": 3, "spent": 1.81, "ctr": 2.48, "cpc": 0.6, "cpm": 14.95,
          "campaigns": 4, "active": 2, "stopped": 2, "declined": 0,
          "totalBudget": 5.21, "totalSpentAllTime": 2.79
        },
        "cabinetType": "euro"
      }
    },
    "period": "1d",
    "lastUpdated": "2026-10-08T10:02:54.016Z"
  },
  "meta": { "period": "1d" }
}
```

`chart` points are hourly or daily depending on the period. `cabinetType` gives the currency (`euro` → EUR, `ton` → TON, `stars` → Stars).

## GET /v1/stats/analytics

Like `/stats/total`, plus spend split by currency and the top campaigns.

```json
{
  "success": true,
  "data": {
    "accounts": {
      "53": {
        "chart": [ { "label": "2026-10-08 12:00", "views": 52, "clicks": 1, "spent": 0.83,
                     "spent_ton": 0, "spent_euro": 0.83, "spent_stars": 0, "ctr": 1.92, "cpc": 0.83, "cpm": 16 } ],
        "totals": { "views": 121, "clicks": 3, "spent": 1.81,
                    "spentByCurrency": { "ton": 0, "euro": 1.81, "stars": 0 },
                    "ctr": 2.48, "cpc": 0.6, "cpm": 14.95 },
        "topCampaigns": [ { "ad_id": 90412, "account_id": 53, "title": "API test", "status": "Active",
                            "views": 58, "clicks": 1, "spent": 0.85, "ctr": 1.72, "cpc": 0.85 } ]
      }
    }
  },
  "meta": { "period": "30d" }
}
```

## Notes

- Stats follow Telegram's own counters, synced to Adsly regularly; the newest hour fills in as syncs arrive.
- Never add up `spent` across cabinets with different currencies.
- For conversions you track yourself (leads, deposits, sales) see [Conversions](https://adsly.pro/docs/api/conversions.md) — Telegram's `actions` are joins and bot starts, not your conversions.
- Prefer the [hourly digest webhook](https://adsly.pro/docs/api/webhooks.md) over polling stats every few minutes.

---
Page: https://adsly.pro/docs/api/stats/ · Updated: 2026-10-08
