---
title: "Rendu d’une lettre : document structuré (segments avec champs à compléter), texte, champs manquants"
method: POST
path: "/v1/letters/{slug}/render"
tags: ["B2B (v1)"]
---

# Rendu d’une lettre : document structuré (segments avec champs à compléter), texte, champs manquants

`POST /v1/letters/{slug}/render`

## Request

- Base URL: `https://api.vitef.com`
- URL: `https://api.vitef.com/v1/letters/{slug}/render`
- Auth: HTTP bearer

## Path parameters

- `slug` string, required

## Headers

- `Idempotency-Key` string: Rend la requête rejouable sans effet en double pendant 24 h (UUID v4 recommandé). Même clé et même requête : la première réponse est renvoyée avec `Idempotent-Replayed: true`, sans nouvel envoi ni nouveau débit. Même clé pour une autre requête : 422 `idempotency_key_reused`. Requête identique encore en cours : 409 `idempotency_in_progress`.

## Request body

- LetterRenderRequest
  - `values` Values: Valeurs du formulaire, par clé de champ.
  - `sender` Sender
    - `name` string
    - `street` string
    - `city` string
  - `provider` string

## Response `200`

Lettre rendue

- LetterRender
  - `letter` string, required
  - `provider` string, nullable, required
  - `doc` LetterDoc, required
    - `title` string, required
    - `sender` array[], required
      - Segment[]
        - `text` string, required
        - `hole` boolean, required: true : champ à compléter (text = son libellé).
    - `recipient` array[], required
      - Segment[]
        - `text` string, required
        - `hole` boolean, required: true : champ à compléter (text = son libellé).
    - `place` Segment, required
      - `text` string, required
      - `hole` boolean, required: true : champ à compléter (text = son libellé).
    - `date` Segment, required
      - `text` string, required
      - `hole` boolean, required: true : champ à compléter (text = son libellé).
    - `subject` Segment[], required
      - `text` string, required
      - `hole` boolean, required: true : champ à compléter (text = son libellé).
    - `body` array[], required
      - Segment[]
        - `text` string, required
        - `hole` boolean, required: true : champ à compléter (text = son libellé).
    - `signature` Segment, required
      - `text` string, required
      - `hole` boolean, required: true : champ à compléter (text = son libellé).
  - `plain` PlainLetter, required: Lettre entièrement textuelle (sans champ à compléter), telle qu’imprimée et envoyée.
    - `title` string, required
    - `sender` string[], required
    - `recipient` string[], required
    - `place` string, required
    - `date` string, required
    - `subject` string, required
    - `body` string[], required
    - `signature` string, required
    - `signatureImage` string: Signature dessinée, en data URL PNG (fond transparent conseillé, 200 k caractères au plus). Imprimée au-dessus du nom.
  - `text` string, required
  - `missing` MissingField[], required
    - `key` string, required
    - `label` string, required
  - `complete` boolean, required

## Other responses

- `400`: Requête invalide
- `401`: Authentification requise ou invalide
- `403`: Accès refusé (`insufficient_scope`, `account_suspended`, `live_not_enabled`)
- `404`: Ressource introuvable
- `409`: Requête identique encore en cours (`idempotency_in_progress`)
- `413`: Corps trop volumineux (`payload_too_large`)
- `422`: Clé Idempotency-Key déjà utilisée pour une autre requête (`idempotency_key_reused`)
- `429`: Trop de requêtes
- `500`: Erreur interne

---

[API](https://skmtc.dev/vitef/apis/api-vitef.md) · [All operations](https://skmtc.dev/vitef/apis/api-vitef/llms.txt) · [OpenAPI document](https://skmtc.dev/vitef/apis/api-vitef/revisions/7bc459d9ef90?raw)
