
# Récupérer un export d'audit

`GET /v1/audit-exports/{export_id}` · autorisation `audit-exports:read`

Renvoie une tâche d'export et son statut : `queued`, `running`, `completed`, `failed` ou `expired`.

## Requête

| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
| `export_id` | path | oui | Identifiant de la tâche d'export, préfixé par `aex_`. |

## Réponse

`200 OK` et la tâche. Les champs vides valent `null`.

- `record_count`, `file` et `manifest_sha256` ne sont renseignés que pour les tâches `completed` et `expired`. `file` décrit `records.ndjson.gz` dans le package (`sha256` est en hexadécimal).
- `failure_reason` n'est renseigné que pour les tâches `failed` : `too_many_records`, `checkpoint_unavailable`, `integrity_error` ou `attempts_exhausted`.
- Le fichier est supprimé à `expires_at` (`completed_at` plus 7 jours) ; la tâche affiche alors `expired` et ne peut plus être téléchargée.

```json
{
  "id": "aex_01j9xk3m7q8r2s4t6v8w0y2z4e",
  "status": "completed",
  "filter": {
    "stream": "admin",
    "from": "2026-07-01T00:00:00Z",
    "to": "2026-10-01T00:00:00Z",
    "action": "user.",
    "category": null,
    "actor_type": null,
    "actor_id": null,
    "target_type": null,
    "target_id": null,
    "org_id": null,
    "outcome": null,
    "request_id": null,
    "correlation_id": null,
    "agent_only": false
  },
  "include_ip": false,
  "record_count": 18240,
  "file": {
    "name": "records.ndjson.gz",
    "sha256": "9f2c4b8e1d7a3f6c0b5e8d2a4c7f1e3b6a9d0c2e5f8b1a4d7c0e3f6a9b2c5d8e",
    "size": 2381904
  },
  "manifest_sha256": "3b7e1f9c2d5a8e0b4f6c1a3d7e9b2f5c8a0d4e6b1c3f7a9e2d5b8c0f4a6e1d3b",
  "failure_reason": null,
  "created_at": "2026-10-19T09:00:00Z",
  "started_at": "2026-10-19T09:00:02Z",
  "completed_at": "2026-10-19T09:01:10Z",
  "expires_at": "2026-10-26T09:01:10Z",
  "recorded_before": "2026-10-19T09:00:00Z",
  "requested_by": {"type": "api_key", "id": "key_01j9xk3m7q8r2s4t6v8w0y2z4d"}
}
```

## Erreurs

Chaque erreur est un corps `application/problem+json` avec un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 401 | `unauthenticated` | La clé d'API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de `audit-exports:read`. |
| 404 | `not_found` | La tâche n'existe pas, appartient à un autre environnement, ou l'identifiant est mal formé. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; respectez `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez plus tard. |

## Exemple

```bash
curl https://api.eu.keenauth.com/v1/audit-exports/aex_01j9xk3m7q8r2s4t6v8w0y2z4e \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth audit-exports get aex_01j9xk3m7q8r2s4t6v8w0y2z4e
```

## Données personnelles

Ce point de terminaison traite des données personnelles : des événements d'audit. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit ce qui est stocké, combien de temps cela est conservé et comment cela est supprimé. N'envoyez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans un champ quelconque.
