REST API v1

Documentation API iPDF

Intégrez la puissance d'iPDF dans vos applications : fusion, compression, conversion et IA sur vos PDFs, en quelques lignes de code.

⚡ 18 endpoints
🔑 Clé API Bearer
📄 multipart/form-data
🔢 1 000 appels/mois

Démarrage rapide

Appelez l'API iPDF en 3 étapes simples.

1

Obtenez un plan Business

Les clés API sont réservées au plan Business. Voir les tarifs →

2

Créez votre clé API

Dans votre tableau de bord, section « Mes clés API », cliquez sur + Créer une nouvelle clé. Copiez-la immédiatement — elle ne sera plus affichée.

3

Faites votre premier appel

curl -X POST https://ipdf.dougster.fr/v1/compress \
  -H "Authorization: Bearer ipdf_votre_cle_ici" \
  -F "file=@mon_document.pdf" \
  --output document_compresse.pdf

Authentification

Toutes les requêtes à /v1/* doivent inclure votre clé API dans l'en-tête HTTP Authorization :

Authorization: Bearer ipdf_xxxxxxxxxxxxxxxxxxxx
🔒
Confidentialité absolue : ne partagez jamais votre clé API dans du code public, des dépôts Git, ou des messages. Toute personne en possession de votre clé peut consommer vos crédits. En cas de compromission, révoquez-la immédiatement depuis votre tableau de bord et créez-en une nouvelle.

Exemple avec variable d'environnement

export IPDF_API_KEY="ipdf_votre_cle_ici"

curl -X POST https://ipdf.dougster.fr/v1/compress \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  --output result.pdf
import os, requests

API_KEY = os.environ["IPDF_API_KEY"]
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
BASE    = "https://ipdf.dougster.fr/v1"

with open("document.pdf", "rb") as f:
    r = requests.post(f"{BASE}/compress",
                      headers=HEADERS, files={"file": f})
r.raise_for_status()
open("result.pdf", "wb").write(r.content)
import fs from "fs";
import fetch from "node-fetch";
import FormData from "form-data";

const API_KEY = process.env.IPDF_API_KEY;
const BASE    = "https://ipdf.dougster.fr/v1";

const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
const res = await fetch(`${BASE}/compress`, {
  method: "POST",
  headers: { Authorization: `Bearer ${API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("result.pdf", Buffer.from(await res.arrayBuffer()));

Quotas & limites

1 000
appels / mois
50 Mo
taille max par fichier
00:00 UTC
réinitialisation mensuelle

Chaque réponse inclut les en-têtes suivants :

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 2026-05-01T00:00:00Z

Codes d'erreur

Toutes les erreurs retournent {"detail": "message"} en JSON.

Code HTTPSignificationExemple de detail
400Requête invalide (fichier manquant, format incorrect)No PDF file uploaded
401Clé API absente, invalide ou révoquéeInvalid or missing API key
402Quota mensuel épuiséMonthly quota exceeded
403Accès refusé (plan insuffisant)API access requires Business plan
429Trop de requêtes simultanéesToo many requests
500Erreur interne du serveurInternal server error

Outils PDF

POST /v1/merge Fusionne plusieurs PDFs en un seul

Paramètres (multipart/form-data)

NomTypeRequisDescription
filesfile[]Requis2 fichiers PDF minimum (champ répété)

Réponse

PDF fusionné (application/pdf).

curl -X POST https://ipdf.dougster.fr/v1/merge \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "files=@doc1.pdf" \
  -F "files=@doc2.pdf" \
  -F "files=@doc3.pdf" \
  --output merged.pdf
import requests, os

r = requests.post(
    "https://ipdf.dougster.fr/v1/merge",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files=[
        ("files", open("doc1.pdf", "rb")),
        ("files", open("doc2.pdf", "rb")),
        ("files", open("doc3.pdf", "rb")),
    ]
)
r.raise_for_status()
open("merged.pdf", "wb").write(r.content)
import fs from "fs"; import fetch from "node-fetch"; import FormData from "form-data";
const fd = new FormData();
["doc1.pdf","doc2.pdf","doc3.pdf"].forEach(f => fd.append("files", fs.createReadStream(f)));
const res = await fetch("https://ipdf.dougster.fr/v1/merge", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("merged.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/split Sépare un PDF en plusieurs fichiers

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF à séparer
rangesstringOptionnelPlages de pages ex: 1-3,4-6,7. Sans ce paramètre, chaque page devient un fichier.

Réponse

Archive ZIP contenant les PDFs séparés.

curl -X POST https://ipdf.dougster.fr/v1/split \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "ranges=1-3,4-6" \
  --output split.zip
r = requests.post(
    "https://ipdf.dougster.fr/v1/split",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"ranges": "1-3,4-6"}
)
r.raise_for_status()
open("split.zip", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("ranges", "1-3,4-6");
const res = await fetch("https://ipdf.dougster.fr/v1/split", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("split.zip", Buffer.from(await res.arrayBuffer()));
POST /v1/compress Réduit la taille d'un PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF à compresser
levelstringOptionnellow | medium | high (défaut: medium)
curl -X POST https://ipdf.dougster.fr/v1/compress \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@lourd.pdf" \
  -F "level=high" \
  --output compresse.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/compress",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("lourd.pdf", "rb")},
    data={"level": "high"}
)
r.raise_for_status()
open("compresse.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("lourd.pdf"));
fd.append("level", "high");
const res = await fetch("https://ipdf.dougster.fr/v1/compress", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("compresse.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/protect Protège un PDF par mot de passe

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF à protéger
passwordstringRequisMot de passe à appliquer
curl -X POST https://ipdf.dougster.fr/v1/protect \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "password=MonMotDePasse123" \
  --output protege.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/protect",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"password": "MonMotDePasse123"}
)
r.raise_for_status()
open("protege.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("password", "MonMotDePasse123");
const res = await fetch("https://ipdf.dougster.fr/v1/protect", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("protege.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/unprotect Supprime la protection par mot de passe d'un PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF protégé
passwordstringRequisMot de passe actuel
curl -X POST https://ipdf.dougster.fr/v1/unprotect \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@protege.pdf" \
  -F "password=MonMotDePasse123" \
  --output deprotege.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/unprotect",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("protege.pdf", "rb")},
    data={"password": "MonMotDePasse123"}
)
r.raise_for_status()
open("deprotege.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("protege.pdf"));
fd.append("password", "MonMotDePasse123");
const res = await fetch("https://ipdf.dougster.fr/v1/unprotect", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("deprotege.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/rotate Pivote les pages d'un PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF
angleintegerRequis90, 180 ou 270
pagesstringOptionnelPages ex: 1,3,5 ou all (défaut: all)
curl -X POST https://ipdf.dougster.fr/v1/rotate \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "angle=90" \
  --output pivote.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/rotate",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"angle": "90", "pages": "all"}
)
r.raise_for_status()
open("pivote.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("angle", "90");
const res = await fetch("https://ipdf.dougster.fr/v1/rotate", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("pivote.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/watermark Ajoute un filigrane texte sur un PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF
textstringRequisTexte du filigrane
opacityfloatOptionnelOpacité 0.11.0 (défaut: 0.3)
colorstringOptionnelCouleur hex ex: #FF0000 (défaut: #808080)
curl -X POST https://ipdf.dougster.fr/v1/watermark \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "text=CONFIDENTIEL" \
  -F "opacity=0.25" \
  --output filigrané.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/watermark",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"text": "CONFIDENTIEL", "opacity": "0.25", "color": "#FF0000"}
)
r.raise_for_status()
open("filigrané.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("text", "CONFIDENTIEL");
fd.append("opacity", "0.25");
const res = await fetch("https://ipdf.dougster.fr/v1/watermark", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("filigrané.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/number-pages Numérote les pages d'un PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF
positionstringOptionnelbottom-center | bottom-right | bottom-left | top-center (défaut: bottom-center)
startintegerOptionnelNuméro de la première page (défaut: 1)
curl -X POST https://ipdf.dougster.fr/v1/number-pages \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "position=bottom-right" \
  --output numerote.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/number-pages",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"position": "bottom-right", "start": "1"}
)
r.raise_for_status()
open("numerote.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("position", "bottom-right");
const res = await fetch("https://ipdf.dougster.fr/v1/number-pages", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("numerote.pdf", Buffer.from(await res.arrayBuffer()));

Conversion

POST /v1/pdf-to-word Convertit un PDF en document Word (.docx)

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF source
curl -X POST https://ipdf.dougster.fr/v1/pdf-to-word \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  --output document.docx
r = requests.post(
    "https://ipdf.dougster.fr/v1/pdf-to-word",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")}
)
r.raise_for_status()
open("document.docx", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
const res = await fetch("https://ipdf.dougster.fr/v1/pdf-to-word", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("document.docx", Buffer.from(await res.arrayBuffer()));
POST /v1/word-to-pdf Convertit un document Word (.docx) en PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier .docx source
curl -X POST https://ipdf.dougster.fr/v1/word-to-pdf \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.docx" \
  --output document.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/word-to-pdf",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.docx", "rb")}
)
r.raise_for_status()
open("document.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.docx"));
const res = await fetch("https://ipdf.dougster.fr/v1/word-to-pdf", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("document.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/pdf-to-jpg Convertit les pages d'un PDF en images JPG

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF source
dpiintegerOptionnelRésolution en DPI (défaut: 150, max: 300)
pagesstringOptionnelPages ex: 1-3 ou all (défaut: all)

Réponse

Archive ZIP contenant une image JPG par page.

curl -X POST https://ipdf.dougster.fr/v1/pdf-to-jpg \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "dpi=200" \
  --output images.zip
r = requests.post(
    "https://ipdf.dougster.fr/v1/pdf-to-jpg",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"dpi": "200"}
)
r.raise_for_status()
open("images.zip", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("dpi", "200");
const res = await fetch("https://ipdf.dougster.fr/v1/pdf-to-jpg", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("images.zip", Buffer.from(await res.arrayBuffer()));
POST /v1/pdf-to-png Convertit les pages d'un PDF en images PNG

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF source
dpiintegerOptionnelRésolution en DPI (défaut: 150, max: 300)
pagesstringOptionnelPages à convertir (défaut: all)
curl -X POST https://ipdf.dougster.fr/v1/pdf-to-png \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document.pdf" \
  -F "dpi=150" \
  --output images.zip
r = requests.post(
    "https://ipdf.dougster.fr/v1/pdf-to-png",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document.pdf", "rb")},
    data={"dpi": "150"}
)
r.raise_for_status()
open("images.zip", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("document.pdf"));
fd.append("dpi", "150");
const res = await fetch("https://ipdf.dougster.fr/v1/pdf-to-png", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("images.zip", Buffer.from(await res.arrayBuffer()));
POST /v1/jpg-to-pdf Convertit des images JPG en PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filesfile[]RequisUne ou plusieurs images JPG/JPEG (champ répété)
curl -X POST https://ipdf.dougster.fr/v1/jpg-to-pdf \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "files=@photo1.jpg" \
  -F "files=@photo2.jpg" \
  --output images.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/jpg-to-pdf",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files=[
        ("files", open("photo1.jpg", "rb")),
        ("files", open("photo2.jpg", "rb")),
    ]
)
r.raise_for_status()
open("images.pdf", "wb").write(r.content)
const fd = new FormData();
["photo1.jpg","photo2.jpg"].forEach(f => fd.append("files", fs.createReadStream(f)));
const res = await fetch("https://ipdf.dougster.fr/v1/jpg-to-pdf", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("images.pdf", Buffer.from(await res.arrayBuffer()));
POST /v1/excel-to-pdf Convertit un fichier Excel (.xlsx) en PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier .xlsx ou .xls
curl -X POST https://ipdf.dougster.fr/v1/excel-to-pdf \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@tableau.xlsx" \
  --output tableau.pdf
r = requests.post(
    "https://ipdf.dougster.fr/v1/excel-to-pdf",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("tableau.xlsx", "rb")}
)
r.raise_for_status()
open("tableau.pdf", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("tableau.xlsx"));
const res = await fetch("https://ipdf.dougster.fr/v1/excel-to-pdf", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("tableau.pdf", Buffer.from(await res.arrayBuffer()));

Intelligence Artificielle

Les endpoints IA retournent un objet JSON avec les résultats analysés.

POST /v1/ai/summarize Résume le contenu d'un PDF avec l'IA

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF à résumer
languagestringOptionnelLangue du résumé ex: fr, en (défaut: auto-détecté)
lengthstringOptionnelshort | medium | long (défaut: medium)

Réponse JSON

200 OK
{
  "summary": "Ce document présente...",
  "key_points": ["Point 1", "Point 2", "Point 3"],
  "word_count": 3420,
  "pages_analyzed": 12
}
curl -X POST https://ipdf.dougster.fr/v1/ai/summarize \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@rapport.pdf" \
  -F "language=fr" \
  -F "length=medium"
r = requests.post(
    "https://ipdf.dougster.fr/v1/ai/summarize",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("rapport.pdf", "rb")},
    data={"language": "fr", "length": "medium"}
)
r.raise_for_status()
data = r.json()
print(data["summary"])
print("Points clés :", data["key_points"])
const fd = new FormData();
fd.append("file", fs.createReadStream("rapport.pdf"));
fd.append("language", "fr");
fd.append("length", "medium");
const res = await fetch("https://ipdf.dougster.fr/v1/ai/summarize", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
const data = await res.json();
console.log(data.summary);
POST /v1/ai/translate Traduit un PDF dans une autre langue

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF à traduire
target_languagestringRequisLangue cible ex: en, fr, es, de, it

Réponse JSON

200 OK
{
  "translated_text": "This document presents...",
  "source_language": "fr",
  "target_language": "en",
  "pages_translated": 8
}
curl -X POST https://ipdf.dougster.fr/v1/ai/translate \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@document_fr.pdf" \
  -F "target_language=en"
r = requests.post(
    "https://ipdf.dougster.fr/v1/ai/translate",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("document_fr.pdf", "rb")},
    data={"target_language": "en"}
)
r.raise_for_status()
data = r.json()
print(data["translated_text"][:500])
const fd = new FormData();
fd.append("file", fs.createReadStream("document_fr.pdf"));
fd.append("target_language", "en");
const res = await fetch("https://ipdf.dougster.fr/v1/ai/translate", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
const data = await res.json();
console.log(data.translated_text);
POST /v1/ai/extract Extrait des données structurées d'un PDF

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF source
fieldsstringOptionnelChamps à extraire séparés par virgule ex: date,montant,nom
formatstringOptionneljson | csv (défaut: json)

Réponse JSON

200 OK
{
  "data": {
    "date": "2026-03-15",
    "montant": "1 250,00 €",
    "nom": "Jean Dupont"
  },
  "confidence": 0.94,
  "pages_analyzed": 2
}
curl -X POST https://ipdf.dougster.fr/v1/ai/extract \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@facture.pdf" \
  -F "fields=date,montant,nom,siret"
r = requests.post(
    "https://ipdf.dougster.fr/v1/ai/extract",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("facture.pdf", "rb")},
    data={"fields": "date,montant,nom,siret"}
)
r.raise_for_status()
data = r.json()
print(f"Montant : {data['data']['montant']}")
print(f"Confiance : {data['confidence']:.0%}")
const fd = new FormData();
fd.append("file", fs.createReadStream("facture.pdf"));
fd.append("fields", "date,montant,nom,siret");
const res = await fetch("https://ipdf.dougster.fr/v1/ai/extract", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
const { data, confidence } = await res.json();
console.log("Montant :", data.montant);
console.log("Confiance :", Math.round(confidence * 100) + "%");
POST /v1/ai/split-rename Sépare et renomme automatiquement un PDF avec l'IA

Paramètres (multipart/form-data)

NomTypeRequisDescription
filefileRequisFichier PDF multi-documents à séparer

Réponse

Archive ZIP contenant les PDFs séparés, nommés automatiquement par l'IA selon le contenu détecté.

curl -X POST https://ipdf.dougster.fr/v1/ai/split-rename \
  -H "Authorization: Bearer $IPDF_API_KEY" \
  -F "file=@documents_groupes.pdf" \
  --output documents_separes.zip
r = requests.post(
    "https://ipdf.dougster.fr/v1/ai/split-rename",
    headers={"Authorization": f"Bearer {os.environ['IPDF_API_KEY']}"},
    files={"file": open("documents_groupes.pdf", "rb")}
)
r.raise_for_status()
open("documents_separes.zip", "wb").write(r.content)
const fd = new FormData();
fd.append("file", fs.createReadStream("documents_groupes.pdf"));
const res = await fetch("https://ipdf.dougster.fr/v1/ai/split-rename", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IPDF_API_KEY}`, ...fd.getHeaders() },
  body: fd,
});
fs.writeFileSync("documents_separes.zip", Buffer.from(await res.arrayBuffer()));

Prêt à intégrer iPDF ?

Obtenez votre clé API Business et commencez à automatiser vos traitements PDF dès aujourd'hui.

Voir les tarifs Mon tableau de bord