API HTTP

Utilisez le convertisseur depuis vos scripts, automatisations ou logiciels : envoyez un fichier, attendez le résultat, téléchargez le PDF et le Word. Sans inscription ni clé.

Comment ça marche

  1. 1

    Envoyer

    Envoyez le document en POST (ou du texte Markdown, ou un lien GitHub) et ajoutez ?wait=50 pour attendre le résultat.

  2. 2

    Attendre

    La plupart des documents sont prêts en quelques secondes. Au-delà de 50 secondes, vous recevez d'abord l'identifiant de la tâche ; continuez d'attendre avec GET.

  3. 3

    Télécharger

    files dans le résultat donne un lien de téléchargement par fichier, valable 2 heures.

Sans clé

Appel direct, avec le même quota gratuit que la page web.

Même qualité que la page

Styles, tableaux, équations, références et modèles Word fonctionnent.

Nombreuses entrées

Markdown (avec dossier d'images ou .zip), Word, LaTeX, PDF, liens GitHub.

Suppression automatique

Les résultats sont supprimés après 2 heures, ou tout de suite avec DELETE.

Démarrage rapide

Convertir report.md en PDF et Word. Une fois terminé, vous recevez 200 et les liens dans files :

curl -F "file=@report.md" -F 'options={"formats":["pdf","docx"]}' \
  "https://mdpdfword.com/api/v1/jobs?wait=50"

Si vous recevez 202 (encore en file ou en cours), continuez d'attendre avec l'identifiant :

curl "https://mdpdfword.com/api/v1/jobs/JOB_ID?wait=50"

Points d'accès

RequêteRôle
POST /api/v1/jobs?wait=50Envoie une conversion et attend jusqu'à wait secondes (50 au plus). 200 si terminé, sinon 202 avec l'identifiant.
GET /api/v1/jobs/{job_id}?wait=50L'état de la tâche ; avec wait, attend la fin ou l'expiration du délai.
DELETE /api/v1/jobs/{job_id}Supprime tout de suite les fichiers de résultat.
GET /api/v1/infoStyles disponibles, limites et file d'attente actuelle.

Champs envoyés (multipart/form-data)

ChampRôle
fileUn fichier à convertir ; répétez-le pour le document et ses images, fichiers .bib, etc. Un .zip fonctionne aussi.
pathsFacultatif : les chemins relatifs des fichiers, dans le même ordre (liste JSON), pour garder les dossiers — p. ex. ["report.md", "images/a.png"].
markdownDu texte Markdown à la place d'un fichier.
urlUn fichier Markdown d'un dépôt GitHub public à la place d'un fichier ; ses images sont récupérées aussi.
templateFacultatif : un modèle .docx — le résultat reprend sa mise en page, ses polices, styles, en-têtes et pieds de page.
optionsOptions de conversion (objet JSON), ci-dessous.

Options de conversion (options)

OptionRôle
formats["pdf", "docx"] (par défaut), ["pdf"] ou ["docx"] ; pour une entrée Word, LaTeX ou PDF, aussi ["markdown"] pour le Markdown modifiable seul.
themeNom du style, business par défaut ; les choix sont dans /api/v1/info.
toctrue : ajoute une table des matières.
number_sectionstrue / false : numérote les titres.
docx_fontswindows (par défaut) ou mac : noms des polices CJK dans Word.
mainAvec plusieurs documents envoyés, celui à convertir (chemin relatif).
filenameNom de fichier du texte markdown envoyé.
track_changesEntrée Word : accept (par défaut) ou reject pour les modifications suivies.
keep_source_formatEntrée Word et LaTeX : false applique la mise en forme du style choisi.
pdf_ocrEntrée PDF : true signifie que vous acceptez l'envoi du PDF à SoMark pour la reconnaissance avancée (voir Confidentialité). Sans cela, rien n'est envoyé.

Le résultat

status vaut queued, running, done ou error (error et code en donnent alors la raison). warnings liste les points à vérifier, comme des images manquantes.

{
  "ok": true,
  "job_id": "Vq3…",
  "status": "done",
  "version": 3,
  "main": "report.md",
  "elapsed": 4.2,
  "files": [
    {
      "format": "pdf",
      "name": "report.pdf",
      "size": 182340,
      "url": "https://mdpdfword.com/files/results/…/report.pdf",
      "file_id": "…"
    },
    {
      "format": "docx",
      "name": "report.docx",
      "size": 48211,
      "url": "https://mdpdfword.com/files/results/…/report.docx",
      "file_id": "…"
    }
  ],
  "warnings": [],
  "pdf_pages": 3,
  "expires_in_minutes": 120
}

Exemple Python

import json
import requests

API = "https://mdpdfword.com/api/v1/jobs"

with open("report.md", "rb") as f:
    job = requests.post(API, params={"wait": 50}, files={"file": f},
                        data={"options": json.dumps({"formats": ["pdf", "docx"]})},
                        timeout=70).json()
while job.get("status") in ("queued", "running"):
    job = requests.get(f"{API}/{job['job_id']}", params={"wait": 50}, timeout=70).json()
if not job.get("ok"):
    raise SystemExit(f"{job.get('code')}: {job.get('error')}")
for out in job["files"]:
    with open(out["name"], "wb") as f:
        f.write(requests.get(out["url"], timeout=120).content)

Codes d'erreur

codeRôle
bad_request / no_document400 : paramètres incorrects, ou aucun document à convertir.
file_too_big / total_too_big / too_many_files413 : au-delà de la limite de taille ou de nombre de fichiers.
too_many_active / rate_hour / rate_limited429 : trop de tâches simultanées ou quota horaire dépassé ; réessayez plus tard (s'il y a un en-tête Retry-After, attendez ce nombre de secondes).
busy / storage_full503 : serveur occupé ; réessayez dans quelques minutes.
not_found404 : la tâche n'existe pas ou a expiré.
pdf_scannedÉchec : PDF numérisé ; indiquez pdf_ocr: true pour le reconnaître.
timeout / conversion_failedÉchec : document trop complexe ou erroné ; error l'explique.

Limites

Les mêmes que sur la page web : par adresse IP, 2 à la fois au plus et 30 par heure ; 20 Mo par fichier, 60 Mo et 300 fichiers au total ; 5 minutes au plus par conversion ; résultats conservés 2 heures.

Le service tourne sur une seule machine. Pour que les visiteurs de la page n'attendent jamais derrière des scripts, les requêtes API partagent une partie des places de conversion, et la file peut être plus longue en période chargée. Envoyez vos documents un par un plutôt qu'en lots parallèles.

Confidentialité

Les fichiers envoyés ne servent qu'à cette conversion, et les résultats sont supprimés après 2 heures. Les PDF sont lus sur le serveur de ce site uniquement ; le PDF n'est envoyé au service tiers SoMark pour la reconnaissance avancée que si la requête indique "pdf_ocr": true — ne l'indiquez pas pour des fichiers sensibles. Voir la politique de confidentialité. Politique de confidentialité

Questions et réponses

Faut-il s'inscrire ou obtenir une clé d'API ?

Non. Appel direct, avec le quota gratuit de la page web.

Puis-je l'appeler depuis une page web (JavaScript dans le navigateur) ?

Non. Pour que d'autres sites ne puissent pas faire passer les fichiers de leurs visiteurs par ici, l'API refuse les appels intersites. Appelez-la depuis un serveur ou un script.

Quelle différence avec MCP ?

MCP sert aux assistants IA comme Claude Code et Codex ; l'API HTTP sert aux scripts et programmes. Qualité et quota identiques.

L'API va-t-elle changer ?

/api/v1 est stable : des champs peuvent s'ajouter, mais les existants gardent leur sens. /api/jobs, utilisé par la page web, n'est pas garanti — n'en dépendez pas.

Syntaxe

Ouvrir en pleine page

Chargement…

Donner votre avis

Dites-nous ce qui ne va pas ou ce qui pourrait être mieux. Nous lisons chaque message.

Un autre moyen ? E-mail · GitHub