API Documents : créer, lister et gérer les documents générés

Dernière mise à jour le 23 mars 2026

Référence complète de l’API pour créer, récupérer, mettre à jour et supprimer des documents dans PDFMonkey.

Démarrage rapide

La génération est asynchrone : vous créez un document, puis vous vérifiez son statut jusqu’à ce qu’il soit prêt.

# 1. Créer un document et le mettre en file d’attente pour génération
curl https://api.pdfmonkey.io/api/v1/documents \
  -X POST \
  -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "document": {
      "document_template_id": "YOUR_TEMPLATE_ID",
      "status": "pending",
      "payload": { "name": "Jane Doe" }
    }
  }'
# Retourne un document avec "status": "pending" et "download_url": null

# 2. Vérifier le statut du document jusqu’à ce qu’il atteigne "success"
curl -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  https://api.pdfmonkey.io/api/v1/document_cards/DOCUMENT_ID
# Lorsque le statut est "success", lire la download_url dans la réponse

Passer "status": "pending" met le document en file d’attente pour une génération immédiate. Le fichier n’est pas encore prêt à ce stade — vous devez interroger le document ou configurer un webhook pour savoir quand il est terminé. Lorsque le statut atteint success, le champ download_url contient un lien signé vers le fichier généré.

Lisez la suite pour tous les détails, y compris l’endpoint synchrone qui attend le résultat en une seule requête.

Authentification

Toutes les requêtes nécessitent un token Bearer dans l’en-tête Authorization :

Authorization: Bearer YOUR_SECRET_KEY

Consultez Authentification pour savoir comment trouver votre clé API et gérer vos tokens d’accès.

Créer un document

POST /api/v1/documents

Crée un nouveau document. Passez status à "pending" pour lancer la génération immédiatement, ou omettez-le (valeur par défaut : "draft") pour générer plus tard.

Paramètres

Tous les paramètres sont imbriqués sous une clé document.

NomTypeRequisDescription
document_template_idString (UUID)OuiID du modèle à utiliser pour la génération.
payloadObject ou StringNonLes données dynamiques utilisées pour construire le document. Doit être un objet JSON (pas un tableau). Peut être transmis en tant qu’objet JSON ou chaîne JSON.
metaObject ou StringNonMétadonnées à attacher au document. Supporte des clés spéciales comme _filename. Doit être un objet JSON. 200 Ko maximum.
statusStringNon"draft" (par défaut) ou "pending". Passez à "pending" pour déclencher la génération à la création.
Passez "status": "pending" dans votre requête de création pour générer le document en une seule étape. Sans cela, le document est créé en brouillon et vous devrez le mettre à jour ultérieurement pour déclencher la génération.

Requête

curl https://api.pdfmonkey.io/api/v1/documents \
  -X POST \
  -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "document": {
      "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
      "status": "pending",
      "payload": {
        "clientName": "Peter Parker",
        "orderDate": "2050-03-14",
        "products": [
          { "name": "Spider silk", "quantity": 12, "unitPrice": 123.50 },
          { "name": "Spandex fabric", "quantity": 2, "unitPrice": 28.90 }
        ]
      },
      "meta": {
        "_filename": "2050-03-14 Peter Parker.pdf",
        "clientRef": "spidey-616"
      }
    }
  }'

Réponse

{
  "document": {
    "id": "a5e86d72-f5b7-43d4-a04e-8b7e08e6741c",
    "app_id": "d6b4e8f2-7a3c-4d1e-9f5b-2c8a1d3e6f90",
    "checksum": "c230530f6f0aa32900af0924cf228e5c",
    "created_at": "2050-03-13T12:34:56.181+02:00",
    "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
    "download_url": null,
    "failure_cause": null,
    "filename": null,
    "generation_logs": [],
    "meta": {
      "_filename": "2050-03-14 Peter Parker.pdf",
      "clientRef": "spidey-616"
    },
    "output_type": "pdf",
    "payload": {
      "clientName": "Peter Parker",
      "orderDate": "2050-03-14",
      "products": [
        { "name": "Spider silk", "quantity": 12, "unitPrice": 123.50 },
        { "name": "Spandex fabric", "quantity": 2, "unitPrice": 28.90 }
      ]
    },
    "preview_url": "https://preview.pdfmonkey.io/pdf/web/viewer.html?file=...",
    "public_share_link": null,
    "status": "pending",
    "updated_at": "2050-03-13T12:34:56.181+02:00"
  }
}

Erreurs de validation

Si des champs requis sont manquants ou invalides, l’API retourne une erreur 422 Unprocessable Entity :

{
  "errors": {
    "document_template_id": ["can’t be blank"]
  }
}

Génération synchrone

POST /api/v1/documents/sync

Un raccourci qui crée un document et attend la fin de la génération côté serveur, pour obtenir le résultat en une seule requête. La réponse est un DocumentCard (pas un Document). Pour un guide pas-à-pas, consultez Générer des documents avec l’API.

Cet endpoint accepte les mêmes paramètres que Créer un document. Vous devez passer "status": "pending" pour que la génération démarre.

Quand utiliser sync vs async

AsyncSync
RéponseRetourne immédiatementAttend la fin de la génération
Obtenir le résultatPolling ou webhooksInclus dans la réponse
Objet retournéDocumentDocumentCard
Adapté au volumeOuiNon — une requête ouverte par document
TimeoutAucun6 minutes
Idéal pourPipelines de production, génération par lotsFaible volume ou cas d’usage interactifs
L’endpoint sync attend jusqu’à 6 minutes la fin de la génération. Pour les pipelines de production ou la génération par lots, préférez la génération asynchrone avec les webhooks.

Requête

curl https://api.pdfmonkey.io/api/v1/documents/sync \
  -X POST \
  -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "document": {
      "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
      "status": "pending",
      "payload": {
        "clientName": "Peter Parker",
        "orderDate": "2050-03-14",
        "products": [
          { "name": "Spider silk", "quantity": 12, "unitPrice": 123.50 },
          { "name": "Spandex fabric", "quantity": 2, "unitPrice": 28.90 }
        ]
      },
      "meta": {
        "_filename": "2050-03-14 Peter Parker.pdf",
        "clientRef": "spidey-616"
      }
    }
  }'

Réponse

L’endpoint sync retourne un DocumentCard, pas un Document. Le résultat est imbriqué sous document_card et n’inclut ni payload ni generation_logs.
{
  "document_card": {
    "app_id": "d6b4e8f2-7a3c-4d1e-9f5b-2c8a1d3e6f90",
    "created_at": "2050-03-13T12:34:56.181+02:00",
    "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
    "document_template_identifier": "My Invoice Template",
    "download_url": "https://pdfmonkey.s3.eu-west-1.amazonaws.com/production/backend/document/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c/2050-03-14-peter-parker.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
    "failure_cause": null,
    "filename": "2050-03-14 Peter Parker.pdf",
    "id": "a5e86d72-f5b7-43d4-a04e-8b7e08e6741c",
    "meta": {
      "_filename": "2050-03-14 Peter Parker.pdf",
      "clientRef": "spidey-616"
    },
    "output_type": "pdf",
    "preview_url": "https://preview.pdfmonkey.io/pdf/web/viewer.html?file=...",
    "public_share_link": null,
    "status": "success",
    "updated_at": "2050-03-13T12:34:59.412+02:00"
  }
}

L’objet Document

L’objet Document est la représentation complète d’un document généré, incluant son payload et ses logs de génération.

{
  "id": "a5e86d72-f5b7-43d4-a04e-8b7e08e6741c",
  "app_id": "d6b4e8f2-7a3c-4d1e-9f5b-2c8a1d3e6f90",
  "checksum": "c230530f6f0aa32900af0924cf228e5c",
  "created_at": "2050-03-13T12:34:56.181+02:00",
  "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
  "download_url": "https://pdfmonkey.s3.eu-west-1.amazonaws.com/production/backend/document/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c/2050-03-14-peter-parker.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
  "failure_cause": null,
  "filename": "2050-03-14 Peter Parker.pdf",
  "generation_logs": [
    {
      "type": "info",
      "message": "Starting PDF generation.",
      "timestamp": "Thu, 13 Mar 2050 10:34:57 GMT"
    },
    {
      "type": "info",
      "message": "Generation took 1617ms to load and render.",
      "timestamp": "Thu, 13 Mar 2050 10:34:58 GMT"
    },
    {
      "type": "info",
      "message": "Content size is 96302.",
      "timestamp": "Thu, 13 Mar 2050 10:34:59 GMT"
    }
  ],
  "meta": {
    "_filename": "2050-03-14 Peter Parker.pdf",
    "clientRef": "spidey-616"
  },
  "output_type": "pdf",
  "payload": {
    "clientName": "Peter Parker",
    "orderDate": "2050-03-14",
    "products": [
      { "name": "Spider silk", "quantity": 12, "unitPrice": 123.50 },
      { "name": "Spandex fabric", "quantity": 2, "unitPrice": 28.90 }
    ]
  },
  "preview_url": "https://preview.pdfmonkey.io/pdf/web/viewer.html?file=...",
  "public_share_link": "https://files.pdfmonkey.io/share/72BE2293-D130-4C19-9E11-C82B5CEA8C37/2050-03-14-peter-parker.pdf",
  "status": "success",
  "updated_at": "2050-03-13T12:34:59.412+02:00"
}

Attributs

NomTypeDescription
idString (UUID)Identifiant unique du document.
app_idString (UUID)Identifiant unique du workspace du document.
checksumStringChecksum interne utilisé pour le rendu de l’aperçu.
created_atString (ISO 8601)Date de création du document.
document_template_idString (UUID)ID du modèle utilisé pour générer ce document.
download_urlString (URL) ou nullURL signée temporaire pour télécharger le fichier généré. null tant que la génération n’a pas réussi. Valide pendant 1 heure (voir URLs de téléchargement).
failure_causeString ou nullRaison de l’échec de la génération. null sauf si le statut est failure.
filenameString ou nullNom du fichier généré. null tant que la génération n’a pas réussi. Configurable via la clé meta _filename.
generation_logsArrayLogs collectés pendant la génération. Chaque entrée contient type ("info" ou "error"), message et timestamp. Tableau vide avant le début de la génération.
metaObject ou nullMétadonnées arbitraires attachées au document. Supporte des clés spéciales comme _filename. Également accessible dans les intégrations no-code (Zapier, Make) où payload n’est pas disponible.
output_typeStringFormat de sortie : "pdf" ou "image". Hérité du modèle.
payloadObject ou nullLes données dynamiques utilisées pour générer le document.
preview_urlString (URL)URL pour intégrer un aperçu visuel du document. Destinée à être utilisée dans une <iframe>, pas pour le téléchargement.
public_share_linkString (URL) ou nullLien public permanent vers le fichier généré. Disponible uniquement lorsque la fonctionnalité Liens de partage est activée (offres Pro+).
statusStringStatut actuel du document : draft, pending, generating, success ou failure. Voir Statuts des documents et cycle de vie.
updated_atString (ISO 8601)Date de dernière mise à jour du document.

L’objet DocumentCard

Le DocumentCard est une version allégée du Document. Il contient les mêmes champs sauf payload, generation_logs et checksum. Il ajoute également document_template_identifier.

Utilisez les DocumentCards lorsque vous n’avez pas besoin du payload complet ; ils sont plus rapides et plus légers. Ce sont les objets retournés par les endpoints de liste, l’endpoint sync, les webhooks et les intégrations no-code.

Préférez DocumentCard à Document.

Stockez les données dont vous aurez besoin plus tard dans meta plutôt que (ou en plus de) payload. Ainsi, vous n’aurez jamais besoin de récupérer l’objet Document complet.
{
  "id": "a5e86d72-f5b7-43d4-a04e-8b7e08e6741c",
  "app_id": "d6b4e8f2-7a3c-4d1e-9f5b-2c8a1d3e6f90",
  "created_at": "2050-03-13T12:34:56.181+02:00",
  "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
  "document_template_identifier": "My Invoice Template",
  "download_url": "https://pdfmonkey.s3.eu-west-1.amazonaws.com/production/backend/document/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c/2050-03-14-peter-parker.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
  "failure_cause": null,
  "filename": "2050-03-14 Peter Parker.pdf",
  "meta": {
    "_filename": "2050-03-14 Peter Parker.pdf",
    "clientRef": "spidey-616"
  },
  "output_type": "pdf",
  "preview_url": "https://preview.pdfmonkey.io/pdf/web/viewer.html?file=...",
  "public_share_link": "https://files.pdfmonkey.io/share/72BE2293-D130-4C19-9E11-C82B5CEA8C37/2050-03-14-peter-parker.pdf",
  "status": "success",
  "updated_at": "2050-03-13T12:34:59.412+02:00"
}

Attributs

NomTypeDescription
idString (UUID)Identifiant unique du document.
app_idString (UUID)Identifiant unique du workspace du document.
created_atString (ISO 8601)Date de création du document.
document_template_idString (UUID)ID du modèle utilisé pour générer ce document.
document_template_identifierStringLe nom du modèle tel qu’affiché dans le tableau de bord.
download_urlString (URL) ou nullURL signée temporaire pour télécharger le fichier généré. null tant que la génération n’a pas réussi. Valide pendant 1 heure.
failure_causeString ou nullRaison de l’échec de la génération. null sauf si le statut est failure.
filenameString ou nullNom du fichier généré. null tant que la génération n’a pas réussi.
metaObject ou nullMétadonnées arbitraires attachées au document.
output_typeStringFormat de sortie : "pdf" ou "image". Hérité du modèle.
preview_urlString (URL)URL pour intégrer un aperçu visuel. Pas pour le téléchargement.
public_share_linkString (URL) ou nullLien public permanent. Nécessite l’activation des Liens de partage (offres Pro+).
statusStringStatut actuel : draft, pending, generating, success ou failure.
updated_atString (ISO 8601)Date de dernière mise à jour du document.

Comparaison : Document vs DocumentCard

ChampDocumentDocumentCard
payloadInclusNon inclus
generation_logsInclusNon inclus
checksumInclusNon inclus
document_template_identifierNon inclusInclus

Récupérer un document

GET /api/v1/document_cards/{id}

Retourne un DocumentCard pour le document donné. C’est la méthode recommandée pour vérifier le statut de génération et récupérer l’URL de téléchargement.

curl -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  https://api.pdfmonkey.io/api/v1/document_cards/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c

Réponse : 200 OK avec un objet document_card.

Récupérer un Document complet

GET /api/v1/documents/{id}

Retourne le Document complet, incluant payload et generation_logs. Utilisez cet endpoint uniquement lorsque vous avez besoin de ces champs.

curl -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  https://api.pdfmonkey.io/api/v1/documents/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c

Réponse : 200 OK avec un objet document.

Lister les documents

GET /api/v1/document_cards

Retourne une liste paginée de DocumentCards. Les résultats sont limités à 24 éléments par page.

Paramètres de requête

NomTypeDescription
page[number]IntegerNuméro de page (par défaut : 1).
q[document_template_id]String (UUID) ou ArrayFiltrer par un ou plusieurs IDs de modèle. Accepte un UUID unique ou une liste séparée par des virgules.
q[status]StringFiltrer par statut : draft, pending, generating, success ou failure. Voir Statuts des documents.
q[workspace_id]String (UUID)Filtrer par ID de workspace.
q[updated_since]TimestampRetourner uniquement les documents mis à jour après ce moment. Accepte un timestamp Unix (ex. 1640995200 pour le 2022-01-01 00:00:00 UTC) ou une chaîne ISO 8601.
q[search]StringRechercher par ID de document ou nom de fichier. Si la valeur est un UUID, recherche par ID exact ; sinon effectue une correspondance partielle sur le nom de fichier.
curl -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  'https://api.pdfmonkey.io/api/v1/document_cards?q[document_template_id]=2903f5b4-623b-4e10-b2e3-dc7e2e67ea39&q[status]=success&page[number]=1'

Réponse

{
  "document_cards": [
    {
      "id": "a5e86d72-f5b7-43d4-a04e-8b7e08e6741c",
      "app_id": "d6b4e8f2-7a3c-4d1e-9f5b-2c8a1d3e6f90",
      "created_at": "2050-03-13T12:34:56.181+02:00",
      "document_template_id": "2903f5b4-623b-4e10-b2e3-dc7e2e67ea39",
      "document_template_identifier": "My Invoice Template",
      "download_url": "https://pdfmonkey.s3.eu-west-1.amazonaws.com/...",
      "failure_cause": null,
      "filename": "2050-03-14 Peter Parker.pdf",
      "meta": {
        "_filename": "2050-03-14 Peter Parker.pdf",
        "clientRef": "spidey-616"
      },
      "output_type": "pdf",
      "preview_url": "https://preview.pdfmonkey.io/pdf/web/viewer.html?file=...",
      "public_share_link": null,
      "status": "success",
      "updated_at": "2050-03-13T12:34:59.412+02:00"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1
  }
}

L’objet meta contient les informations de pagination :

ChampTypeDescription
current_pageIntegerLe numéro de la page courante.
next_pageInteger ou nullLe numéro de la page suivante, ou null si c’est la dernière page.
prev_pageInteger ou nullLe numéro de la page précédente, ou null si c’est la première page.
total_pagesIntegerLe nombre total de pages disponibles.

Mettre à jour un document

PUT /api/v1/documents/{id}

Met à jour un document existant. Vous pouvez modifier son payload, ses métadonnées, ou déclencher la génération en passant status à "pending".

Paramètres

Tous les paramètres sont imbriqués sous une clé document.

NomTypeRequisDescription
document_template_idString (UUID)NonChanger le modèle.
payloadObject ou StringNonRemplacer les données dynamiques.
metaObject ou StringNonRemplacer les métadonnées.
statusStringNonPasser à "pending" pour déclencher la génération.
curl https://api.pdfmonkey.io/api/v1/documents/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c \
  -X PUT \
  -H 'Authorization: Bearer YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "document": {
      "status": "pending",
      "payload": { "name": "Mary Jane Watson" }
    }
  }'

Réponse : 200 OK avec l’objet document mis à jour.

Supprimer un document

DELETE /api/v1/documents/{id}

Supprime définitivement un document et son fichier généré.

curl https://api.pdfmonkey.io/api/v1/documents/a5e86d72-f5b7-43d4-a04e-8b7e08e6741c \
  -X DELETE \
  -H 'Authorization: Bearer YOUR_SECRET_KEY'

Réponse : 204 No Content avec un corps vide.

URLs de téléchargement

Les URLs de téléchargement sont des liens S3 signés temporaires, valides pendant 1 heure. Pour obtenir une URL fraîche après expiration, récupérez simplement le document à nouveau ; il n’est pas nécessaire de le regénérer. Pour des liens permanents, activez les Liens de partage (offres Pro+).

Consultez URL de téléchargement pour les détails sur l’expiration, les bonnes pratiques et le dépannage.

Questions fréquentes

Comment générer un document avec l’API PDFMonkey ?
Envoyez une requête POST à /api/v1/documents avec l’ID du modèle et les données dynamiques. Définissez le statut sur "pending" pour lancer la génération immédiatement. Interrogez ensuite le statut du document ou utilisez les webhooks.
Quelle différence entre Document et DocumentCard dans PDFMonkey ?
Un Document est l’objet complet incluant payload, generation_logs et checksum. Un DocumentCard est une version allégée sans ces champs mais avec document_template_identifier en plus.
PDFMonkey prend-il en charge la génération synchrone ?
Oui. Envoyez un POST à /api/v1/documents/sync pour créer un document et attendre le résultat en une seule requête. L’endpoint a un timeout de 6 minutes et renvoie un DocumentCard.
Combien de temps une URL de téléchargement PDFMonkey est-elle valide ?
Les URL de téléchargement sont des liens S3 signés temporaires valides 1 heure. Après expiration, récupérez le document à nouveau pour obtenir une URL fraîche.