# Appels en lot

Une même mission, plusieurs numéros : par exemple demander à dix garages leur premier créneau disponible, ou confirmer
un rendez-vous auprès de vingt cabinets. Réservé aux offres **Pro** et **Entreprise** (un compte Particulier reçoit 403
`fonction_reservee_pro`).

> Les appels en lot servent à des demandes que tu as le droit de faire à chaque interlocuteur. Le démarchage commercial
> et les appels en masse non sollicités sont interdits (CGU) et refusés (`mission_interdite`), comme pour un appel seul.

## Créer un lot

```bash
curl -s -X POST $TEL_API/v1/lots \
  -H "Authorization: Bearer $TEL_KEY" -H "Content-Type: application/json" \
  -d '{
    "nom": "Garages – révision",
    "numeros": ["+33142000000", "+33143000000", "+33144000000"],
    "mission": "Demande le premier créneau disponible pour une révision de Clio 4, au nom de Moha K. Ne prends pas de rendez-vous.",
    "langue": "fr",
    "webhook_url": "https://ton-serveur.fr/hooks/telephone"
  }'
```

- `numeros` : 100 au plus par lot (sinon 422 `lot_trop_grand`), au format `+33…` ou `0X XX XX XX XX`. Les doublons, les
  numéros invalides et ceux que les règles anti-abus écartent sont listés dans `refuses` (numéro et motif) ; si aucun
  numéro ne peut être appelé : 422 `lot_vide`.
- `mission` (texte libre de 10 à 2 000 caractères, ou mission structurée), `nom`, `voix`, `langue`, `webhook_url`,
  `quand` et `reglages_voix` fonctionnent comme pour un appel seul. L'annonce IA est toujours faite.
- Chaque numéro devient une mission ordinaire (`lot_id` rempli) : même suivi, mêmes webhooks, même facturation.
- **Limites de l'offre** : les appels partent dans la limite des appels en même temps (5 en Pro) ; les autres
  attendent leur tour et partent dès qu'une place se libère. Le lot entier est refusé (429
  `plafond_journalier_atteint`, avec `erreur.demandes` et `erreur.restants`) s'il dépasse ce qu'il te reste d'appels
  sur 24 h glissantes (300 en Pro).
- Un appel du lot qui attend sa place plus de 15 minutes après l'heure demandée ne part qu'entre 8 h et 21 h (heure de
  la personne appelée).

La réponse (201) contient l'`id` du lot, `total`, `par_statut`, `refuses`, la liste `appels` et tes `limites`.

## Suivre un lot

```bash
curl -s $TEL_API/v1/lots/lot_7c2e… -H "Authorization: Bearer $TEL_KEY"
```

La réponse donne `statut` (`en_cours`, `termine`, `annule`), `total`, `par_statut` (nombre d'appels par statut),
`reussis`, `refuses` et la liste `appels` (`id`, `numero`, `statut`, `resultat`, `resume`, `tentatives`).
`GET /v1/lots` liste les lots du compte, les plus récents d'abord.

## Annuler

`POST /v1/lots/{lot_id}/cancel` annule les appels du lot **pas encore partis** (en file ou relance prévue) ; leurs
crédits réservés sont rendus. Les appels en cours continuent : arrête-les un par un avec
`POST /v1/missions/{id}/cancel` si besoin.

## En MCP

- `place_batch_calls(phone_numbers, task, language?, voice?, scheduled_at?, name?)` crée le lot et renvoie son
  identifiant.
- `get_batch_calls(batch_id)` donne l'avancement et les résultats.
- Erreurs : `plan_feature_required` (offre Particulier), `batch_too_large` (plus de 100 numéros).
