Guide · API REST

Générer un document Word à partir de JSON

Gardez le document modifiable. L'appel qui rend un PDF renvoie un DOCX si vous le demandez : votre modèle Word, votre JSON, une requête, un fichier Word que vos utilisateurs peuvent encore modifier.

Quand le client veut du Word, pas du PDF

  • Contrats, offres et courriers se négocient : un PDF clôt la conversation, un DOCX la garde ouverte.
  • Construire des DOCX dans le code, ce sont des parties XML et des bibliothèques OpenXML ; le responsable du modèle ne peut pas toucher au résultat.
  • Une API PDF seule impose un second outil pour la copie modifiable, avec deux mises en page à garder synchronisées.

La requête

Même transport que l'appel PDF, format=DOCX. Champs scalaires en paires nom/valeur, régions répétées sous lists. L'extension du fichier est réécrite en .docx.

TOKEN=$(curl -sS https://auth.xgenerate.io/realms/xgenerate/protocol/openid-connect/token \
  -d grant_type=client_credentials \
  -d client_id="$XGENERATE_CLIENT_ID" \
  -d client_secret="$XGENERATE_CLIENT_SECRET" | jq -r .access_token)

cat > fields.json <<'JSON'
{
  "fields": [
    { "name": "customer.name",    "value": "Lumière Logistique SARL" },
    { "name": "offer.number",     "value": "OF-2026-118" },
    { "name": "offer.validUntil", "value": "30.11.2026" }
  ]
}
JSON

# Same call as for a PDF; only the format differs.
curl -sS https://api.xgenerate.io/v2/documents/generate \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@offer-template.docx" \
  -F "fields=@fields.json;type=application/json" \
  -F "format=DOCX" \
  -o offer.docx

Depuis .NET

using System.Net.Http.Json;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new("Bearer", token);

var request = new
{
    filename = "offer-template.docx",
    content = Convert.ToBase64String(await File.ReadAllBytesAsync("offer-template.docx")),
    format = "DOCX",
    fields = new
    {
        fields = new[]
        {
            new { name = "customer.name", value = "Lumière Logistique SARL" },
            new { name = "offer.number", value = "OF-2026-118" }
        }
    }
};
var response = await http.PostAsJsonAsync(
    "https://api.xgenerate.io/v2/documents/generate", request);
response.EnsureSuccessStatusCode();

// result.Filename is "offer-template.docx": the extension follows the resolved format.
var result = await response.Content.ReadFromJsonAsync<GenerateResult>();
await File.WriteAllBytesAsync("offer.docx", Convert.FromBase64String(result!.Content));

record GenerateResult(string Filename, string Content, string Format);

La réponse

L'appel multipart renvoie le DOCX avec Content-Type application/vnd.openxmlformats-officedocument.wordprocessingml.document. Le transport JSON renvoie filename, content, format et warnings, le fichier encodé en base64 dans content.

Le résultat

Première page de la facture de référence rendue : en-tête, bloc d'adresse, tableau des lignes et totaux
La facture de référence, rendue à partir d'un modèle Word avec des champs de fusion standard. Modèle, requête et PDF attendu : exemple publié

Ce que XGenerate ne fait pas

Le DOCX conserve les styles du modèle et les champs remplis en texte ; la partie QR-facture suisse n'existe qu'en PDF et est signalée par un avertissement en sortie DOCX.

Essayez-le sur votre propre modèle

Envoyez-nous un fichier Word que vous utilisez aujourd'hui. Nous le rendons avec vos données et vous renvoyons le PDF avec le modèle adapté, pour que votre évaluation ne dépende pas de nous.

Demander une démo

Guides associés