[Index de la documentation](https://prescriptio.fr/docs/llms.txt)

# Ajouter ou modifier une variante

L'opération REST email.messages.upsert de Prescriptio sert à ajouter une variante texte ou modifier une variante existante en texte, HTML assaini ou blocs du constructeur.

### Exemple d'appel, synthétique

**curl**

```bash
curl -sS https://prescriptio.fr/api/mcp/v1/email.messages.upsert \
  -H 'Authorization: Bearer <jeton>' \
  -H 'Content-Type: application/json' \
  -d '{"blocs":[{"kind":"titre","text":"Bonjour [prenom]"},{"kind":"texte","text":"Découvrez notre équipe."},{"kind":"bouton","text":"En savoir plus","url":"[lien1]"}],"campagne_id":"00000000-0000-0000-0000-000000000001","format":"builder","objet":"Bonjour [prenom]","variante_id":"00000000-0000-0000-0000-000000000002"}'
```

**Corps JSON**

```json
{
  "blocs": [
    {
      "kind": "titre",
      "text": "Bonjour [prenom]"
    },
    {
      "kind": "texte",
      "text": "Découvrez notre équipe."
    },
    {
      "kind": "bouton",
      "text": "En savoir plus",
      "url": "[lien1]"
    }
  ],
  "campagne_id": "00000000-0000-0000-0000-000000000001",
  "format": "builder",
  "objet": "Bonjour [prenom]",
  "variante_id": "00000000-0000-0000-0000-000000000002"
}
```

### Forme de la réponse, générée depuis le schéma

```json
{
  "action": "<variante_ajoutee | variante_modifiee | message_enregistre>",
  "fields": {
    "format": "<texte | html | builder>",
    "variante_id": "<texte>"
  },
  "note": "<texte>",
  "ok": null,
  "url": "<texte>"
}
```

## Paramètres du corps

| Nom | Type | Requis | Description |
|---|---|---|---|
| `blocs` | liste | — | variante avec format=builder : blocs dans l'ordre. Images HTTPS, boutons HTTPS ou [lien1] à [lien3]. |
| `blocs[].kind` | texte | oui | (valeurs : `titre` · `texte` · `image` · `bouton` · `separateur`) |
| `blocs[].text` | texte | — | — |
| `blocs[].url` | texte | — | — |
| `campagne_id` | texte | oui | UUID de la campagne. Requis partout sauf lister, creer, stats (global), desinscrits, expediteur et quota. |
| `corps` | texte | — | creer/variante : le message. Mêmes champs. Pour un lien mesure, écrire [lien1], [lien2] et les declarer par action liens. |
| `etiquette` | texte | — | variante : etiquette courte (B, C, « version courte »). Avec objet et corps, ajoute une variante ; avec variante_id, reecrit celle-ci. |
| `format` | texte | — | variante : format d'une version existante. html est assaini ; builder compile les blocs comme l'interface. (valeurs : `texte` · `html` · `builder`) |
| `objet` | texte | — | creer/variante : objet du message. Champs : [prenom] [nom] [entreprise] [ville] [fonction] (l'accent est optionnel : [prenom] et [prénom] valent pareil, [société] vaut [entreprise]). |
| `variante_id` | texte | — | variante : UUID d'une variante existante a reecrire. objet, tester, destinataire : le message vise (absent : le premier, ou celui du destinataire). |

## Quand l'utiliser

Pour format et blocs, transmettre variante_id.

## En bref

| | |
|---|---|
| Adresse | `POST /api/mcp/v1/email.messages.upsert` |
| Contrat | 3.0.0 |
| Portée OAuth | `mcp:write` |
| Conditions d’accès | Chaque action conserve ses droits, ses conditions d’offre et ses quotas ; sa présence dans le catalogue ne les lève pas. |
| Outil MCP | [`campagne_email`](https://prescriptio.fr/docs/api/campagne_email) : même traitement |

## Erreurs et quotas

Cet outil ne consomme aucune unité de dossier : chercher est gratuit, c'est la lecture d'un dossier (`marches_dce`, `mairies_deliberations` et leurs téléchargements) qui est décomptée.

Les codes HTTP, le corps d’erreur et les compteurs d’appels et de dossiers sont communs. Chaque action conserve aussi ses droits et plafonds métier : [Codes d'erreur](https://prescriptio.fr/docs/reference/erreurs) et [Authentification et quotas](https://prescriptio.fr/docs/reference/authentification#les-quotas).

## Les pages qui s'en servent

Calculé depuis la documentation : chaque page qui cite `email.messages.upsert`.

- [Campagnes e-mail de bout en bout](https://prescriptio.fr/docs/guides/campagnes-email) : Guides, Parcours complets

## Voir aussi

- [Référence API](https://prescriptio.fr/docs/reference) : L'adresse, l'authentification et les codes de réponse
- [campagne_email](https://prescriptio.fr/docs/api/campagne_email) : La même action par le connecteur MCP
- [OpenAPI](https://prescriptio.fr/openapi.json) : Le schéma machine de toutes les opérations
