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
Envoyer
Envoyez le document en POST (ou du texte Markdown, ou un lien GitHub) et ajoutez ?wait=50 pour attendre le résultat.
- 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
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ête | Rôle |
|---|---|
POST /api/v1/jobs?wait=50 | Envoie 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=50 | L'é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/info | Styles disponibles, limites et file d'attente actuelle. |
Champs envoyés (multipart/form-data)
| Champ | Rôle |
|---|---|
file | Un fichier à convertir ; répétez-le pour le document et ses images, fichiers .bib, etc. Un .zip fonctionne aussi. |
paths | Facultatif : les chemins relatifs des fichiers, dans le même ordre (liste JSON), pour garder les dossiers — p. ex. ["report.md", "images/a.png"]. |
markdown | Du texte Markdown à la place d'un fichier. |
url | Un fichier Markdown d'un dépôt GitHub public à la place d'un fichier ; ses images sont récupérées aussi. |
template | Facultatif : un modèle .docx — le résultat reprend sa mise en page, ses polices, styles, en-têtes et pieds de page. |
options | Options de conversion (objet JSON), ci-dessous. |
Options de conversion (options)
| Option | Rô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. |
theme | Nom du style, business par défaut ; les choix sont dans /api/v1/info. |
toc | true : ajoute une table des matières. |
number_sections | true / false : numérote les titres. |
docx_fonts | windows (par défaut) ou mac : noms des polices CJK dans Word. |
main | Avec plusieurs documents envoyés, celui à convertir (chemin relatif). |
filename | Nom de fichier du texte markdown envoyé. |
track_changes | Entrée Word : accept (par défaut) ou reject pour les modifications suivies. |
keep_source_format | Entrée Word et LaTeX : false applique la mise en forme du style choisi. |
pdf_ocr | Entré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
| code | Rôle |
|---|---|
bad_request / no_document | 400 : paramètres incorrects, ou aucun document à convertir. |
file_too_big / total_too_big / too_many_files | 413 : au-delà de la limite de taille ou de nombre de fichiers. |
too_many_active / rate_hour / rate_limited | 429 : 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_full | 503 : serveur occupé ; réessayez dans quelques minutes. |
not_found | 404 : 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.