
# Renvoyer une invitation

`POST /v1/invitations/{invitation_id}:resend` · autorisation `invitations:write`

Renvoie une invitation en attente avec un nouveau jeton : le lien précédent cesse de fonctionner. Pour une invitation `email`, le nouveau lien n'est envoyé que par e-mail et la réponse ne contient pas de `accept_url`. Pour une invitation `link_only`, le lien d'acceptation (`accept_url`) n'est renvoyé que dans cette réponse, une seule fois ; aucun point de terminaison ne le renvoie ensuite. La réponse contient `Cache-Control: no-store`, et une réponse rejouée pour la même `Idempotency-Key` omet le lien et contient `secret_redacted: true`. Les renvois doivent être espacés d'au moins 10 minutes et sont limités à 5 envois au total ; `expires_at` ne change pas. L'écriture est journalisée sous `invitation.resent`.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `invitation_id` | chemin | oui | Identifiant de l'invitation (`inv_…`). |

Aucun corps de requête.

## Réponse

`200 OK` avec l'invitation et son nouveau lien d'acceptation.

```json
{
  "id": "inv_01j9xt9v3w4y8z0a2b4c6d8e0g",
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "email": "ada@example.com",
  "role_ids": [
    "rol_01j9xr7s1t2w6x8y0z2a4b6c8e"
  ],
  "application_id": null,
  "delivery": "link_only",
  "delivery_status": "not_sent",
  "status": "pending",
  "send_count": 2,
  "last_sent_at": "2026-10-12T09:31:00.123456Z",
  "expires_at": "2026-10-19T09:31:00.123456Z",
  "accepted_user_id": null,
  "accepted_at": null,
  "revoked_at": null,
  "created_at": "2026-10-12T09:31:00.123456Z",
  "updated_at": "2026-10-12T09:31:00.123456Z",
  "version": 1,
  "accept_url": "https://acme.eu.keenauth.app/u/login?invitation=<token>"
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 404 | `not_found` | L'invitation n'existe pas dans cet environnement. |
| 409 | `conflict` | L'invitation n'est pas en attente. |
| 429 | `invite_rate_limited` | Moins de 10 minutes depuis le dernier envoi, ou 5 envois déjà effectués. |
| 501 | `not_implemented` | L'invitation utilise la livraison `email` et l'envoi d'e-mails d'invitation n'est pas configuré pour le déploiement. |
| 401 | `unauthenticated` | L'identifiant d'authentification est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la période indiquée par `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la période indiquée par `Retry-After`. |

## Exemple

```bash
curl -i -X POST "https://api.eu.keenauth.com/v1/invitations/inv_01j9xt9v3w4y8z0a2b4c6d8e0g:resend" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

## Données personnelles

Ce point de terminaison traite des données personnelles : appartenances aux organisations et invitations. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit ce qui est stocké, la durée de conservation et la manière dont les données sont supprimées. Ne transmettez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.
