> ## Documentation Index
> Fetch the complete documentation index at: https://developers.0flaw.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Lecture des données

> Interroger les résultats de campagnes, les risk scores et le statut des formations.

En complément des [webhooks](/webhooks) (qui vous **poussent** les événements), l'API vous
permet de **tirer** la donnée à la demande : résultats de campagnes, risk scores radar et statut
des formations. Toutes ces lectures sont scopées à votre entreprise.

## Permissions

Chaque famille a sa propre permission — créez une clé au plus juste.

| Permission       | Donne accès à                                        |
| ---------------- | ---------------------------------------------------- |
| `read:results`   | Campagnes, résultats par employé, synthèse analytics |
| `read:scores`    | Risk scores radar (par employé et agrégé entreprise) |
| `read:trainings` | Statut des formations assignées                      |

<Note>
  Un connecteur SIEM qui n'a besoin que des résultats de phishing prendra `read:results` seul,
  sans accéder aux données RH (radar, formations).
</Note>

## Pagination

Toutes les listes suivent la même enveloppe et les mêmes paramètres.

<CodeGroup>
  ```bash Requête theme={null}
  curl "https://api.0flaw.fr/api/v1/campaigns?page=1&limit=50&from=2026-01-01&to=2026-06-30" \
    -H "Authorization: Bearer 0flaw_live_votre_cle"
  ```

  ```json Réponse theme={null}
  {
    "data": [ /* … */ ],
    "pagination": { "page": 1, "limit": 50, "total": 214, "total_pages": 5, "has_more": true }
  }
  ```
</CodeGroup>

* `page` (défaut 1) et `limit` (défaut 50, **max 100** — au-delà, ramené à 100).
* `from` / `to` filtrent par période (format `YYYY-MM-DD`). Par défaut : les **30 derniers jours**.
* Itérez tant que `pagination.has_more` vaut `true`.

## Ce que vous obtenez

<CardGroup cols={2}>
  <Card title="Résultats de campagnes" icon="bullseye">
    Taux d'ouverture, de clic, de soumission et de signalement par campagne, puis le détail par
    employé. Les adresses IP ne sont **jamais** exposées (RGPD).
  </Card>

  <Card title="Risk scores (radar)" icon="chart-radar">
    Un score 0-100 par axe de sécurité, pour un employé ou agrégé sur toute l'entreprise, avec
    l'axe le plus faible mis en évidence.
  </Card>

  <Card title="Statut des formations" icon="graduation-cap">
    Pour chaque assignation : statut, progression (% de vidéos terminées) et score de quiz moyen.
  </Card>

  <Card title="Synthèse analytics" icon="chart-line">
    Totaux et taux moyens sur une période, plus l'évolution mensuelle — idéal pour un tableau de
    bord de direction.
  </Card>
</CardGroup>

## Fraîcheur et limites

* Les réponses sont **mises en cache 60 secondes** côté serveur : deux appels identiques
  rapprochés renvoient la même donnée. Suffisant pour du reporting, pas conçu pour du suivi à la
  seconde (utilisez les webhooks pour le temps réel).
* La limite de débit standard s'applique : **600 requêtes / 15 minutes** par clé.

<Card title="Voir tous les endpoints" icon="code" href="/api-reference">
  Chemins, paramètres et schémas de réponse détaillés dans la référence API.
</Card>
