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

# Statistiques

> Statistiques de scans pour un QR code ou pour tout votre espace de travail.

> [!NOTE]
>
> L'API GetQR est en version bêta et réservée à certains espaces de travail. Certains détails peuvent changer avant la disponibilité générale.

Obtenez les totaux de scans et leurs répartitions par pays, appareil, navigateur et plus encore, pour un seul QR code ou pour tout votre espace de travail.

| Méthode | Chemin | Description |
| - | - | - |
| `GET` | `/api/v1/qrs/{qrId}/analytics` | [Obtenir les statistiques d'un QR code](#obtenir-les-statistiques-d-un-qr-code) |
| `GET` | `/api/v1/analytics` | [Obtenir les statistiques de l'espace de travail](#obtenir-les-statistiques-de-l-espace-de-travail) |

Pour un résumé prêt à l'emploi par QR code, consultez [Rapports](https://docs.getqr.com/fr/api/endpoints/reports.md).

## Signification des chiffres

* **Scans.** Chaque décompte se trouve dans le champ `clicks`. Un scan est compté chaque fois que quelqu'un ouvre le lien court du QR code.
* **Scans uniques.** Avec `unique=true`, chaque visiteur n'est compté qu'une fois sur la plage de dates.
* **Périmètre.** Les chiffres proviennent du lien court du QR code. Un QR code sans lien court n'a aucun scan à compter.
* **Historique.** Les statistiques ne peuvent pas être réinitialisées via l'API. Supprimer un QR code ne supprime pas l'historique de ses scans.

## En-têtes

**Authorization** `string` *required*

`Bearer` suivi de votre clé API. Consultez [Authentification](https://docs.getqr.com/fr/api/authentication.md).

## Paramètres de requête

Les deux endpoints acceptent ces paramètres. Tous sont facultatifs.

**groupBy** `string` (default: count)

Dimension de répartition. `count` renvoie le total. Consultez [Répartitions](#répartitions) pour chaque valeur et la forme de sa réponse.

**interval** `string` (default: 30d)

Plage de dates prédéfinie : `24h`, `7d`, `30d`, `90d`, `1y`, `mtd`, `qtd`, `ytd` ou `all`. Consultez [Plages de dates](#plages-de-dates). Ignoré si vous envoyez `start`.

**start** `string`

Début d'une plage personnalisée, ISO 8601, par exemple `2026-08-01` ou `2026-08-01T00:00:00Z`. Prioritaire sur `interval`. Doit être antérieur à `end`.

**end** `string`

Fin d'une plage personnalisée, ISO 8601. Par défaut, la fin de la journée en cours. S'utilise avec `start` ou `interval=all`, et est ignoré avec les autres intervalles.

**timezone** `string` (default: UTC)

Fuseau horaire IANA utilisé pour aligner les tranches de `timeseries`, par exemple `America/New_York`. Un fuseau horaire inconnu renvoie `422`.

**unique** `boolean` (default: false)

`true` compte les scans uniques au lieu du total des scans.

Vous pouvez aussi envoyer des [filtres de dimension](#filtres-de-dimension).

## Plages de dates

| `interval` | Période couverte | Tranches de `timeseries` |
| - | - | - |
| `24h` | Les dernières 24 heures | Heures |
| `7d` | Les 7 derniers jours, aujourd'hui compris | Jours |
| `30d` | Les 30 derniers jours, aujourd'hui compris | Jours |
| `90d` | Les 90 derniers jours, aujourd'hui compris | Jours |
| `1y` | Les 365 derniers jours, aujourd'hui compris | Mois |
| `mtd` | Depuis le début du mois | Jours |
| `qtd` | Depuis le début du trimestre | Jours |
| `ytd` | Depuis le début de l'année | Jours, ou mois au-delà de 180 jours |
| `all` | Depuis la création de votre espace de travail | Jours, ou mois au-delà de 180 jours |

Pour une plage personnalisée, envoyez `start` et, éventuellement, `end`. Les plages de 2 jours maximum utilisent des tranches horaires, celles de plus de 180 jours des tranches mensuelles, et toutes les autres des tranches journalières.

## Filtres de dimension

Limitez les résultats aux scans qui correspondent à un filtre. Les différents filtres sont combinés avec AND. Quand un filtre accepte plusieurs valeurs, séparez-les par des virgules : les valeurs sont combinées avec OR.

| Filtre | Valeur | Plusieurs valeurs |
| - | - | - |
| `country` | Code pays ISO 3166-1 alpha-2, par exemple `US` | Oui |
| `region` | Code de région ISO 3166-2, par exemple `US-CA` | Oui |
| `city` | Nom de ville, par exemple `New York` | Oui |
| `continent` | `AF`, `AN`, `AS`, `EU`, `NA`, `OC` ou `SA` | Oui |
| `device` | Type d'appareil, par exemple `Mobile` ou `Desktop` | Oui |
| `browser` | Nom du navigateur, par exemple `Chrome` | Oui |
| `os` | Système d'exploitation, par exemple `iOS` ou `Windows` | Oui |
| `url` | URL de destination | Oui |
| `referer` | Référent, par exemple `google.com` | Non |
| `utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content` | Valeur UTM, jusqu'à 190 caractères | Non |

Un code pays ou continent inconnu renvoie `422`. Les noms d'appareils, de navigateurs et de systèmes d'exploitation sont comparés avec une majuscule initiale : `mobile` fonctionne donc comme `Mobile`.

Par exemple, les scans depuis les États-Unis ou le Canada sur appareils mobiles : `?country=US,CA&device=Mobile`.

## Répartitions

`count` renvoie un objet. Toutes les autres valeurs renvoient un tableau, trié par `clicks` du plus élevé au plus faible (`timeseries` est trié par date).

| `groupBy` | Contenu de chaque élément |
| - | - |
| `count` | `clicks` (un objet, pas un tableau) |
| `timeseries` | `start` (début de la tranche), `clicks` |
| `continents` | `continent`, `clicks` |
| `regions` | `region`, `country`, `clicks` |
| `countries` | `country`, `city` (toujours `*`), `clicks` |
| `cities` | `city`, `country`, `clicks` |
| `devices` | `device`, `clicks` |
| `browsers` | `browser`, `clicks` |
| `os` | `os`, `clicks` |
| `triggers` | `trigger` (`qr` ou `link`), `clicks` |
| `referers` | `referer` (`(direct)` si inconnu), `clicks` |
| `referer_urls` | `refererUrl` (`(direct)` si inconnu), `clicks` |
| `top_links` | `id`, `domain`, `key`, `shortLink`, `url`, `createdAt`, `qr` (`id`, `qrType`, `title`), `clicks` |
| `top_urls` | `url`, `clicks` |
| `top_types` | `qr_type`, `clicks` |
| `utm_sources`, `utm_mediums`, `utm_campaigns`, `utm_terms`, `utm_contents` | La valeur UTM (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term` ou `utm_content`), `clicks` |

Un `groupBy` inconnu renvoie `422` avec la liste des valeurs valides.

Réponse quand `groupBy=count` :

```json theme={null}
{ "clicks": 142 }
```

Réponse quand `groupBy=countries` :

```json theme={null}
[
  { "country": "US", "city": "*", "clicks": 87 },
  { "country": "DE", "city": "*", "clicks": 31 },
  { "country": "GB", "city": "*", "clicks": 24 }
]
```

## Obtenir les statistiques d'un QR code

`GET /api/v1/qrs/{qrId}/analytics`

Renvoie les statistiques de scans d'un QR code, limitées à son lien court. Accepte les [paramètres de requête](#paramètres-de-requête) et les [filtres de dimension](#filtres-de-dimension) ci-dessus.

**qrId** `string` *required*

ID du QR code. Récupérez-le dans la réponse de liste ou de création des [QR codes](https://docs.getqr.com/fr/api/endpoints/qr-codes.md).

```bash Total scans, last 30 days theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/analytics?groupBy=count&interval=30d" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash Unique scans theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/analytics?groupBy=count&interval=30d&unique=true" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash By country, last 7 days theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/analytics?groupBy=countries&interval=7d" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "clicks": 142
}
```

## Obtenir les statistiques de l'espace de travail

`GET /api/v1/analytics`

Renvoie les statistiques de scans de tous les QR codes de votre espace de travail. Accepte les [paramètres de requête](#paramètres-de-requête) et les [filtres de dimension](#filtres-de-dimension) ci-dessus, ainsi que ces paramètres de périmètre.

**domain** `string`

Avec `key`, limite les résultats au lien court ayant ce domaine, par exemple `getqr.sh`. Le domaine doit appartenir à votre espace de travail.

**key** `string`

Slug du lien court, par exemple `x7Kd2p1`. S'utilise avec `domain`. Les deux se trouvent dans l'[objet QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md).

**qrType** `string`

Types de QR codes à inclure, séparés par des virgules : `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email` ou `event`. Consultez [Types de QR codes](https://docs.getqr.com/fr/api/guides/qr-types.md).

```bash Devices, last 7 days theme={null}
curl "https://getqr.com/api/v1/analytics?groupBy=devices&interval=7d" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash Devices, website QR codes only theme={null}
curl "https://getqr.com/api/v1/analytics?groupBy=devices&interval=30d&qrType=website" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash One short link theme={null}
curl "https://getqr.com/api/v1/analytics?groupBy=count&domain=getqr.sh&key=x7Kd2p1" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
[
  { "device": "Mobile", "clicks": 980 },
  { "device": "Desktop", "clicks": 240 }
]
```

## Problèmes courants

> [accordion] 400 "QR has no associated link."
>
> Le QR code n'a pas de lien court : il n'y a donc aucun scan à compter.

> [accordion] 404 lors d'un filtrage par domain et key
>
> Aucun lien court avec ce domaine et ce slug n'existe dans votre espace de travail. Copiez `domain` et `key` depuis l'objet QR code.

> [accordion] 422 sur groupBy, interval ou un filtre
>
> La valeur n'est pas prise en charge. Le message d'erreur indique le paramètre et liste les valeurs valides.

> [accordion] Les chiffres ne correspondent pas au tableau de bord
>
> Vérifiez que vous utilisez la même plage de dates et le même fuseau horaire, et si vous comptez les scans uniques (`unique=true`) ou le total des scans.

## Et ensuite

> [card] [Rapports](https://docs.getqr.com/fr/api/endpoints/reports.md)

> [card] [QR codes](https://docs.getqr.com/fr/api/endpoints/qr-codes.md)

> [card] [Statistiques dans l'application](https://docs.getqr.com/fr/analytics/overview.md)

> [card] [Limites de débit](https://docs.getqr.com/fr/api/rate-limits.md)


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