Générer à partir d'un modèle
Générez un document en combinant un modèle stocké avec un objet de données. Toutes les références $data et les liaisons source du modèle sont résolues avec les données fournies avant le rendu. Ajoutez le format souhaité au chemin du point de terminaison.
POST /documents/generate-from-template/{format}
Point de terminaison
POST /api/v1/{tenantId}/documents/generate-from-template/{format}
format | Sortie |
|---|---|
pdf | Document PDF (par défaut) |
docx | Document Word |
svg | Image SVG (première page) |
En-têtes
| En-tête | Valeur | Requis |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Oui |
Content-Type | application/json | Oui |
Paramètres de chemin
| Paramètre | Type | Description |
|---|---|---|
tenantId | string | Votre identifiant de locataire |
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
templateId | string (GUID) | Oui | ID du modèle stocké |
data | object | Oui | Objet de données avec les valeurs à injecter dans le modèle |
{
"templateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"data": {
"client": {
"companyName": "Meridian Logistics",
"contactName": "Sarah Mitchell",
"address": "12 Harbor Road",
"city": "Austin, TX"
},
"document": {
"title": "Professional Services Invoice",
"date": "March 30, 2026"
},
"lineItems": [
{ "service": "Platform setup", "hours": "80", "rate": "$150", "total": "$12,000" },
{ "service": "API integration", "hours": "40", "rate": "$175", "total": "$7,000" }
],
"invoice": {
"grandTotal": "$19,000"
},
"paymentTerms": [
"Wire transfer to ShipForge Ltd account",
"Net 30 days from invoice date"
]
}
}
Réponse
Succès (200 OK)
Retourne les métadonnées du document généré avec une URL de téléchargement.
{
"fileName": "doc-20260330-153045-xyz789.pdf",
"documentId": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"status": "Completed",
"fileSizeBytes": 31744,
"contentType": "application/pdf",
"downloadUrl": "https://api.docpayload.com/v1/{tenantId}/assets/docs/doc-20260330-153045-xyz789.pdf"
}
Les champs fileName et contentType reflètent le format demandé.
Erreur (404 Not Found)
Retourné lorsque l'ID du modèle n'existe pas ou n'appartient pas à votre locataire.
{
"message": "Template 'a1b2c3d4-e5f6-7890-abcd-ef1234567890' not found."
}
Erreur (400 Bad Request)
Retourné lorsque le modèle ne contient pas une définition de document valide.
{
"message": "The template does not contain a valid document definition."
}
Exemple
curl -X POST https://api.docpayload.com/v1/{tenantId}/documents/generate-from-template/pdf \
-H "Authorization: Bearer dp_live_abc123def456" \
-H "Content-Type: application/json" \
-d '{
"templateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"data": {
"client": {
"companyName": "Meridian Logistics"
},
"document": {
"title": "Delivery Receipt"
}
}
}'
Résolution des données
Lorsque ce point de terminaison est appelé, les étapes de résolution suivantes se produisent :
- Le modèle est récupéré de la base de données par
templateId. - Le
contentdu modèle (une chaîne JSON) est analysé en une définition de document. - Toutes les références scalaires
$data.path.to.valuedans le texte du paragraphe sont remplacées par les valeurs de l'objetdata. - Toutes les références
$datadans les valeurs par défaut des champs de formulaire (textfield, checkbox, textarea) sont résolues. - Toutes les liaisons
sourcesur les tableaux et les listes sont résolues :- Les tableaux
sourcesont mappés aux lignes en utilisantmap. - Les tableaux
sourcede listes sont convertis en éléments de liste.
- Les tableaux
- La définition de document résolue est rendue au format demandé (PDF, DOCX ou SVG).
Ce qui est résolu
| Fonctionnalité | Exemple | Description |
|---|---|---|
| Texte scalaire | $data.client.name | Remplacé par la valeur au chemin donné |
| Chemins imbriqués | $data.client.address.city | Traversée séparée par des points d'objets imbriqués |
| À l'intérieur du formatage | [b]$data.total[/b] | Référence résolue, puis formatage appliqué |
| Valeurs par défaut du formulaire | '$data.applicant.email' | Pré-remplit les champs de formulaire éditables |
| Lignes du tableau | "source": "$data.items" | Les éléments du tableau deviennent des lignes de tableau |
| Éléments de liste | "source": "$data.notes" | Les éléments du tableau deviennent des éléments de liste |
| Références non résolues | $data.missing.key | Conservées comme texte littéral |
Téléchargement du document
Utilisez l'downloadUrl de la réponse pour récupérer le document généré :
curl -X GET "https://api.docpayload.com/v1/{tenantId}/assets/docs/doc-20260330-153045-xyz789.pdf" \
-H "Authorization: Bearer dp_live_abc123def456" \
-o invoice.pdf